مقدمة
UFW، أو جدار الحماية غير المعقد، هو واجهة إدارة جدار حماية مبسطة تخفي تعقيد تقنيات تصفية الحزم على مستوى منخفض مثل iptables
و nftables
. إذا كنت تبحث عن بدء تأمين شبكتك، ولست متأكدًا من الأداة التي يجب استخدامها، فقد يكون UFW هو الخيار الصحيح بالنسبة لك.
سوف يوضح لك هذا البرنامج التعليمي كيفية إعداد جدار حماية باستخدام UFW على Debian 11.
المتطلبات المسبقة
لمتابعة هذا البرنامج التعليمي، ستحتاج إلى خادم Debian 11 واحد يحتوي على مستخدم sudo
غير root، والذي يمكنك إعداده عن طريق اتباع الخطوة 1 إلى 3 في برنامج التعليمي إعداد الخادم الأولي مع Debian 11.
الخطوة 1 – تثبيت UFW
ديبيان لا تقوم بتثبيت UFW افتراضيًا. إذا اتبعت كل دليل إعداد الخادم الأولي، فسوف تكون قد قمت بتثبيت UFW وتم تمكينه. إذا لم تفعل ذلك، قم بتثبيته الآن باستخدام apt
:
سوف تقوم بإعداد UFW وتمكينه في الخطوات التالية.
الخطوة 2 — استخدام IPv6 مع UFW (اختياري)
تم كتابة هذا الدليل مع الأخذ بعين الاعتبار IPv4 ولكنه سيعمل مع IPv6 أيضًا إذا قمت بتمكينه. إذا كانت خادمك Debian مفعلًا لـ IPv6، فسترغب في التأكد من تكوين UFW لدعم IPv6. سيضمن هذا أن UFW ستدير قواعد جدار الحماية لـ IPv6 بالإضافة إلى IPv4. لتكوين هذا، افتح ملف تكوين UFW /etc/default/ufw
باستخدام nano
أو محررك المفضل:
ابحث عن IPV6
في الملف وتأكد من أن القيمة هي yes
:
IPV6=yes
احفظ وأغلق الملف. إذا كنت تستخدم nano
، اضغط CTRL+X
، ثم Y
، ثم ENTER
لحفظ التغييرات والخروج من الملف.
الآن عند تمكين UFW، سيتم تكوينه لكتابة قواعد جدار الحماية لكل من IPv4 و IPv6. قبل تمكين UFW، مع ذلك، سترغب في التأكد من أن جدار الحماية مكون للسماح لك بالاتصال عبر SSH. ابدأ بتعيين السياسات الافتراضية.
الخطوة 3 — إعداد السياسات الافتراضية
إذا كنت تبدأ للتو مع جدار الحماية الخاص بك، فإن أول القواعد التي يجب تعريفها هي السياسات الافتراضية الخاصة بك. تدير هذه القواعد حركة المرور التي لا تتطابق صراحة مع أي قواعد أخرى. افتراضيًا، يتم تعيين UFW لرفض جميع الاتصالات الواردة والسماح بجميع الاتصالات الصادرة. هذا يعني أن أي شخص يحاول الوصول إلى خادمك لن يكون قادرًا على الاتصال، في حين أن أي تطبيق داخل الخادم سيكون قادرًا على الوصول إلى العالم الخارجي.
قم بتعيين قواعد UFW الخاصة بك إلى القيم الافتراضية حتى تتمكن من التأكد من قدرتك على متابعة هذا البرنامج التعليمي. لتعيين القيم الافتراضية المستخدمة بواسطة UFW، استخدم هذه الأوامر:
سوف تتلقى نتائج مثل التالي:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
تعيين هذه الأوامر للقيم الافتراضية لرفض الاتصالات الواردة والسماح بالاتصالات الصادرة. قد تكون هذه القيم الافتراضية لجدار الحماية وحدها كافية لجهاز الكمبيوتر الشخصي، ولكن الخوادم عادةً ما تحتاج إلى الرد على الطلبات الواردة من المستخدمين الخارجيين. ستبدأ هذه العملية في الخطوة التالية.
الخطوة 4 — السماح باتصالات SSH
لا يمكنك تمكين جدار الحماية UFW الخاص بك بعد، لأنه سيحظر جميع الاتصالات الواردة بما في ذلك محاولات الوصول إلى خادمك. هذا يعني أنك ستحتاج إلى إنشاء قواعد تسمح صراحة بالاتصالات الواردة الشرعية – مثل اتصالات SSH أو HTTP، على سبيل المثال – إذا كنت ترغب في أن يستجيب خادمك لهذه الأنواع من الطلبات. إذا كنت تستخدم خادم سحابيًا، فمن المحتمل أن ترغب في السماح باتصالات SSH الواردة حتى تتمكن من الاتصال بخادمك وإدارته.
لتكوين خادمك للسماح باتصالات SSH الواردة، استخدم هذا الأمر:
سينشئ هذا الأمر قواعد جدار الحماية التي ستسمح بجميع الاتصالات على منفذ 22
، وهو المنفذ الذي يستمع إليه ديمون SSH افتراضيًا. يعرف UFW أي منفذ مرتبط بـ ssh السماح
لأنه مُدرج كخدمة في ملف /etc/services
.
ومع ذلك، يمكنك كتابة القاعدة المعادلة بالفعل عن طريق تحديد المنفذ بدلاً من اسم الخدمة. على سبيل المثال، ينتج هذا الأمر نفس النتيجة كما الأمر السابق:
إذا قمت بتكوين ديمون SSH الخاص بك لاستخدام منفذ مختلف، سيتعين عليك تحديد المنفذ المناسب. على سبيل المثال، إذا كان خادم SSH الخاص بك يستمع على المنفذ 2222
، يمكنك استخدام نفس الأمر ولكن استبدال 22
بـ 2222
.
الآن بعد أن تم تكوين جدار الحماية الخاص بك للسماح باتصالات SSH الواردة، يمكنك تمكينه.
الخطوة 5 – تمكين UFW
لتمكين UFW، استخدم هذا الأمر:
ستتلقى تحذيرًا يُفيد بأن الأمر قد يؤدي إلى تعطيل اتصالات SSH الحالية. لقد قمت بالفعل بإعداد قاعدة جدار حماية تسمح باتصالات SSH، لذا يجب أن يكون من الآمن المتابعة. ارد على الرسالة بإدخال y
ثم الضغط على ENTER
.
الجدار الناري نشط الآن. لرؤية القواعد التي قمت بتعيينها، قم بتشغيل هذا الأمر:
بقية هذا البرنامج التعليمي يشرح كيفية استخدام UFW بمزيد من التفصيل، بما في ذلك السماح والرفض لأنواع مختلفة من الاتصالات.
الخطوة 6 — السماح بالاتصالات الأخرى
في هذه المرحلة، يجب عليك السماح بجميع الاتصالات الأخرى التي يحتاجها الخادم الخاص بك للعمل بشكل صحيح. الاتصالات التي يجب عليك السماح بها تعتمد على احتياجاتك الخاصة. لقد عرفت بالفعل كيفية كتابة القواعد التي تسمح بالاتصالات استنادًا إلى اسم الخدمة أو المنفذ؛ لقد فعلت ذلك لـ SSH على المنفذ 22
.
يمكنك القيام بذلك أيضًا لـ HTTP على المنفذ 80
، وهو ما يستخدمه خوادم الويب غير المشفرة. للسماح بهذا النوع من حركة المرور، يمكنك كتابة:
يمكنك أيضًا القيام بذلك لـ HTTPS على المنفذ 443
، وهو ما يستخدمه خوادم الويب المشفرة. للسماح بهذا النوع من حركة المرور، يمكنك كتابة:
في كلا السيناريو، سيعمل تحديد المنافذ أيضًا، مع HTTP يكون 80
وHTTPS يكون 443
. على سبيل المثال:
هناك طرق أخرى للسماح بالاتصالات، ولكن بجانب تحديد المنفذ أو الخدمة المعروفة. سنناقش هذا في الخطوة التالية.
نطاقات المنافذ المحددة
يمكنك تحديد نطاقات المنافذ باستخدام UFW. على سبيل المثال، تستخدم بعض التطبيقات عدة منافذ بدلاً من منفذ واحد.
على سبيل المثال، للسماح باتصالات X11
، التي تستخدم منافذ 6000
–6007
، استخدم هذه الأوامر:
عند تحديد نطاقات المنافذ باستخدام UFW، يجب عليك تحديد البروتوكول (tcp
أو udp
) الذي ينبغي تطبيق القواعد عليه. لم يتم ذكر هذا من قبل لأن عدم تحديد البروتوكول يسمح تلقائياً بكلا البروتوكولين، وهو مقبول في معظم الحالات.
عناوين IP المحددة
عند العمل مع UFW، يمكنك أيضاً تحديد عناوين IP. على سبيل المثال، إذا كنت ترغب في السماح بالاتصالات من عنوان IP معين، مثل عنوان IP للعمل أو المنزل 203.0.113.4
، يجب عليك تحديد from
وبعد ذلك عنوان IP:
يمكنك أيضاً تحديد منفذ محدد يمكن لعنوان الـ IP الاتصال به من خلال إضافة to any port
تليه رقم المنفذ. على سبيل المثال، إذا كنت ترغب في السماح لـ 203.0.113.4
بالاتصال بالمنفذ 22
(SSH)، استخدم هذا الأمر:
الشبكات الفرعية
إذا كنت ترغب في السماح بشبكة فرعية من عناوين IP، يمكنك القيام بذلك باستخدام تدوين CIDR لتحديد قناع الشبكة. على سبيل المثال، إذا كنت ترغب في السماح بجميع عناوين IP التي تتراوح من 203.0.113.1
إلى 203.0.113.254
يمكنك استخدام هذا الأمر:
بالمثل، يمكنك أيضًا تحديد منفذ الوجهة الذي يُسمح لشبكة الفرعية 203.0.113.0/24
بالاتصال به. مرة أخرى، باستخدام المنفذ 22
(SSH) كمثال:
الاتصالات بواجهة شبكة محددة
إذا كنت ترغب في إنشاء قاعدة جدار حماية تنطبق فقط على واجهة شبكة محددة، يمكنك القيام بذلك عن طريق تحديد allow in on
، تليه اسم واجهة الشبكة.
سيكون من المفيد البحث عن واجهات الشبكة الخاصة بك قبل الاستمرار. للقيام بذلك، استخدم هذا الأمر:
Output. . .
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 إليه باستخدام هذا الأمر:
بذلك سيتمكن خادمك من استقبال طلبات HTTP من الإنترنت العام.
أو، إذا كنت ترغب في جعل خادم قاعدة بيانات MySQL (المنفذ 3306
) يستمع للاتصالات على واجهة الشبكة الخاصة eth1
، يمكنك استخدام هذا الأمر:
سيسمح هذا بالاتصال بقواعد البيانات MySQL الخاصة بك من خوادم أخرى على شبكتك الخاصة.
الخطوة 7 — رفض الاتصالات
إذا لم تقم بتغيير السياسة الافتراضية للاتصالات الواردة، فإن UFW مضبوطة لرفض جميع الاتصالات الواردة عمومًا، وهذا يبسط عملية إنشاء سياسة جدار حماية آمنة من خلال طلبك بإنشاء قواعد تسمح صراحة بمنافذ وعناوين IP معينة.
في بعض الأحيان قد ترغب في رفض اتصالات معينة استنادًا إلى عنوان IP المصدر أو الشبكة الفرعية، وربما لأنك تعلم أن خادمك يتعرض لهجوم من هناك. أيضًا، إذا كنت ترغب في تغيير السياسة الافتراضية الواردة لديك إلى السماح
(وهو ليس مستحسنًا)، فسوف تحتاج إلى إنشاء قواعد رفض
لأي خدمات أو عناوين IP لا ترغب في السماح بالاتصال بها.
لكتابة قواعد رفض
، يمكنك استخدام الأوامر الموضحة أعلاه، مع استبدال السماح
بـ الرفض
.
على سبيل المثال، لرفض اتصالات HTTP، يمكنك استخدام هذا الأمر:
أو إذا كنت ترغب في رفض جميع الاتصالات من 203.0.113.4
يمكنك استخدام هذا الأمر:
الآن، يمكنك أن تتعلم كيفية تنفيذ قواعد الحذف.
الخطوة 8 — حذف القواعد
معرفة كيفية حذف قواعد جدار الحماية مهمة بنفس القدر من معرفة كيفية إنشائها. هناك طريقتان لتحديد القواعد التي سيتم حذفها: حسب رقم القاعدة أو حسب القاعدة نفسها. هذا مشابه لكيفية تحديد القواعد عند إنشائها.
حسب رقم القاعدة
إذا كنت تستخدم رقم القاعدة لحذف قواعد جدار الحماية، فإن أول ما سترغب في القيام به هو الحصول على قائمة بقواعد جدار الحماية الخاصة بك. تحتوي أمر UFW status
على الخيار numbered
، الذي يعرض أرقامًا بجانب كل قاعدة:
OutputStatus: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
إذا قررت أنك تريد حذف القاعدة 2
، التي تسمح باتصالات HTTP على المنفذ 80
، يمكنك تحديد ذلك في أمر UFW delete
التالي:
سيظهر لك مربع حوار تأكيد، يمكنك الرد عليه بـ y/n
. كتابة y
ستحذف بعد ذلك القاعدة 2
. يرجى ملاحظة أنه إذا كان IPv6 مفعّلًا، فسترغب في حذف القاعدة المقابلة لـ IPv6 أيضًا.
بواسطة القاعدة الفعلية
البديل عن أرقام القواعد هو تحديد القاعدة الفعلية التي تريد حذفها. على سبيل المثال، إذا كنت تريد إزالة قاعدة allow http
، يمكنك كتابتها بهذه الطريقة:
يمكنك أيضًا تحديد القاعدة باستخدام allow 80
بدلاً من اسم الخدمة:
سيقوم هذا الأسلوب بحذف القواعد IPv4 و IPv6، إذا كانت موجودة.
الخطوة 9 — التحقق من حالة وقواعد UFW
يمكنك في أي وقت التحقق من حالة UFW باستخدام هذا الأمر:
إذا كان UFW معطلًا، وهو الوضع الافتراضي، سيكون الناتج كالتالي:
OutputStatus: inactive
إذا كان UFW نشطًا، كما ينبغي إذا كنت قد اتبعت الخطوة 3، ستقول النتيجة أنه نشط وستقوم بسرد أي قواعد قمت بتعيينها. على سبيل المثال، إذا كانت جدار الحماية مضبوطًا للسماح باتصالات SSH (المنفذ 22
) من أي مكان، قد تتضمن النتيجة شيئًا مثل هذا:
OutputStatus: active
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
استخدم الأمر status
إذا كنت ترغب في التحقق من كيفية تكوين جدار الحماية باستخدام UFW.
الخطوة 10 — تعطيل أو إعادة ضبط UFW (اختياري)
إذا قررت عدم استخدام UFW، يمكنك تعطيله باستخدام هذا الأمر:
أيُّ قواعد قمتَ بإنشائها باستخدام UFW لن تكون نشطة بعد الآن. يمكنك دائمًا تشغيل sudo ufw enable
إذا كنت بحاجة لتنشيطه لاحقًا.
إذا كانت لديك بالفعل قواعد UFW مكونة، ولكنك تقرر أن تبدأ من جديد، يمكنك استخدام الأمر reset:
سيؤدي هذا إلى تعطيل UFW وحذف أي قواعد قمتَ بتعريفها مسبقًا. تذكر أن السياسات الافتراضية لن تتغير إلى إعداداتها الأصلية إذا قمتَ بتعديلها في أي وقت مضى. يجب أن يمنحك هذا بداية جديدة مع UFW.
الاستنتاج
تم تكوين جدار الحماية الخاص بك الآن للسماح (على الأقل) باتصالات SSH. تأكد من السماح بأي اتصالات واردة أخرى يحتاجها خادمك، مع الحد من الاتصالات غير الضرورية. سيضمن هذا أن يكون خادمك وظيفيًا وآمنًا.
لمعرفة المزيد حول تكوينات UFW الشائعة، تحقق من هذا البرنامج التعليمي حول UFW Essentials: Common Firewall Rules and Commands.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian