مقدمة
UFW (uncomplicated firewall) هو أداة تكوين جدار الحماية تعمل فوق iptables
، المضمنة بشكل افتراضي في توزيعات Ubuntu. يوفر واجهة بسيطة لتكوين حالات استخدام جدار الحماية الشائعة عبر سطر الأوامر.
توفر هذه الورقة الشيت بشكل دليل سريع المرجع لحالات الاستخدام والأوامر الشائعة في UFW، بما في ذلك أمثلة على كيفية السماح وحجب الخدمات حسب البورت، وواجهة الشبكة، وعنوان IP المصدر.
كيفية استخدام هذا الدليل
- هذا الدليل بتنسيق شيت الغش مع مقتطفات سطر الأوامر المستقلة.
- انتقل إلى أي قسم يكون ذا صلة بالمهمة التي تحاول إتمامها.
- عند رؤية نص مظلل في أوامر هذا الدليل، تذكر أن هذا النص يجب أن يشير إلى عناوين IP من شبكتك الخاصة.
تذكر أنه يمكنك التحقق من مجموعة قواعد UFW الحالية الخاصة بك باستخدام sudo ufw status
أو sudo ufw status verbose
.
نشر تطبيقات الواجهة الأمامية الخاصة بك من GitHub باستخدام DigitalOcean App Platform. دع DigitalOcean يركز على توسيع تطبيقك.
التحقق من حالة UFW
للتحقق مما إذا كان ufw
مُمكَّنًا، قم بتشغيل:
OutputStatus: inactive
سيشير الناتج ما إذا كان جدار الحماية نشطًا أم لا.
تمكين UFW
إذا كنت قد حصلت على رسالة Status: inactive
عند تشغيل ufw status
، فهذا يعني أن جدار الحماية لم يتم تمكينه بعد على النظام. ستحتاج إلى تشغيل أمر لتمكينه.
بشكل افتراضي، عند تمكين UFW سيقوم بحظر الوصول الخارجي إلى جميع المنافذ على الخادم. في التطبيق العملي، يعني ذلك إذا كنت متصلاً بخادم عبر SSH وقمت بتمكين ufw
قبل السماح بالوصول عبر منفذ SSH، فسوف تفصل الاتصال. تأكد من اتباع القسم المتعلق بـ كيفية تمكين الوصول عبر SSH في هذا الدليل قبل تمكين جدار الحماية إذا كانت هذه حالتك.
لتمكين UFW على نظامك، قم بتشغيل:
سترى ناتجًا مثل هذا:
OutputFirewall is active and enabled on system startup
لمعرفة ما إذا كان محظورًا حاليًا أم مسموحًا، يمكنك استخدام المعلمة verbose
عند تشغيل ufw status
، على النحو التالي:
OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
تعطيل UFW
إذا كنت بحاجة لتعطيل UFW لأي سبب، يمكنك القيام بذلك باستخدام الأمر التالي:
كن على علم أن هذا الأمر سيعطل خدمة جدار الحماية بشكل كامل على نظامك.
حظر عنوان IP
لحظر جميع الاتصالات الشبكية الناتجة عن عنوان IP معين، قم بتشغيل الأمر التالي، مستبدلاً عنوان IP المشدد بالعنوان IP الذي ترغب في حظره:
OutputRule added
في هذا المثال، from 203.0.113.100
يحدد عنوان IP المصدر كـ “203.0.113.100”.
إذا قمت بتشغيل sudo ufw status
الآن، سترى العنوان IP المحدد مدرجًا كمحظور:
OutputStatus: active
To Action From
-- ------ ----
Anywhere DENY 203.0.113.100
يتم حظر جميع الاتصالات، الواردة أو الصادرة، للعنوان IP المحدد.
حظر شبكة فرعية
إذا كنت بحاجة إلى حظر شبكة فرعية كاملة، يمكنك استخدام عنوان الشبكة الفرعية كمعلمة from
في أمر ufw deny
. سيتم حظر جميع عناوين الـ IP في الشبكة الفرعية المثالية 203.0.113.0/24
:
OutputRule added
حظر الاتصالات الواردة إلى واجهة شبكية
لحظر الاتصالات الواردة من عنوان IP معين إلى واجهة الشبكة المحددة، قم بتشغيل الأمر التالي، واستبدل عنوان IP المميز بالعنوان IP الذي ترغب في حظره:
OutputRule added
يتحدد المعلمة in
إلى ufw
لتطبيق القاعدة فقط لاتصالات الواردة، وتحدد المعلمة on eth0
أن القاعدة تنطبق فقط على واجهة eth0
. قد يكون هذا مفيدًا إذا كان لديك نظام يحتوي على عدة واجهات شبكة (بما في ذلك تلك الافتراضية) وتحتاج إلى حظر الوصول الخارجي إلى بعض هذه الواجهات، وليس جميعها.
السماح بعنوان IP
للسماح بجميع الاتصالات الشبكية الصادرة من عنوان IP معين، قم بتشغيل الأمر التالي، واستبدل العنوان IP المميز بالعنوان IP الذي ترغب في السماح بالوصول إليه:
OutputRule added
إذا قمت بتشغيل sudo ufw status
الآن، سترى نتائج مشابهة لهذه، تُظهر كلمة ALLOW
بجانب العنوان IP الذي أضفته للتو.
OutputStatus: active
To Action From
-- ------ ----
...
Anywhere ALLOW 203.0.113.101
يمكنك أيضًا السماح بالاتصالات من شبكة فرعية بأكملها عن طريق تقديم قناع الشبكة الفرعية المقابل لمضيف، مثل 203.0.113.0/24
.
السماح باتصالات واردة إلى واجهة الشبكة
للسماح بالاتصالات الواردة من عنوان IP محدد إلى واجهة الشبكة المحددة، قم بتشغيل الأمر التالي، مستبدلاً عنوان الـ IP المميز باللون البارز بالعنوان الذي تريد السماح له به:
OutputRule added
يُخبر معلمة in
ufw
بتطبيق القاعدة فقط على الاتصالات الواردة، ومعلمة on eth0
تحدد أن القاعدة تنطبق فقط على واجهة eth0
.
إذا قمت بتشغيل sudo ufw status
الآن، سترى إخراجاً مماثلاً لهذا:
OutputStatus: active
To Action From
-- ------ ----
...
Anywhere on eth0 ALLOW 203.0.113.102
حذف قاعدة UFW
لحذف قاعدة قمت بتعيينها مسبقًا ضمن UFW، استخدم ufw delete
تتبعه القاعدة (allow
أو deny
) والتخصيص المستهدف. سيحذف المثال التالي قاعدة تم تعيينها مسبقًا للسماح بجميع الاتصالات من عنوان IP 203.0.113.101
:
OutputRule deleted
طريقة أخرى لتحديد القاعدة التي تريد حذفها هي من خلال تقديم معرف القاعدة. يمكن الحصول على هذه المعلومات باستخدام الأمر التالي:
OutputStatus: 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 يمنع بشكل افتراضي جميع الوصول الخارجي ما لم يتم السماح به صراحة، فإن القاعدة الأولى زائدة، لذا يمكنك إزالتها. لحذف القاعدة بواسطة معرفها، قم بتشغيل:
سيُطلب منك تأكيد العملية والتأكد من أن المعرف الذي تقدمه يشير إلى القاعدة الصحيحة التي ترغب في حذفها.
OutputDeleting:
deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deleted
إذا قمت بإدراج القواعد الخاصة بك مرة أخرى باستخدام sudo ufw status
، سترى أن القاعدة قد تمت إزالتها.
قائمة ملفات تعريف التطبيق المتاحة
عند التثبيت، تقوم التطبيقات التي تعتمد على الاتصالات الشبكية عادةً بإعداد ملف تعريف UFW يمكنك استخدامه للسماح بالاتصال من عناوين خارجية. وهذا في كثير من الأحيان نفسه مثل تشغيل ufw allow from
، مع ميزة توفير اختصار يجرد أرقام المنفذ المحددة التي يستخدمها الخدمة ويوفر تسمية مستخدمة بطريقة ودية للخدمات المشار إليها.
لعرض الملفات التعريفية المتاحة حاليًا، قم بتشغيل الأمر التالي:
إذا قمت بتثبيت خدمة مثل خادم ويب أو برنامج آخر يعتمد على الشبكة ولم يتم توفير ملف تعريف ضمن UFW، تأكد أولاً من تمكين الخدمة. بالنسبة للخوادم عن بُعد، ستكون عادةً لديك OpenSSH جاهزًا للاستخدام:
OutputAvailable applications:
OpenSSH
تمكين ملف تعريف التطبيق
لتمكين ملف تعريف تطبيق UFW، قم بتشغيل ufw allow
تليه اسم ملف تعريف التطبيق الذي ترغب في تمكينه، والذي يمكنك الحصول عليه باستخدام أمر sudo ufw app list
. في المثال التالي، نقوم بتمكين ملف تعريف OpenSSH، الذي سيسمح بجميع الاتصالات الواردة على منفذ SSH الافتراضي.
OutputRule added
Rule added (v6)
تذكر أن تضع اقتباسًا حول أسماء الملفات التي تتكون من عدة كلمات، مثل Nginx HTTPS
.
تعطيل ملف تعريف التطبيق
لتعطيل ملف تعريف تطبيق كنت قد قمت بتعيينه مسبقًا داخل UFW، ستحتاج إلى إزالة القاعدة المقابلة له. على سبيل المثال، اعتبر الناتج التالي من sudo ufw status
:
OutputStatus: 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
التي تعمل حاليًا:
تذكر يمكنك عرض جميع ملفات تعريف التطبيقات المتاحة بأمر sudo ufw app list
.
السماح بـ SSH
عند العمل مع الخوادم عن بُعد، سترغب في التأكد من أن منفذ SSH مفتوح للاتصالات بحيث يمكنك تسجيل الدخول إلى الخادم الخاص بك عن بُعد.
سيقوم الأمر التالي بتمكين ملف تعريف تطبيق OpenSSH UFW والسماح بجميع الاتصالات إلى منفذ SSH الافتراضي على الخادم:
OutputRule added
Rule added (v6)
على الرغم من أنه أقل سهولة للاستخدام، فإن بنية بديلة هي تحديد رقم المنفذ الدقيق لخدمة SSH، التي عادة ما يتم تعيينها على 22
بشكل افتراضي:
OutputRule added
Rule added (v6)
السماح بـ SSH الوارد من عنوان IP أو شبكة فرعية محددة
للسماح بالاتصالات الواردة من عنوان IP أو شبكة فرعية محددة، ستقوم بتضمين توجيه from
لتحديد مصدر الاتصال. سيتطلب ذلك أيضًا تحديد عنوان الوجهة بمعلمة to
. لتقييد هذه القاعدة لـ SSH فقط، ستحدد المعلمة proto
(البروتوكول) إلى tcp
ثم استخدم المعلمة port
وقم بتعيينها على 22
، منفذ SSH الافتراضي.
الأمر التالي سيسمح فقط باتصالات SSH الواردة من عنوان الآي بي 203.0.113.103
:
OutputRule added
يمكنك أيضًا استخدام عنوان الشبكة الفرعية كمعلمة from
للسماح باتصالات SSH الواردة من شبكة كاملة:
OutputRule added
السماح باتصالات Rsync الواردة من عنوان الآي بي أو الشبكة الفرعية المحددة
برنامج Rsync ، الذي يعمل على المنفذ 873
، يمكن استخدامه لنقل الملفات من جهاز كمبيوتر إلى آخر.
للسماح باتصالات rsync
الواردة من عنوان الآي بي أو الشبكة الفرعية المحددة، استخدم المعلمة from
لتحديد عنوان الآي بي المصدر والمعلمة port
لتعيين المنفذ الوجهة 873
.
الأمر التالي سيسمح فقط باتصالات Rsync الواردة من عنوان الآي بي 203.0.113.103
:
OutputRule added
للسماح بشبكة الشبكة الفرعية بأكملها 203.0.113.0/24
بتنفيذ rsync
إلى خادمك، قم بتشغيل:
OutputRule added
السماح بـ Nginx HTTP / HTTPS
عند التثبيت، يُنشئ خادم الويب Nginx بعض ملفات تعريف UFW المختلفة داخل الخادم. بمجرد تثبيت Nginx وتمكينه كخدمة، قم بتشغيل الأمر التالي لتحديد الملفات التعريفية المتاحة:
Output Nginx Full
Nginx HTTP
Nginx HTTPS
لتمكين حركة المرور على كل من HTTP و HTTPS، اختر Nginx Full
. وإلا، اختر إما Nginx HTTP
للسماح فقط بـ HTTP أو Nginx HTTPS
للسماح فقط بـ HTTPS.
سيسمح الأمر التالي بحركة المرور على كل من HTTP و HTTPS على الخادم (المنافذ 80
و 443
):
OutputRule added
Rule added (v6)
السماح بـ Apache HTTP / HTTPS
عند التثبيت، يُنشئ خادم الويب Apache بعض ملفات تعريف UFW المختلفة داخل الخادم. بمجرد تثبيت Apache وتمكينه كخدمة، قم بتشغيل الأمر التالي لتحديد الملفات التعريفية المتاحة:
Output Apache
Apache Full
Apache Secure
لتمكين حركة المرور على كل من HTTP و HTTPS، اختر Apache Full
. وإلا، اختر إما Apache
لـ HTTP أو Apache Secure
لـ HTTPS.
سيسمح الأمر التالي بحركة المرور على كل من HTTP و HTTPS على الخادم (المنافذ 80
و 443
):
OutputRule added
Rule added (v6)
السماح بجميع حركة المرور الواردة على HTTP (المنفذ 80
)
خوادم الويب، مثل Apache و Nginx، عادة ما تستمع لطلبات HTTP على المنفذ 80
. إذا كانت سياسة الافتراضي للمرور الوارد مضبوطة على الإسقاط أو الرفض، ستحتاج إلى إنشاء قاعدة UFW للسماح بالوصول الخارجي على المنفذ 80
. يمكنك استخدام رقم المنفذ أو اسم الخدمة (http
) كمعلمة لهذا الأمر.
للسماح بجميع اتصالات HTTP الواردة (منفذ 80
)، قم بتشغيل:
OutputRule added
Rule added (v6)
صيغة بديلة هي تحديد رقم المنفذ لخدمة HTTP:
OutputRule added
Rule added (v6)
السماح بجميع اتصالات HTTPS الواردة (منفذ 443
)
تعمل HTTPS عادة على المنفذ 443
. إذا كانت سياسة الافتراضي للمرور الوارد مضبوطة على الإسقاط أو الرفض، ستحتاج إلى إنشاء قاعدة UFW للسماح بالوصول الخارجي على المنفذ 443
. يمكنك استخدام رقم المنفذ أو اسم الخدمة (https
) كمعلمة لهذا الأمر.
للسماح بجميع اتصالات HTTPS الواردة (منفذ 443
)، قم بتشغيل:
OutputRule added
Rule added (v6)
صيغة بديلة هي تحديد رقم المنفذ لخدمة HTTPS:
OutputRule added
Rule added (v6)
السماح بجميع اتصالات HTTP و HTTPS الواردة
إذا كنت ترغب في السماح بحركة المرور عبر HTTP و HTTPS، يمكنك إنشاء قاعدة واحدة تسمح بكلا البورتين. يتطلب هذا الاستخدام أيضًا تعريف البروتوكول باستخدام المعلمة proto
، والتي يجب ضبطها في هذه الحالة على tcp
.
للسماح بجميع اتصالات HTTP و HTTPS الواردة (البورتات 80
و 443
،) قم بتشغيل الأمر التالي:
OutputRule added
Rule added (v6)
السماح باتصال MySQL من عنوان IP محدد أو شبكة فرعية
يستمع MySQL لاتصالات العميل على البورت 3306
. إذا كان خادم قاعدة البيانات MySQL الخاص بك يتم استخدامه من قبل عميل على خادم بعيد، ستحتاج إلى إنشاء قاعدة UFW للسماح بهذا الوصول.
للسماح باتصالات MySQL الواردة من عنوان IP محدد أو شبكة فرعية، استخدم المعلمة from
لتحديد عنوان IP المصدر والمعلمة port
لتعيين بورت الوجهة 3306
.
سيسمح الأمر التالي لعنوان الآي بي 203.0.113.103
بالاتصال ببورت MySQL الخادم:
OutputRule added
للسماح لشبكة الـ 203.0.113.0/24
بأكملها بالاتصال بخادم MySQL الخاص بك، قم بتشغيل:
OutputRule added
السماح باتصال PostgreSQL من عنوان IP محدد أو شبكة فرعية
تستمع PostgreSQL إلى اتصالات العميل على البورت 5432
. إذا كانت خادم قاعدة البيانات PostgreSQL الخاص بك يتم استخدامه من قبل عميل على خادم بعيد، يجب عليك التأكد من السماح بهذا المرور.
للسماح باتصالات PostgreSQL الواردة من عنوان IP محدد أو شبكة فرعية معينة، قم بتحديد المصدر باستخدام المعلمة from
، وضبط البورت على 5432
:
OutputRule added
للسماح لشبكة الشبكة الفرعية بالكامل 203.0.113.0/24
بالاتصال بخادم PostgreSQL الخاص بك، قم بتشغيل:
OutputRule added
حظر إرسال البريد الإلكتروني SMTP الصادر
تستخدم خوادم البريد الإلكتروني، مثل Sendmail و Postfix، عادة البورت 25
لحركة مرور SMTP. إذا كان الخادم الخاص بك لا ينبغي أن يرسل بريدًا إلكترونيًا صادرًا، قد ترغب في منع هذا النوع من حركة المرور. لحظر اتصالات SMTP الصادرة، قم بتشغيل:
OutputRule added
Rule added (v6)
يقوم هذا بتكوين جدار الحماية الخاص بك لإسقاط كل حركة مرور صادرة على البورت 25
. إذا كنت بحاجة إلى رفض الاتصالات الصادرة على رقم بورت مختلف، يمكنك تكرار هذا الأمر واستبدال 25
برقم البورت الذي تريد حظره.
الختام
UFW هي أداة قوية يمكن أن تعزز بشكل كبير أمان خوادمك عند تكوينها بشكل صحيح. يغطي دليل الإشارة هذا بعض القواعد الشائعة لـ UFW التي غالبًا ما تُستخدم لتكوين جدار حماية على أوبونتو.
يمكن تكييف معظم الأوامر في هذا الدليل لتناسب حالات الاستخدام والسيناريوهات المختلفة، من خلال تغيير المعلمات مثل عنوان IP المصدر و / أو منفذ الوجهة. للحصول على معلومات مفصلة حول كل معلمة أمر والمعدلات المتاحة، يمكنك استخدام أداة man
للتحقق من الدليل الخاص بـ UFW:
الصفحة الرسمية لـ UFW على وثائق أوبونتو هي مصدر آخر يمكنك استخدامه كمرجع لحالات الاستخدام المتقدمة والأمثلة.
Source:
https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands