يعد جدار الحماية أحد المكونات الأساسية لتأمين النظام. وهو مسؤول عن إدارة الاتصالات الواردة والصادرة عبر الشبكة. إنه خط الدفاع الأساسي لخوادمك وبياناتك. ولهذا السبب من الأهمية بمكان أن يكون لديك جدار حماية مهيأ بشكل جيد. في هذا الدليل، سنرشدك خلال خطوات إعداد جدار حماية باستخدام UFW على Ubuntu 18.04.
UFW على Ubuntu
يشير المصطلح UFW إلى “Uncomplicated Firewall” (جدار الحماية غير المعقد). وهو برنامج جدار حماية افتراضي يأتي مثبتًا مسبقًا مع Ubuntu. في الواقع، يعد UFW واجهة لـ iptables. الهدف من UFW هو تسهيل تكوين جدار الحماية وإدارته. في حين أن iptables، بحد ذاته، يعد خيارًا قويًا ومرنًا، إلا أنه ليس سهلاً للمبتدئين. يسهل UFW الأمر على كل من المبتدئين والمستخدمين ذوي الخبرة.
أولاً، ألقِ نظرة على دليلنا الشامل الذي سيساعدك على التعرف على وظائف UFW الأساسية. يمكنك أيضًا اتباع هذا الدليل لتثبيت خادم Ubuntu الخاص بك. الآن، دعنا نبدأ!
بادئ ذي بدء، إذا لم يكن UFW مثبتًا لديك لسبب ما، فقم بتثبيته على الفور:
|
1 |
$ sudo apt install ufw |
تكوين UFW
-
استخدام IPv6
حتى الآن، لا يزال IPv4 هو القوة المهيمنة. ومع وضع ذلك في الاعتبار، فإن معظم هذا الدليل يتميز أيضًا بـ IPv4. لحسن الحظ، يأتي UFW أيضًا مع دعم لـ IPv6. كل ما عليك فعله هو تمكين الميزة من ملف تكوين UFW.
أولاً، افتح ملف تكوين UFW في محرر نصوص. لحفظ التغييرات، يجب تشغيل محرر النصوص بامتياز sudo:
|
1 |
$ sudo vim /etc/default/ufw |
ابحث عن “IPV6” وتأكد من تعيينه على “yes”.
-
السياسة الافتراضية
إذا كانت هذه هي المرة الأولى التي تتعامل فيها مع جدار حماية، فمن المستحسن تحديد السياسات الافتراضية أولاً. تحدد هذه القواعد كيفية التحكم في حركة المرور التي لا تطابق أي قاعدة صريحة. بشكل افتراضي، تم تكوين UFW لرفض جميع الاتصالات الواردة ولكن السماح بجميع الاتصالات الصادرة. وهو يحدد أنه لا يمكن لأحد الوصول إلى الخادم بينما يمكن لتطبيق يعمل على الخادم الوصول إلى الخارج.
ستقوم الأوامر التالية فقط بإعادة تحديد السلوك الافتراضي لـ UFW. لاحظ أنه سيغير سلوك UFW إذا تم تعديله من قبل:
|
1 2 |
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing |
بالنسبة للكمبيوتر الشخصي، ستكون قواعد جدار الحماية هذه وحدها كافية. ومع ذلك، تتطلب الخوادم المزيد لتعزيز أمنها بشكل صحيح.
السماح باتصالات SSH
بالطريقة التي تم بها تكوين UFW الآن، سيرفض جميع الاتصالات الواردة. بالنسبة لخادم بعيد، هذا أمر غير مقبول. بدون الوصول إلى الخادم، لا يمكن القيام بأي شيء. لتجنب هذه المشكلة، يمكن تكوين UFW للسماح بالاتصالات الواردة لـ SSH أو HTTP .
للسماح باتصالات SSH بالخادم، قم بتشغيل الأمر التالي. سيخبر UFW بشكل أساسي بالسماح بجميع الاتصالات على المنفذ 22. وهو المنفذ الذي يستمع إليه برنامج SSH الخفي افتراضيًا:
|
1 |
$ sudo ufw allow ssh |
بدلاً من هذا الأمر، من الممكن تكوين السماح بالاتصالات بالمنفذ مباشرةً 22. تم تحديد هذا المنفذ تحت ملف /etc/services :
|
1 |
$ sudo ufw allow 22 |
نظرًا لأن المنفذ 22 هو المنفذ الافتراضي لبرنامج SSH الخفي، فقد يكون أيضًا عرضة للهجوم. ماذا لو تم تكوين خادم SSH للاستماع على منفذ مختلف؟ في مثل هذه الحالة، يجب أن يسمح UFW بالاتصال بهذا المنفذ. بافتراض أن خادم SSH يستمع إلى المنفذ 1234، فاستخدم الأمر التالي:
|
1 |
$ sudo ufw allow 1234 |
تمكين UFW
بينما يتم إنشاء قواعد UFW، فإنها لن تفعل أي شيء ما لم يتم تنشيط UFW. بشكل افتراضي، يتم تعطيل UFW، مما يعني أنه على الرغم من الإعلان عن القواعد، فإنه لن يفرضها. لتمكين UFW، قم بتشغيل الأمر التالي:
|
1 |
$ sudo ufw enable |
قد يعرض UFW رسالة تحذير حول تعطيل اتصالات SSH الحالية. نظرًا لأنه تم تكوين اتصالات SSH للسماح بها، فلن يتسبب تمكين UFW في أي تعطيل. لمعرفة القواعد التي تم تعيينها، قم بتشغيل الأمر التالي:
|
1 |
$ sudo ufw status verbose |
السماح باتصالات مختلفة
في هذه المرحلة، يجب تزويد UFW بقواعد أخرى للحصول على تجربة مستقرة. تعتمد الاتصالات التي سيتم السماح بها على احتياجاتك الخاصة. لقد تم بالفعل توضيح كيفية إخبار UFW بالسماح بالاتصالات بناءً على اسم الخدمة أو رقم المنفذ.
فيما يلي بعض المنافذ الأخرى الشائع جدًا فتحها:
- SSH (
المنفذ 22): هذا هو المنفذ الافتراضي الذي تم تكوينه لاتصالات SSH. - HTTP (
المنفذ 80): هذا هو المنفذ الافتراضي الذي تستخدمه خوادم الويب غير المشفرة. - HTTPS (
المنفذ 443): هذا هو المنفذ الافتراضي الذي تستخدمه خوادم الويب المشفرة.
لتمكين اتصالات SSH، قم بتشغيل أي من الأمرين التاليين:
|
1 2 |
$ sudo ufw allow ssh $ sudo ufw allow 22 |
بعد ذلك، لتمكين اتصالات HTTP، قم بتشغيل أي من الأمرين التاليين:
|
1 2 |
$ sudo ufw allow http $ sudo ufw allow 80 |
لتمكين اتصالات HTTPS، قم بتشغيل أي من الأمرين التاليين:
|
1 2 |
$ sudo ufw allow https $ sudo ufw allow 443 |
نطاق المنافذ
حتى الآن، قمنا بتوضيح كيفية السماح بمنفذ معين. ماذا لو كانت هناك حاجة لنطاق من المنافذ؟ إن الإعلان عن كل منفذ لـ UFW أمر غير فعال إلى حد ما. تستخدم بعض التطبيقات منافذ متعددة. لحسن الحظ، يسمح UFW بالإعلان عن نطاق من المنافذ. للقيام بذلك، استخدم بنية الأمر التالية:
|
1 |
$ sudo ufw allow <start>:<end>/<protocol> |
المثال التالي يمكّن اتصالات X11 التي تستخدم المنافذ 6000 إلى 6007:
|
1 2 |
$ sudo ufw allow 6000:6007/tcp $ sudo ufw allow 6000:6007/udp |
يوصى بالإعلان عن البروتوكولات كلما أمكن ذلك. ومع ذلك، في معظم الحالات، ليس ذلك ضروريًا وستعمل الأمور بشكل جيد تمامًا.
عناوين IP محددة
عند استخدام UFW، من الممكن أيضًا تصفية الاتصالات بواسطة عناوين IP محددة. بشكل افتراضي، سيقوم UFW بحظر الاتصالات من أي عنوان IP. من الممكن الإعلان عن السماح بالاتصال من عناوين IP معينة. للسماح بالاتصال من عنوان IP، استخدم بنية الأمر التالية:
|
1 |
$ sudo ufw allow from <ip_address> |
يمكنك أيضًا الإعلان عن المنافذ المحددة التي يُسمح لعنوان IP بالاتصال بها. للقيام بذلك، أضف to any port متبوعًا برقم المنفذ إلى الأمر:
|
1 |
$ sudo ufw allow from <ip_address> to any port <port> |
الشبكات الفرعية
إذا كان لديك ضرورة للسماح بشبكة فرعية من عناوين IP، فمن الممكن القيام بذلك باستخدام تدوين CIDR. في هذا المثال، سيسمح UFW بالاتصال من عناوين IP التي تتراوح من 203.0.113.1 إلى 203.0.113.254:
|
1 |
$ sudo ufw allow from 203.0.113.0/24 |
على غرار الخطوة السابقة، من الممكن أيضًا تحديد المنفذ الذي يمكن لعناوين IP هذه الاتصال به:
|
1 |
$ sudo ufw allow from 203.0.113.0/24 to any port <port> |
الاتصال بواجهة شبكة محددة
في بيئة الخادم، قد تكون هناك واجهات شبكة متعددة متصلة بالنظام. باستخدام UFW، من الممكن تحديد أن قاعدة معينة تنطبق فقط على واجهة شبكة محددة. أولاً، تحقق من جميع واجهات الشبكة المتصلة بالخادم. اسم واجهة الشبكة المستهدفة هو التركيز الأساسي:
|
1 |
$ ip addr |
في حالتنا، لا توجد سوى واجهة شبكة واحدة ens3 التي تتصل بالإنترنت العام. للسماح بالاتصالات الواردة من واجهة الشبكة هذه، استخدم بنية الأمر التالية:
|
1 |
$ sudo ufw allow in on <network_interface> |
من الممكن أيضًا تحديد المنفذ الذي يمكن أن تصل إليه حركة المرور القادمة من واجهة الشبكة:
|
1 |
$ sudo ufw allow in on <network_interface> to any port <port> |
رفض الاتصال
وفقًا للتكوين الافتراضي، سيرفض UFW الاتصال من أي مصدر (باستثناء الاستثناءات المعلنة). هذه هي الطريقة الموصى بها لاستخدام UFW. ومع ذلك، قد يكون من الضروري حظر اتصالات معينة من عنوان IP أو شبكة فرعية معينة. ربما تم تعيين السلوك الافتراضي لـ UFW للسماح بجميع الاتصالات (غير موصى به).
لرفض اتصال من عناوين IP معينة، يتطلب UFW قواعد رفض. كتابة قواعد الرفض بسيطة للغاية. خذ أي قاعدة سماح، واستبدل مصطلح ”allow“ بـ ”deny“ وها هو ذا! تصبح قاعدة رفض.
ألقِ نظرة على المثال التالي. لرفض أي اتصال HTTP، استخدم قاعدة الرفض التالية:
|
1 2 |
$ sudo ufw deny http $ sudo ufw deny 80 |
لرفض الاتصال من 203.0.113.1، استخدم قاعدة الرفض التالية:
|
1 |
$ sudo ufw deny from 203.0.113.1 |
حذف القواعد
كل ما تعلمناه حتى الآن هو كيفية إنشاء القواعد. تمامًا كما يتم إنشاء القواعد، يمكن أيضًا حذفها. في حالة UFW، هناك طريقتان محددتان لحذف قاعدة.
-
حذف قاعدة حسب رقم القاعدة
هذه هي أبسط طريقة لحذف قاعدة UFW. كل قاعدة في UFW لها رقم قاعدة. الأمر التالي سيطبع جميع قواعد UFW مع رقم القاعدة:
|
1 |
$ sudo ufw status numbered |
الأمر التالي سيحذف القاعدة المحددة بواسطة رقم القاعدة:
|
1 |
$ sudo ufw delete <rule_number> |
-
حذف القاعدة بواسطة القاعدة الفعلية
هذه هي الطريقة الأكثر صعوبة لحذف قاعدة. تتطلب تحديد القاعدة الفعلية يدويًا لحذفها. في المثال التالي، سيقوم UFW بحذف القاعدة المحددة بواسطة allow http:
|
1 |
$ sudo ufw delete allow http |
كان يمكن أيضًا تحديد القاعدة بواسطة allow 80. في هذه الحالة، سيقوم الأمر التالي بحذفها:
|
1 |
$ sudo ufw delete allow 80 |
حذف قاعدة سيؤدي إلى حذفها لكل من IPv4 و IPv6.
التحقق من حالة وقواعد UFW
من الضروري التأكد مما إذا كان UFW نشطًا أم لا. لتحديد حالة UFW، قم بتشغيل الأمر التالي:
|
1 |
$ sudo ufw status verbose |
إذا كانت الحالة ”inactive“، فقم بتنشيطها باتباع الخطوة تمكين UFW أعلاه. إذا كان نشطًا، فسيقوم UFW بالإبلاغ عن الحالة ”active“ ويسرد جميع القواعد النشطة.
تعطيل UFW
إذا كنت لن تستخدم UFW لسبب ما، فقم بتعطيله باستخدام الأمر التالي:
|
1 |
$ sudo ufw disable |
إذا تم تعطيل UFW، فلن تعد جميع القواعد التي تم إنشاؤها نشطة. ومع ذلك، لا يتم حذف القواعد. عند إعادة تنشيط UFW، ستصبح جميع القواعد نشطة مرة أخرى. ماذا لو كان تكوين UFW الحالي فوضويًا؟ بدلاً من حذف القواعد، من الممكن حذفها جميعًا بأمر واحد. لإعادة تعيين UFW، قم بتشغيل الأمر التالي:
|
1 |
$ sudo ufw reset |
لاحظ أنه لن يغير سلوك UFW الافتراضي الذي تم تكوينه في البداية.
الخاتمة
يعد التكوين الصحيح لجدار الحماية ضروريًا لضمان الأمان والوظائف. يجب تكوينه للسماح فقط بالاتصالات الواردة الضرورية مع الحد من الاتصالات غير الضرورية.
إذا كنت ترغب في التعرف على المزيد من حلول جدران الحماية، فقم بإلقاء نظرة على مدونتنا لمزيد من الموارد:
- إعداد جدار حماية باستخدام FirewallD على CentOS 7
- سرد وحذف قواعد جدار حماية Iptables
- كيفية بناء تدابير أمنية قوية لـ حماية خوادمك
حوسبة سعيدة!











التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.