المقدمة
إعداد جدار ناري يعمل بشكل صحيح أمر بالغ الأهمية لتأمين خادم السحابة الخاص بك. في السابق، كان إعداد جدار ناري يتم من خلال أدوات معقدة أو غامضة. العديد من هذه الأدوات (على سبيل المثال، iptables
) تحتوي على العديد من الوظائف المدمجة فيها، ولكن تتطلب جهدًا إضافيًا من المستخدم لتعلمها وفهمها.
خيار آخر هو UFW، أو جدار النار البسيط. UFW هو واجهة أمامية لـ iptables
تهدف إلى توفير واجهة أكثر ودية للمستخدم من غيرها من أدوات إدارة جدران النار. يتم دعم UFW بشكل جيد في مجتمع Linux، وعادة ما يتم تثبيته افتراضيًا على العديد من التوزيعات.
في هذا البرنامج التعليمي، ستقوم بإعداد جدار ناري باستخدام UFW لتأمين خادم السحابة Ubuntu أو Debian. ستتعلم أيضًا كيفية إعداد قواعد UFW الافتراضية للسماح أو منع الاتصالات للمنافذ وعناوين IP، حذف القواعد التي أنشأتها، تعطيل وتمكين UFW، وإعادة تعيين كل شيء إلى الإعدادات الافتراضية إذا كنت تفضل ذلك.
المتطلبات المسبقة
لمتابعة هذا البرنامج التعليمي، ستحتاج إلى خادم يعمل بنظام التشغيل Ubuntu أو Debian. يجب أن يكون لديك مستخدم غير root على الخادم يمتلك امتيازات sudo. لإعداد هذا على Ubuntu، اتبع دليلنا على إعداد الخادم الأولي مع Ubuntu 20.04. ولإعداد هذا على Debian، اتبع دليلنا على إعداد الخادم الأولي مع Debian 11. سيضمن كل من هذين الدليلين على إعداد الخادم الأولي أن يكون لديك برنامج UFW مثبتًا على جهازك وأن لديك بيئة آمنة يمكنك استخدامها لممارسة إنشاء قواعد جدار الحماية.
استخدام IPv6 مع UFW
إذا كانت خادم الخاص بك الافتراضي الخاص (VPS) مُكونًا لـ IPv6، فتأكد من تكوين UFW لدعم IPv6 بحيث يكوّن كلاً من قواعد جدار الحماية IPv4 و IPv6. للقيام بذلك، افتح ملف تكوين UFW في محرر النص المفضل لديك. سنستخدم هنا nano
:
تأكد من أن IPV6
مُعيّن إلى نعم
:
/etc/default/ufw# /etc/default/ufw
#
# تعيينه إلى نعم لتطبيق القواعد لدعم IPv6 (لا يعني ذلك فقط IPv6 على الحلقة الافتراضية
# مقبولة). ستحتاج إلى 'تعطيل' ثم 'تمكين' جدار الحماية ل
# التغييرات لتأثير.
IPV6=yes
…
بعد أن قمت بعمل التغييرات، احفظ واخرج من الملف. إذا كنت تستخدم nano
، اضغط CTRL + X
، Y
، ثم ENTER
.
الآن أعد تشغيل جدار الحماية الخاص بك بتعطيله أولاً:
OutputFirewall stopped and disabled on system startup
ثم قم بتمكينه مرة أخرى:
OutputFirewall is active and enabled on system startup
تم تهيئة جدار الحماية الخاص بك الآن لتكوين الجدار الناري لكل من IPv4 و IPv6 عند الضرورة. بعد ذلك، ستقوم بضبط القواعد الافتراضية للاتصالات بجدار الحماية الخاص بك.
إعداد القيم الافتراضية لـ UFW
يمكنك تحسين كفاءة جدار الحماية الخاص بك عن طريق تحديد قواعد افتراضية للسماح والرفض للاتصالات. القيمة الافتراضية لـ UFW هي رفض جميع الاتصالات الواردة والسماح بجميع الاتصالات الصادرة. يعني هذا أن أي شخص يحاول الوصول إلى خادمك لن يكون قادرًا على الاتصال، في حين يمكن لأي تطبيق داخل الخادم الاتصال بالخارج. لتحديث القواعد الافتراضية التي تم تعيينها بواسطة UFW، أولاً قم بمعالجة قاعدة الاتصالات الواردة:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
بعد ذلك، قم بمعالجة قاعدة الاتصالات الصادرة:
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
ملاحظة: إذا كنت ترغب في أن تكون أكثر قيودًا، يمكنك رفض جميع الطلبات الصادرة. تعتمد هذه الخيارات على التفضيلات الشخصية. على سبيل المثال، إذا كان لديك خادم سحابة يتعامل مع الجمهور، فقد يساعد في منع أي نوع من اتصالات القواقع عن بُعد. على الرغم من ذلك، يجعل جدار الحماية الخاص بك أكثر سخونة في الإدارة لأنه يجب عليك تعيين قواعد لجميع الاتصالات الصادرة أيضًا. يمكنك تعيين هذا كافتراضي باستخدام ما يلي:
السماح بالاتصالات إلى جدار الحماية
يتطلب السماح بالاتصالات تغيير قواعد جدار الحماية، ويمكنك القيام بذلك عن طريق إصدار الأوامر في الطرفية. على سبيل المثال، إذا قمت بتشغيل جدار الحماية الآن، فسيُنكر جميع الاتصالات الواردة. إذا كنت متصلاً عبر SSH بخادمك، فسيكون هذا مشكلة لأنك ستتم قفل الخادم. امنع حدوث هذا من خلال تمكين اتصالات SSH بخادمك:
إذا نجحت التغييرات الخاصة بك، ستتلقى الناتج التالي:
OutputRule added
Rule added (v6)
يأتي UFW مع بعض الإعدادات الافتراضية مثل الأمر ssh
المستخدم في المثال السابق. بالإضافة إلى ذلك، يمكنك السماح بالاتصالات الواردة إلى منفذ 22/tcp
، الذي يستخدم بروتوكول التحكم بالنقل (TCP) لتحقيق نفس الغرض:
ومع ذلك، إذا حاولت ذلك بعد تشغيل أمر allow ssh
بالفعل، فستتلقى الرسالة التالية نظرًا لأن القاعدة موجودة بالفعل:
OutputSkipping adding existing rule
Skipping adding existing rule (v6)
إذا كان خادم SSH الخاص بك يعمل على منفذ 2222
، يمكنك السماح بالاتصالات بنفس الصيغة، ولكن استبدله بمنفذ 2222
. يرجى ملاحظة أنه إذا استخدمت رقم المنفذ بمفرده، فإنه يؤثر على tcp
و udp
أيضًا:
OutputRule added
Rule added (v6)
تأمين خوادم الويب
لتأمين خادم الويب مع الوصول عبر بروتوكول نقل الملفات (FTP)، ستحتاج إلى السماح بالاتصالات لمنفذ 80/tcp
.
السماح بالاتصالات لمنفذ 80
مفيد لخوادم الويب مثل Apache و Nginx التي تستمع إلى طلبات الاتصال HTTP. للقيام بذلك، قم بالسماح بالاتصالات لمنفذ 80/tcp
:
عادةً ما يوفر UFW الملفات الشخصية مع القواعد المطلوبة لوظيفة خادم الويب. إذا لم يكن كذلك، فقد يتم تخزين ملفات الشخصية لخادم الويب باسم “WWW” ومفتوحة باسم ftp
أو tcp
، كما في الأمثلة التالية:
يمكنك أيضًا استخدام ftp
أو منفذ 21
للسماح باتصالات FTP:
بالنسبة لاتصالات FTP، ستحتاج أيضًا إلى السماح بالاتصالات لمنفذ 20
:
سيعتمد تعديلاتك على الأبواب والخدمات التي تحتاج إلى فتحها، وقد تكون هناك حاجة إلى اختبارات. تذكر أن تترك اتصال SSH الخاص بك مسموحًا أيضًا.
تحديد نطاقات المنافذ
يمكنك أيضًا تحديد نطاقات من المنافذ للسماح أو الرفض باستخدام UFW. للقيام بذلك ، يجب عليك أولاً تحديد المنفذ في الطرف الأدنى من النطاق ، ثم اتبع ذلك بفاصلة (:
) ، وبعد ذلك اتبع ذلك بالطرف العالي من النطاق. وأخيرًا ، يجب عليك تحديد البروتوكول الذي ترغب في تطبيق القواعد عليه (tcp
أو udp
).
على سبيل المثال ، ستسمح الأمر التالي بالوصول عبر TCP إلى كل منفذ من 1000
إلى 2000
بما في ذلك:
بالمثل ، سينكر الأمر التالي اتصالات UDP بكل منفذ من 1234
إلى 4321
:
تحديد عناوين IP
يمكنك السماح بالاتصالات من عنوان IP معين مثلما في المثال التالي. تأكد من استبدال عنوان IP بمعلوماتك الخاصة:
كما توضح هذه الأمثلة ، لديك الكثير من المرونة عندما يتعلق الأمر بضبط قواعد جدار الحماية من خلال السماح الانتقائي ببعض منافذ الاتصال وعناوين IP. تحقق من دليلنا لمعرفة المزيد حول السماح باتصالات الواردة من عنوان IP محدد أو الشبكة الفرعية.
رفض الاتصالات
إذا كنت ترغب في فتح جميع منافذ الخادم الخاص بك – الأمر الذي لا يُوصى به – يمكنك السماح بجميع الاتصالات ثم منع أي منافذ لا ترغب في منحها إمكانية الوصول إليها. يُظهر المثال التالي كيفية منع الوصول إلى منفذ 80
:
حذف القواعد
إذا كنت ترغب في حذف بعض القواعد التي قمت بتنفيذها، استخدم delete
وحدد القاعدة التي تريد القضاء عليها:
OutputRule deleted
Rule deleted (v6)
إذا كانت القواعد طويلة ومعقدة، هناك طريقة بديلة ذات خطوتين. أولاً، قم بإنشاء قائمة مُرقمة بالقواعد الحالية:
ثم، باستخدام هذه القائمة المُرقمة، قم بمراجعة القواعد المسموح بها حاليًا واحذف القاعدة عن طريق الإشارة إلى رقمها:
OutputStatus: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 2222/tcp ALLOW IN Anywhere
[ 4] 80 ALLOW IN Anywhere
[ 5] 20/tcp ALLOW IN Anywhere
…
على سبيل المثال، إذا كان منفذ 80
هو الرقم 4 في القائمة، فسوف تستخدم الصيغة التالية. قد يُطلب منك أيضًا سؤال ما إذا كنت ترغب في المتابعة مع العملية. يمكنك القرار بنعم y
أو لا n
:
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
تمكين UFW
بمجرد تعريف جميع القواعد التي ترغب في تطبيقها على جدار الحماية الخاص بك، يمكنك تمكين UFW لبدء تنفيذها. إذا كنت تقوم بالاتصال عبر SSH، تأكد من تعيين منفذ SSH الخاص بك، وهو عادةً المنفذ 22
، للسماح بتلقي الاتصالات. وإلا، قد تقوم بتأمين نفسك خارج الخادم:
OutputFirewall is active and enabled on system startup
للتأكد من أن التغييرات قد تمت بنجاح، يرجى التحقق من الحالة لمراجعة قائمة القواعد:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
22/tcp ALLOW Anywhere
2222/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
80/tcp DENY Anywhere
…
يمكنك أيضًا استخدام verbose
للحصول على إخراج شامل أكثر:
لتعطيل UFW، قم بتشغيل الأمر التالي:
OutputFirewall stopped and disabled on system startup
إعادة ضبط الإعدادات الافتراضية
إذا كنت بحاجة لأسباب ما إلى إعادة تعيين قواعد خادم السحابة الخاص بك إلى إعداداتها الافتراضية، يمكنك فعل ذلك باستخدام الأمر ufw reset
. يرجى ملاحظة أنه ستتلقى رسالة تطلب منك كتابة y
أو n
قبل إعادة الكل إلى الإعدادات الافتراضية، حيث أن ذلك قد يؤدي إلى تعطيل الاتصالات الموجودة عبر SSH:
OutputResetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530'
Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530'
Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'
إعادة الضبط إلى الإعدادات الافتراضية سيعطل UFW وسيحذف أي قواعد قمت بتعريفها سابقًا. ومع ذلك، فإن الإعدادات الافتراضية لن تعود إلى إعداداتها الأصلية إذا قمت بتعديلها على الإطلاق. الآن يمكنك البدء من جديد مع UFW وتخصيص قواعدك والاتصالات وفقًا لتفضيلاتك.
الختام
في هذا البرنامج التعليمي، تعلمت كيفية إعداد وتكوين خادم السحابة الخاص بك للسماح بالوصول أو تقييد الوصول إلى مجموعة من المنافذ أو عناوين IP. بالإضافة إلى ذلك، قمت بممارسة حذف أي قواعد لم تعد ترغب فيها وتأكيد أن تلك التغييرات تم احتسابها من خلال تعطيل جدار الحماية UFW الخاص بك ثم تمكينه. وأخيرًا، لقد تعلمت كيفية إعادة ضبط جدار الحماية UFW الخاص بك إلى الإعدادات الافتراضية. لقراءة المزيد عن ما يمكن تحقيقه باستخدام UFW، تفضل بزيارة دليلنا عن أساسيات UFW: قواعد الجدار الناري الشائعة والأوامر.