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

مقدمة

UFW (uncomplicated firewall) هو أداة تكوين جدار الحماية تعمل فوق iptables، المضمنة بشكل افتراضي في توزيعات Ubuntu. يوفر واجهة بسيطة لتكوين حالات استخدام جدار الحماية الشائعة عبر سطر الأوامر.

توفر هذه الورقة الشيت بشكل دليل سريع المرجع لحالات الاستخدام والأوامر الشائعة في UFW، بما في ذلك أمثلة على كيفية السماح وحجب الخدمات حسب البورت، وواجهة الشبكة، وعنوان IP المصدر.

كيفية استخدام هذا الدليل

  • هذا الدليل بتنسيق شيت الغش مع مقتطفات سطر الأوامر المستقلة.
  • انتقل إلى أي قسم يكون ذا صلة بالمهمة التي تحاول إتمامها.
  • عند رؤية نص مظلل في أوامر هذا الدليل، تذكر أن هذا النص يجب أن يشير إلى عناوين IP من شبكتك الخاصة.

تذكر أنه يمكنك التحقق من مجموعة قواعد UFW الحالية الخاصة بك باستخدام sudo ufw status أو sudo ufw status verbose.

نشر تطبيقات الواجهة الأمامية الخاصة بك من GitHub باستخدام DigitalOcean App Platform. دع DigitalOcean يركز على توسيع تطبيقك.

التحقق من حالة UFW

للتحقق مما إذا كان ufw مُمكَّنًا، قم بتشغيل:

  1. sudo ufw status
Output
Status: inactive

سيشير الناتج ما إذا كان جدار الحماية نشطًا أم لا.

تمكين UFW

إذا كنت قد حصلت على رسالة Status: inactive عند تشغيل ufw status، فهذا يعني أن جدار الحماية لم يتم تمكينه بعد على النظام. ستحتاج إلى تشغيل أمر لتمكينه.

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

لتمكين UFW على نظامك، قم بتشغيل:

  1. sudo ufw enable

سترى ناتجًا مثل هذا:

Output
Firewall is active and enabled on system startup

لمعرفة ما إذا كان محظورًا حاليًا أم مسموحًا، يمكنك استخدام المعلمة verbose عند تشغيل ufw status، على النحو التالي:

  1. sudo ufw status
Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip

تعطيل UFW

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

  1. sudo ufw disable

كن على علم أن هذا الأمر سيعطل خدمة جدار الحماية بشكل كامل على نظامك.

حظر عنوان IP

لحظر جميع الاتصالات الشبكية الناتجة عن عنوان IP معين، قم بتشغيل الأمر التالي، مستبدلاً عنوان IP المشدد بالعنوان IP الذي ترغب في حظره:

  1. sudo ufw deny from 203.0.113.100
Output
Rule added

في هذا المثال، from 203.0.113.100 يحدد عنوان IP المصدر كـ “203.0.113.100”.

إذا قمت بتشغيل sudo ufw status الآن، سترى العنوان IP المحدد مدرجًا كمحظور:

Output
Status: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100

يتم حظر جميع الاتصالات، الواردة أو الصادرة، للعنوان IP المحدد.

حظر شبكة فرعية

إذا كنت بحاجة إلى حظر شبكة فرعية كاملة، يمكنك استخدام عنوان الشبكة الفرعية كمعلمة from في أمر ufw deny. سيتم حظر جميع عناوين الـ IP في الشبكة الفرعية المثالية 203.0.113.0/24:

  1. sudo ufw deny from 203.0.113.0/24
Output
Rule added

حظر الاتصالات الواردة إلى واجهة شبكية

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

  1. sudo ufw deny in on eth0 from 203.0.113.100
Output
Rule added

يتحدد المعلمة in إلى ufw لتطبيق القاعدة فقط لاتصالات الواردة، وتحدد المعلمة on eth0 أن القاعدة تنطبق فقط على واجهة eth0. قد يكون هذا مفيدًا إذا كان لديك نظام يحتوي على عدة واجهات شبكة (بما في ذلك تلك الافتراضية) وتحتاج إلى حظر الوصول الخارجي إلى بعض هذه الواجهات، وليس جميعها.

السماح بعنوان IP

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

  1. sudo ufw allow from 203.0.113.101
Output
Rule added

إذا قمت بتشغيل sudo ufw status الآن، سترى نتائج مشابهة لهذه، تُظهر كلمة ALLOW بجانب العنوان IP الذي أضفته للتو.

Output
Status: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101

يمكنك أيضًا السماح بالاتصالات من شبكة فرعية بأكملها عن طريق تقديم قناع الشبكة الفرعية المقابل لمضيف، مثل 203.0.113.0/24.

السماح باتصالات واردة إلى واجهة الشبكة

للسماح بالاتصالات الواردة من عنوان IP محدد إلى واجهة الشبكة المحددة، قم بتشغيل الأمر التالي، مستبدلاً عنوان الـ IP المميز باللون البارز بالعنوان الذي تريد السماح له به:

  1. sudo ufw allow in on eth0 from 203.0.113.102
Output
Rule added

يُخبر معلمة in ufw بتطبيق القاعدة فقط على الاتصالات الواردة، ومعلمة on eth0 تحدد أن القاعدة تنطبق فقط على واجهة eth0.

إذا قمت بتشغيل sudo ufw status الآن، سترى إخراجاً مماثلاً لهذا:

Output
Status: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102

حذف قاعدة UFW

لحذف قاعدة قمت بتعيينها مسبقًا ضمن UFW، استخدم ufw delete تتبعه القاعدة (allow أو deny) والتخصيص المستهدف. سيحذف المثال التالي قاعدة تم تعيينها مسبقًا للسماح بجميع الاتصالات من عنوان IP 203.0.113.101:

  1. sudo ufw delete allow from 203.0.113.101
Output
Rule deleted

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

  1. sudo ufw status numbered
Output
Status: active To Action From -- ------ ---- [ 1] Anywhere DENY IN 203.0.113.100 [ 2] Anywhere on eth0 ALLOW IN 203.0.113.102

من الإخراج، يمكنك رؤية وجود قاعدتين نشطتين. ترفض القاعدة الأولى، بالقيم المميزة باللون البارز، جميع الاتصالات الواردة من عنوان IP 203.0.113.100. القاعدة الثانية تسمح بالاتصالات على واجهة eth0 القادمة من عنوان IP 203.0.113.102.

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

  1. sudo ufw delete 1

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

Output
Deleting: deny from 203.0.113.100 Proceed with operation (y|n)? y Rule deleted

إذا قمت بإدراج القواعد الخاصة بك مرة أخرى باستخدام sudo ufw status، سترى أن القاعدة قد تمت إزالتها.

قائمة ملفات تعريف التطبيق المتاحة

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

لعرض الملفات التعريفية المتاحة حاليًا، قم بتشغيل الأمر التالي:

  1. sudo ufw app list

إذا قمت بتثبيت خدمة مثل خادم ويب أو برنامج آخر يعتمد على الشبكة ولم يتم توفير ملف تعريف ضمن UFW، تأكد أولاً من تمكين الخدمة. بالنسبة للخوادم عن بُعد، ستكون عادةً لديك OpenSSH جاهزًا للاستخدام:

Output
Available applications: OpenSSH

تمكين ملف تعريف التطبيق

لتمكين ملف تعريف تطبيق UFW، قم بتشغيل ufw allow تليه اسم ملف تعريف التطبيق الذي ترغب في تمكينه، والذي يمكنك الحصول عليه باستخدام أمر sudo ufw app list. في المثال التالي، نقوم بتمكين ملف تعريف OpenSSH، الذي سيسمح بجميع الاتصالات الواردة على منفذ SSH الافتراضي.

  1. sudo ufw allow “OpenSSH”
Output
Rule added Rule added (v6)

تذكر أن تضع اقتباسًا حول أسماء الملفات التي تتكون من عدة كلمات، مثل Nginx HTTPS.

تعطيل ملف تعريف التطبيق

لتعطيل ملف تعريف تطبيق كنت قد قمت بتعيينه مسبقًا داخل UFW، ستحتاج إلى إزالة القاعدة المقابلة له. على سبيل المثال، اعتبر الناتج التالي من sudo ufw status:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

يشير هذا الناتج إلى أن ملف تعريف التطبيق Nginx Full ممكّن حاليًا، مما يسمح بجميع الاتصالات بالخادم عبر HTTP وكذلك عبر HTTPS. إذا كنت ترغب في السماح بطلبات HTTPS فقط من وإلى خادم الويب الخاص بك، فسيتعين عليك أولاً تمكين القاعدة الأكثر تقييدًا، والتي في هذه الحالة ستكون Nginx HTTPS، ثم تعطيل القاعدة Nginx Full التي تعمل حاليًا:

  1. sudo ufw allow "Nginx HTTPS"
  2. sudo ufw delete allow "Nginx Full"

تذكر يمكنك عرض جميع ملفات تعريف التطبيقات المتاحة بأمر sudo ufw app list.

السماح بـ SSH

عند العمل مع الخوادم عن بُعد، سترغب في التأكد من أن منفذ SSH مفتوح للاتصالات بحيث يمكنك تسجيل الدخول إلى الخادم الخاص بك عن بُعد.

سيقوم الأمر التالي بتمكين ملف تعريف تطبيق OpenSSH UFW والسماح بجميع الاتصالات إلى منفذ SSH الافتراضي على الخادم:

  1. sudo ufw allow OpenSSH
Output
Rule added Rule added (v6)

على الرغم من أنه أقل سهولة للاستخدام، فإن بنية بديلة هي تحديد رقم المنفذ الدقيق لخدمة SSH، التي عادة ما يتم تعيينها على 22 بشكل افتراضي:

  1. sudo ufw allow 22
Output
Rule added Rule added (v6)

السماح بـ SSH الوارد من عنوان IP أو شبكة فرعية محددة

للسماح بالاتصالات الواردة من عنوان IP أو شبكة فرعية محددة، ستقوم بتضمين توجيه from لتحديد مصدر الاتصال. سيتطلب ذلك أيضًا تحديد عنوان الوجهة بمعلمة to. لتقييد هذه القاعدة لـ SSH فقط، ستحدد المعلمة proto (البروتوكول) إلى tcp ثم استخدم المعلمة port وقم بتعيينها على 22، منفذ SSH الافتراضي.

الأمر التالي سيسمح فقط باتصالات SSH الواردة من عنوان الآي بي 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 proto tcp to any port 22
Output
Rule added

يمكنك أيضًا استخدام عنوان الشبكة الفرعية كمعلمة from للسماح باتصالات SSH الواردة من شبكة كاملة:

  1. sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
Output
Rule added

السماح باتصالات Rsync الواردة من عنوان الآي بي أو الشبكة الفرعية المحددة

برنامج Rsync ، الذي يعمل على المنفذ 873 ، يمكن استخدامه لنقل الملفات من جهاز كمبيوتر إلى آخر.

للسماح باتصالات rsync الواردة من عنوان الآي بي أو الشبكة الفرعية المحددة، استخدم المعلمة from لتحديد عنوان الآي بي المصدر والمعلمة port لتعيين المنفذ الوجهة 873.
الأمر التالي سيسمح فقط باتصالات Rsync الواردة من عنوان الآي بي 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 to any port 873
Output
Rule added

للسماح بشبكة الشبكة الفرعية بأكملها 203.0.113.0/24 بتنفيذ rsync إلى خادمك، قم بتشغيل:

  1. sudo ufw allow from 203.0.113.0/24 to any port 873
Output
Rule added

السماح بـ Nginx HTTP / HTTPS

عند التثبيت، يُنشئ خادم الويب Nginx بعض ملفات تعريف UFW المختلفة داخل الخادم. بمجرد تثبيت Nginx وتمكينه كخدمة، قم بتشغيل الأمر التالي لتحديد الملفات التعريفية المتاحة:

  1. sudo ufw app list | grep Nginx
Output
Nginx Full Nginx HTTP Nginx HTTPS

لتمكين حركة المرور على كل من HTTP و HTTPS، اختر Nginx Full. وإلا، اختر إما Nginx HTTP للسماح فقط بـ HTTP أو Nginx HTTPS للسماح فقط بـ HTTPS.

سيسمح الأمر التالي بحركة المرور على كل من HTTP و HTTPS على الخادم (المنافذ 80 و 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

السماح بـ Apache HTTP / HTTPS

عند التثبيت، يُنشئ خادم الويب Apache بعض ملفات تعريف UFW المختلفة داخل الخادم. بمجرد تثبيت Apache وتمكينه كخدمة، قم بتشغيل الأمر التالي لتحديد الملفات التعريفية المتاحة:

  1. sudo ufw app list | grep Apache
Output
Apache Apache Full Apache Secure

لتمكين حركة المرور على كل من HTTP و HTTPS، اختر Apache Full. وإلا، اختر إما Apache لـ HTTP أو Apache Secure لـ HTTPS.

سيسمح الأمر التالي بحركة المرور على كل من HTTP و HTTPS على الخادم (المنافذ 80 و 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

السماح بجميع حركة المرور الواردة على HTTP (المنفذ 80)

خوادم الويب، مثل Apache و Nginx، عادة ما تستمع لطلبات HTTP على المنفذ 80. إذا كانت سياسة الافتراضي للمرور الوارد مضبوطة على الإسقاط أو الرفض، ستحتاج إلى إنشاء قاعدة UFW للسماح بالوصول الخارجي على المنفذ 80. يمكنك استخدام رقم المنفذ أو اسم الخدمة (http) كمعلمة لهذا الأمر.

للسماح بجميع اتصالات HTTP الواردة (منفذ 80)، قم بتشغيل:

  1. sudo ufw allow http
Output
Rule added Rule added (v6)

صيغة بديلة هي تحديد رقم المنفذ لخدمة HTTP:

  1. sudo ufw allow 80
Output
Rule added Rule added (v6)

السماح بجميع اتصالات HTTPS الواردة (منفذ 443)

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

للسماح بجميع اتصالات HTTPS الواردة (منفذ 443)، قم بتشغيل:

  1. sudo ufw allow https
Output
Rule added Rule added (v6)

صيغة بديلة هي تحديد رقم المنفذ لخدمة HTTPS:

  1. sudo ufw allow 443
Output
Rule added Rule added (v6)

السماح بجميع اتصالات HTTP و HTTPS الواردة

إذا كنت ترغب في السماح بحركة المرور عبر HTTP و HTTPS، يمكنك إنشاء قاعدة واحدة تسمح بكلا البورتين. يتطلب هذا الاستخدام أيضًا تعريف البروتوكول باستخدام المعلمة proto، والتي يجب ضبطها في هذه الحالة على tcp.

للسماح بجميع اتصالات HTTP و HTTPS الواردة (البورتات 80 و 443،) قم بتشغيل الأمر التالي:

  1. sudo ufw allow proto tcp from any to any port 80,443
Output
Rule added Rule added (v6)

السماح باتصال MySQL من عنوان IP محدد أو شبكة فرعية

يستمع MySQL لاتصالات العميل على البورت 3306. إذا كان خادم قاعدة البيانات MySQL الخاص بك يتم استخدامه من قبل عميل على خادم بعيد، ستحتاج إلى إنشاء قاعدة UFW للسماح بهذا الوصول.

للسماح باتصالات MySQL الواردة من عنوان IP محدد أو شبكة فرعية، استخدم المعلمة from لتحديد عنوان IP المصدر والمعلمة port لتعيين بورت الوجهة 3306.

سيسمح الأمر التالي لعنوان الآي بي 203.0.113.103 بالاتصال ببورت MySQL الخادم:

  1. sudo ufw allow from 203.0.113.103 to any port 3306
Output
Rule added

للسماح لشبكة الـ 203.0.113.0/24 بأكملها بالاتصال بخادم MySQL الخاص بك، قم بتشغيل:

  1. sudo ufw allow from 203.0.113.0/24 to any port 3306
Output
Rule added

السماح باتصال PostgreSQL من عنوان IP محدد أو شبكة فرعية

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

للسماح باتصالات PostgreSQL الواردة من عنوان IP محدد أو شبكة فرعية معينة، قم بتحديد المصدر باستخدام المعلمة from، وضبط البورت على 5432:

  1. sudo ufw allow from 203.0.113.103 to any port 5432
Output
Rule added

للسماح لشبكة الشبكة الفرعية بالكامل 203.0.113.0/24 بالاتصال بخادم PostgreSQL الخاص بك، قم بتشغيل:

  1. sudo ufw allow from 203.0.113.0/24 to any port 5432
Output
Rule added

حظر إرسال البريد الإلكتروني SMTP الصادر

تستخدم خوادم البريد الإلكتروني، مثل Sendmail و Postfix، عادة البورت 25 لحركة مرور SMTP. إذا كان الخادم الخاص بك لا ينبغي أن يرسل بريدًا إلكترونيًا صادرًا، قد ترغب في منع هذا النوع من حركة المرور. لحظر اتصالات SMTP الصادرة، قم بتشغيل:

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

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

الختام

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

يمكن تكييف معظم الأوامر في هذا الدليل لتناسب حالات الاستخدام والسيناريوهات المختلفة، من خلال تغيير المعلمات مثل عنوان IP المصدر و / أو منفذ الوجهة. للحصول على معلومات مفصلة حول كل معلمة أمر والمعدلات المتاحة، يمكنك استخدام أداة man للتحقق من الدليل الخاص بـ UFW:

  1. man ufw

الصفحة الرسمية لـ UFW على وثائق أوبونتو هي مصدر آخر يمكنك استخدامه كمرجع لحالات الاستخدام المتقدمة والأمثلة.

Source:
https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands