كيفية إعداد جدار الحماية باستخدام UFW على Ubuntu

0 الأسهم
0
0
0
0

مقدمة

جدار الحماية البسيط (UFW)، أو جدار الحماية البسيط، هو واجهة مستخدم لبرنامج iptables مصممة لتبسيط عملية إعداد جدار الحماية. على الرغم من أن iptables أداة قوية ومرنة، إلا أن تعلم كيفية استخدامه لإعداد جدار الحماية بشكل صحيح قد يكون صعبًا على المبتدئين. إذا كنت ترغب في بدء تأمين شبكتك ولا تعرف الأداة المناسبة، فقد يكون UFW خيارًا جيدًا لك.

المتطلبات الأساسية

إذا كنت تستخدم إصدار أوبونتو 16.04 أو إصدارًا أقدم، فننصحك بالترقية إلى إصدار أحدث، لأن أوبونتو لم يعد يدعم هذه الإصدارات. ستساعدك هذه التعليمات على ترقية إصدار أوبونتو لديك.

 

الخطوة 1 - تأكد من تمكين IPv6

في الإصدارات الحديثة من أوبونتو، يكون IPv6 مُفعّلاً افتراضياً. عملياً، هذا يعني أن معظم قواعد جدار الحماية المُضافة إلى الخادم ستتضمن كلاً من IPv4 وIPv6، مع تحديد الأخير كـ v6 في مُخرجات أمر حالة UFW. للتأكد من تفعيل IPv6، يُمكنك التحقق من ملف تكوين UFW على المسار /etc/default/ufw. افتح هذا الملف باستخدام nano أو مُحرّر سطر الأوامر المُفضّل لديك:

sudo nano /etc/default/ufw

تأكد بعد ذلك من ضبط قيمة IPV6 على "نعم". يجب أن تبدو كالتالي:

IPV6=yes

احفظ الملف وأغلقه. إذا كنت تستخدم برنامج nano، يمكنك القيام بذلك بالضغط على CTRL+X، ثم Y، ثم ENTER للتأكيد.

عندما يتم تمكين UFW في الخطوة التالية من هذا الدليل، سيتم تكوينه لكتابة قواعد جدار الحماية IPv4 وIPv6.

الخطوة 2 - تعيين السياسات الافتراضية

إذا كنت قد بدأت للتو باستخدام جدار الحماية الموحد، فإن أول خطوة جيدة هي مراجعة سياسات جدار الحماية الافتراضية. تتحكم هذه القواعد في كيفية معالجة حركة البيانات التي لا تتوافق صراحةً مع أي قواعد أخرى.

افتراضيًا، تم إعداد UFW لرفض جميع الاتصالات الواردة والسماح بجميع الاتصالات الصادرة. هذا يعني أن أي شخص يحاول الوصول إلى خادمك لن يتمكن من الاتصال، بينما سيتمكن أي تطبيق داخل الخادم من الوصول إلى العالم الخارجي. أُدرجت قواعد إضافية للسماح بخدمات ومنافذ محددة كاستثناءات لهذه السياسة العامة.

لتتأكد من قدرتك على متابعة بقية هذا البرنامج التعليمي، ستقوم الآن بإعداد سياسات UFW الافتراضية الخاصة بك لحركة المرور الواردة والصادرة.

لتعيين سياسة دخول UFW الافتراضية على الرفض، قم بتشغيل الأمر التالي:

sudo ufw default deny incoming
Output

Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
لتعيين سياسة UFW الصادرة الافتراضية إلى مسموح بها، قم بتشغيل الأمر التالي:

تُعيّن هذه الأوامر الإعدادات الافتراضية لرفض الاتصالات الواردة والسماح بالاتصالات الصادرة. قد تكفي إعدادات جدار الحماية الافتراضية هذه وحدها لأجهزة الكمبيوتر الشخصية، ولكن غالبًا ما تحتاج الخوادم إلى الاستجابة للطلبات الواردة من مستخدمين خارجيين. سنتناول هذا لاحقًا.

الخطوة 3 – السماح باتصالات SSH

إذا فعّلت جدار حماية UFW الآن، فسيرفض جميع الاتصالات الواردة. هذا يعني أنه إذا أردت أن يستجيب خادمك لهذه الأنواع من الطلبات، فستحتاج إلى إنشاء قواعد تسمح صراحةً بالاتصالات الواردة الشرعية - مثل اتصالات SSH أو HTTP. إذا كنت تستخدم خادمًا سحابيًا، فغالبًا ما ترغب في السماح باتصالات SSH الواردة لتتمكن من الاتصال بخادمك وإدارته.

السماح بملف تعريف تطبيق OpenSSH UFW

بمجرد التثبيت، تُسجّل معظم التطبيقات التي تعتمد على اتصالات الشبكة ملف تعريف تطبيق لدى UFW، مما يُمكّن المستخدمين من السماح بالوصول الخارجي إلى الخدمة أو منعه بسرعة. يمكنك التحقق من الملفات التعريفية المُسجّلة حاليًا لدى UFW باستخدام الأمر التالي:

sudo ufw app list
Output
Available applications:
OpenSSH
لتفعيل ملف تعريف تطبيق OpenSSH، قم بتشغيل الأمر التالي:
sudo ufw allow OpenSSH
Output

Rule added
Rule added (v6)
يقوم هذا الأمر بإنشاء قواعد جدار الحماية للسماح بجميع الاتصالات على المنفذ 22، وهو المنفذ الذي تستمع إليه خدمة SSH بشكل افتراضي.
السماح باستخدام SSH استنادًا إلى اسم الخدمة

هناك طريقة أخرى لتكوين UFW للسماح باتصالات SSH الواردة وهي الإشارة إلى اسم الخدمة الخاص به:

sudo ufw allow ssh
Output

Rule added
Rule added (v6)
يعرف UFW المنافذ والبروتوكولات التي تستخدمها الخدمة استنادًا إلى ملف /etc/services.
تمكين SSH بناءً على رقم المنفذ

كبديل، يمكنك كتابة القاعدة المكافئة بتحديد المنفذ بدلاً من اسم التطبيق أو ملف تعريف الخدمة. على سبيل المثال، يعمل هذا الأمر مثل الأمثلة السابقة:

sudo ufw allow 22
Output

Rule added
Rule added (v6)

إذا قمتَ بتكوين خدمة SSH لاستخدام منفذ مختلف، فستحتاج إلى تحديد المنفذ المناسب. على سبيل المثال، إذا كان خادم SSH يستمع على المنفذ 2222، يمكنك استخدام هذا الأمر للسماح بالاتصالات على هذا المنفذ:

sudo ufw allow 2222
Output

Rule added
Rule added (v6)

الآن بعد أن تم تكوين جدار الحماية الخاص بك للسماح باتصالات SSH الواردة، يمكنك تمكينه.

الخطوة 4 - تمكين UFW

يجب الآن تهيئة جدار الحماية للسماح باتصالات SSH. للتحقق من القواعد التي تمت إضافتها حتى الآن، حتى مع استمرار تعطيل جدار الحماية، يمكنك استخدام الأمر التالي:

sudo ufw show added
Output
Added user rules (see 'ufw status' for running firewall):
ufw allow OpenSSH
بعد التأكد من وجود قاعدة تسمح باتصالات SSH الواردة، يمكنك تمكين جدار الحماية باستخدام الأمر التالي:
sudo ufw enable
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

ستتلقى تحذيرًا يفيد بأن هذا الأمر قد يُعطل اتصالات SSH الحالية. لقد أعددتَ بالفعل قاعدة جدار حماية تسمح باتصالات SSH، لذا يُمكنك المتابعة. استجب للطلب بـ y واضغط على ENTER.

تم تفعيل جدار الحماية الآن. شغّل الأمر sudo ufw status verbose للاطلاع على القواعد المُعدّة. يتناول باقي هذا الدليل كيفية استخدام جدار الحماية بمزيد من التفصيل، مثل السماح بأنواع مختلفة من الاتصالات أو رفضها.

الخطوة 5 - السماح بالاتصالات الأخرى

في هذه المرحلة، يجب عليك السماح بجميع الاتصالات الأخرى التي يحتاج خادمك إلى معالجتها. تعتمد الاتصالات التي يجب عليك السماح بها على احتياجاتك الخاصة. أنت تعرف بالفعل كيفية كتابة قواعد تسمح بالاتصالات بناءً على ملف تعريف التطبيق، أو اسم الخدمة، أو المنفذ. لقد فعلت ذلك بالفعل مع SSH على المنفذ 22. يمكنك أيضًا القيام بذلك مع:

  • HTTP على المنفذ 80، وهو نفس المنفذ الذي تستخدمه خوادم الويب غير المشفرة، باستخدام sudo ufw allow http أو sudo ufw allow 80
  • HTTPS على المنفذ 443، وهو نفس المنفذ الذي تستخدمه خوادم الويب المشفرة، باستخدام sudo ufw allow https أو sudo ufw allow 443
  • Apache مع HTTP و HTTPS، باستخدام sudo ufw allow 'Apache Full'‘
  • Nginx مع HTTP و HTTPS، باستخدام sudo ufw allow 'Nginx Full'‘

لا تنس التحقق من ملفات تعريف التطبيقات المتوفرة لخادمك باستخدام الأمر sudo ufw app list.

بالإضافة إلى تحديد منفذ أو اسم خدمة معروف، هناك عدة طرق أخرى للسماح بالاتصالات. سنناقش بعضًا منها أدناه.

نطاقات المنافذ المحددة

يمكنك تحديد نطاق المنافذ باستخدام UFW. تستخدم بعض التطبيقات منافذ متعددة بدلاً من منفذ واحد فقط.

على سبيل المثال، للسماح باتصالات X11 باستخدام المنافذ 6000-6007، استخدم الأوامر التالية:

sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

عند تحديد نطاقات المنافذ باستخدام UFW، يجب تحديد البروتوكول (TCP أو UDP) الذي تنطبق عليه القواعد. لم نذكر هذا من قبل، لأن عدم تحديد بروتوكول يسمح تلقائيًا باستخدام كلا البروتوكولين، وهو أمر مقبول في معظم الحالات.

عناوين IP محددة

عند استخدام UFW، يمكنك أيضًا تحديد عناوين IP في قواعدك. على سبيل المثال، إذا كنت ترغب في السماح بالاتصالات من عنوان IP محدد، مثل عنوان IP الخاص بالعمل أو المنزل 203.0.113.4، فاستخدم المعلمة "from" ثم أدخل عنوان IP المطلوب:

sudo ufw allow from 203.0.113.4
Output

Rule added

يمكنك أيضًا تحديد المنفذ الذي يُسمح لعنوان IP بالاتصال به بإضافة رقم المنفذ إلى كل منفذ. على سبيل المثال، إذا كنت تريد السماح لعنوان IP 203.0.113.4 بالاتصال بالمنفذ 22 (SSH)، فاستخدم هذا الأمر:

sudo ufw allow from 203.0.113.4 to any port 22
OutputRule added

الشبكات الفرعية

إذا كنت ترغب في السماح بالوصول إلى شبكة فرعية من عناوين IP، يمكنك ذلك باستخدام ترميز CIDR لتحديد قناع الشبكة. على سبيل المثال، إذا كنت ترغب في السماح بالوصول إلى جميع عناوين IP من 203.0.113.1 إلى 203.0.113.254، يمكنك استخدام هذا الأمر:

sudo ufw allow from 203.0.113.0/24
Output
Rule added

وبالمثل، يمكنك تحديد منفذ الوجهة الذي يُسمح للشبكة الفرعية 203.0.113.0/24 بالاتصال به. سنستخدم المنفذ 22 (SSH) كمثال.

sudo ufw allow from 203.0.113.0/24 to any port 22
Output

Rule added
الاتصال بواجهة شبكة محددة

إذا كنت تريد إنشاء قاعدة جدار حماية تنطبق فقط على واجهة شبكة محددة، فيمكنك القيام بذلك عن طريق تحديد "السماح بالتسجيل" متبوعًا باسم واجهة الشبكة.

قبل المتابعة، يمكنك البحث عن واجهات شبكتك. للقيام بذلك، استخدم هذا الأمر:

ip addr
Output Excerpt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

يُظهر المخرج المُميّز أسماء واجهات الشبكة. عادةً ما تُسمى بأسماء مثل eth0 أو enp3s2.

لذا، إذا كان الخادم الخاص بك يحتوي على واجهة شبكة عامة تسمى eth0، فيمكنك السماح لحركة مرور HTTP (المنفذ 80) إليها باستخدام هذا الأمر:

sudo ufw allow in on eth0 to any port 80
Output
Rule added
Rule added (v6)

سيؤدي القيام بذلك إلى السماح لخادمك بتلقي طلبات HTTP من الإنترنت العام.

أو إذا كنت تريد أن يستمع خادم قاعدة بيانات MySQL (المنفذ 3306) إلى الاتصالات على واجهة الشبكة الخاصة eth1، على سبيل المثال، فيمكنك استخدام هذا الأمر:

sudo ufw allow in on eth1 to any port 3306
Output

Rule added

Rule added (v6)

يتيح هذا لخوادم أخرى على شبكتك الخاصة الاتصال بقاعدة بيانات MySQL الخاصة بك.

الخطوة 6 - التخلص من الاتصالات

إذا لم تُغيّر السياسة الافتراضية للاتصالات الواردة، فسيتم تكوين جدار الحماية الموحد لرفض جميع الاتصالات الواردة. يُبسّط هذا عملية إنشاء سياسة جدار حماية آمن من خلال مطالبتك بإنشاء قواعد تسمح صراحةً لمنافذ وعناوين IP محددة بالمرور.

مع ذلك، قد ترغب أحيانًا في رفض اتصالات محددة بناءً على عنوان IP المصدر أو الشبكة الفرعية، ربما لأنك تعلم أن خادمك يتعرض لهجوم من هناك. أيضًا، إذا أردت تغيير سياسة الدخول الافتراضية إلى السماح (وهو أمر غير مستحسن)، فستحتاج إلى إنشاء قواعد رفض لكل خدمة أو عنوان IP لا ترغب في السماح بالاتصالات منه.

لكتابة قواعد الرفض، يمكنك استخدام الأوامر الموضحة سابقًا، واستبدال allow بـ deny.

على سبيل المثال، لرفض اتصالات HTTP، يمكنك استخدام هذا الأمر:

sudo ufw deny http
Output
Rule added (v6)

أو إذا كنت تريد رفض جميع الاتصالات من 203.0.113.4، يمكنك استخدام هذا الأمر:

sudo ufw deny from 203.0.113.4
Output
Rule added

في بعض الحالات، قد ترغب أيضًا في حظر الاتصالات الصادرة من الخادم. لمنع جميع المستخدمين من استخدام منفذ على الخادم، مثل المنفذ 25 لحركة مرور SMTP، يمكنك استخدام "منع الخروج" متبوعًا برقم المنفذ:

sudo ufw deny out 25
Output
Rule added
Rule added (v6)

سيؤدي هذا إلى حظر جميع حركة مرور SMTP الصادرة على الخادم.

الخطوة 7 - حذف القواعد

معرفة كيفية حذف قواعد جدار الحماية لا تقل أهمية عن معرفة كيفية إنشائها. هناك طريقتان لتحديد القواعد المراد حذفها: عبر رقم القاعدة أو عبر اسمها السهل القراءة (كما هو الحال عند تحديد القواعد عند إنشائها).

حذف قاعدة UFW حسب الرقم

لحذف قاعدة جدار الحماية بناءً على رقمها، عليك أولاً الحصول على قائمة مرقمة بجميع قواعد جدار الحماية لديك. يتيح لك أمر حالة جدار الحماية عرض الأرقام بجوار كل قاعدة، كما هو موضح هنا:

sudo ufw status numbered
Numbered Output:
Status: active

To               Action               From
--               ------              ----
[ 1] 22         ALLOW IN             15.15.15.0/24
[ 2] 80         ALLOW IN             Anywhere

إذا قررت إزالة القاعدة رقم 2، وهي القاعدة التي تسمح باتصالات المنفذ 80 (HTTP)، فيمكنك تحديدها في أمر إزالة UFW على النحو التالي:

sudo ufw delete 2
Output

Deleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted

سيطلب منك هذا التأكيد، ثم يحذف القاعدة ٢ التي تسمح باتصال HTTP. يرجى ملاحظة أنه في حال تفعيل IPv6، ستحتاج إلى حذف قاعدة IPv6 المقابلة أيضًا.

حذف قاعدة UFW حسب الاسم

بدلاً من استخدام أرقام القواعد، يمكنك أيضًا الإشارة إلى قاعدة باسم يسهل على البشر قراءته، والذي يُحدده نوع القاعدة (عادةً ما يكون سماحًا أو رفضًا) واسم الخدمة أو رقم المنفذ الذي تستهدفه القاعدة، أو اسم ملف تعريف التطبيق إن وُجد. على سبيل المثال، إذا كنت ترغب في إزالة قاعدة سماح لملف تعريف تطبيق باسم Apache Full كان مُفعّلًا سابقًا، يمكنك استخدام الأمر التالي:

sudo ufw delete allow "Apache Full"
Output
Rule deleted
Rule deleted (v6)  

يعمل أمر الحذف بالطريقة نفسها مع القواعد التي أُنشئت بالإشارة إلى خدمة بالاسم أو المنفذ. على سبيل المثال، إذا أنشأتَ سابقًا قاعدةً للسماح باتصالات HTTP، sudo ufw السماح بـ http يمكنك حذف القاعدة على النحو التالي:

sudo ufw delete allow http
Output
Rule deleted
Rule deleted (v6)

نظرًا لأن أسماء الخدمات قابلة للتبادل مع أرقام المنافذ عند تحديد القواعد، فيمكنك أيضًا الرجوع إلى نفس القاعدة السماح بـ 80 بدلاً من السماح بـ http:

sudo ufw delete allow http

Output
Rule deleted Rule deleted (v6)

نظرًا لأن أسماء الخدمات قابلة للتبادل مع أرقام المنافذ عند تحديد القواعد، فيمكنك أيضًا الرجوع إلى نفس القاعدة السماح بـ 80 بدلاً من السماح بـ http:

sudo ufw delete allow 80
Output
Rule deleted
Rule deleted (v6)

عند حذف قواعد UFW حسب الاسم، سيتم حذف كل من قواعد IPv4 وIPv6، إن وجدت.

الخطوة 8 - التحقق من حالة UFW والقواعد

في أي وقت، يمكنك التحقق من حالة UFW باستخدام هذا الأمر:

sudo ufw status verbose

إذا تم تعطيل UFW، وهو ما يحدث بشكل افتراضي، فسترى شيئًا كهذا:

Output
Status: inactive

إذا تم تفعيل جدار الحماية (UFW)، وهو ما يجب أن يكون عليه بعد اتباع الخطوة 3، فسيظهر الناتج مُفعّلاً ويُدرج أي قواعد تم ضبطها. على سبيل المثال، إذا تم تكوين جدار الحماية للسماح باتصالات SSH (المنفذ 22) من أي مكان، فقد يبدو الناتج كالتالي:

Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                 Action             From
--                 ------             ----
22/tcp             ALLOW IN           Anywhere

اگر می‌خواهید بررسی کنید که UFW چگونه فایروال را پیکربندی کرده است، از دستور status استفاده کنید.

مرحله ۹ – غیرفعال کردن یا تنظیم مجدد فایروال

اگر تصمیم دارید که از فایروال UFW استفاده نکنید، می‌توانید آن را با این دستور غیرفعال کنید:

sudo ufw disable
Output
Firewall stopped and disabled on system startup

أي قواعد أنشأتها باستخدام UFW لن تكون نشطة بعد الآن. إذا كنت بحاجة إلى تفعيلها لاحقًا، يمكنك دائمًا sudo ufw تمكين يجري.

إذا كنت قد قمت بالفعل بتكوين قواعد UFW ولكنك قررت البدء من جديد، فيمكنك استخدام أمر إعادة الضبط:

sudo ufw reset
Output
Resetting 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.20210729_170353'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210729_170353'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210729_170353'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210729_170353'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210729_170353'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210729_170353'

سيؤدي هذا إلى تعطيل UFW وإزالة أي قواعد مُعرّفة سابقًا. سيمنحك هذا بداية جديدة مع UFW. تذكّر أنه في حال تغيير السياسات الافتراضية في أي وقت، فلن تعود إلى إعداداتها الأصلية.


خاتمة

تم الآن تهيئة جدار الحماية للسماح باتصالات SSH (على الأقل). تأكد من السماح بأي اتصالات واردة أخرى يحتاجها خادمك، مع تقييد أي اتصالات غير ضرورية للحفاظ على أداء خادمك وأمانه.


لمزيد من المعلومات حول تكوينات UFW الشائعة، راجع البرنامج التعليمي

أساسيات جدار الحماية UFW: قواعد وأوامر جدار الحماية الشائعة لأمان Linux

تحقق من ذلك.

 

 

 

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً