مقدمة
Firewalld هو حل لإدارة جدار الحماية متاح للعديد من توزيعات Linux. وهو يعمل كواجهة لنظام تصفية حزم iptables الذي توفره نواة Linux. في هذا الدليل، ستتعلم كيفية تكوين جدار حماية لخادمك. سنوضح لك أيضًا أساسيات إدارة جدار الحماية باستخدام أداة الإدارة firewall-cmd.
أساسيات Firewalld
يستخدم FirewallD مفاهيم المناطق (zones) والخدمات (services)، بدلاً من السلاسل (chains) والقواعد (rules) الخاصة بـ iptables. اعتمادًا على المناطق والخدمات التي تقوم بتكوينها، يمكنك التحكم في حركة المرور المسموح بها أو غير المسموح بها من وإلى النظام. يمكن تكوين FirewallD وإدارته باستخدام أداة سطر الأوامر firewall-cmd.
تثبيت جدار الحماية وتمكينه للبدء عند الإقلاع
في معظم توزيعات Linux، يكون firewallD مثبتًا بالفعل. ومع ذلك، إذا كنت بحاجة إلى تثبيته بنفسك، فاكتب الصيغة أدناه:
|
1 |
sudo yum install firewalld |
يمكنك تمكين الخدمة وإعادة تشغيل الخادم بمجرد تثبيت firewalld:
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
بعد ذلك، أعد تشغيل الخادم الخاص بك. سيتم تمكين جدار الحماية الخاص بك عند إعادة تشغيل الخادم بنجاح. بعد ذلك، استخدم الأمر أدناه للتحقق من تنشيط الخدمة:
|
1 |
sudo firewall-cmd --state |

يوضح المخرج أن إعداد جدار الحماية الافتراضي يعمل.
التحقق من الإعدادات الافتراضية
يمكنك التحقق من المنطقة المحددة بواسطة الخادم باستخدام هذا الأمر:
|
1 |
firewall-cmd --get-default-zone |

تحقق من المنطقة النشطة عن طريق كتابة:
|
1 |
firewall-cmd --get-active-zones |

اطبع تكوين المنطقة الافتراضية لمعرفة القواعد المرفقة بالمنطقة العامة باستخدام هذه صيغة:
|
1 |
sudo firewall-cmd --list-all |

يشير المخرج إلى أن هذه المنطقة هي المنطقة الافتراضية والنشطة في نفس الوقت. كما يوضح أيضًا أنه تم تعيين واجهتي eth0 و eth1 لهذه المنطقة.
التحقق من المناطق البديلة
بالإضافة إلى المناطق الافتراضية والنشطة، هناك مناطق أخرى يمكنك استكشافها. أدخل هذا الأمر لرؤية جميع المناطق المتاحة:
|
1 |
firewall-cmd --get-zones |

تحقق من التكوين الخاص المعين لمنطقة ما عن طريق إضافة –zone= في الأمر –list-all:
|
1 |
sudo firewall-cmd --zone=home --list-all |

تغيير منطقة الواجهة
يمكنك بسهولة تغيير منطقة الواجهة باستخدام الخيار –change-interface مدمجًا مع الخيار –change-interface. سيقوم الأمر التالي بتعيين الواجهة eth1 إلى مساحة العمل:
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
يمكنك التحقق من التغييرات عن طريق كتابة:
|
1 |
sudo firewall-cmd --get-active-zones |
تغيير المنطقة الافتراضية
لتغيير المنطقة الافتراضية، استخدم –set-default-zone متبوعًا باسم المنطقة التي تريد تعيينها كافتراضية. على سبيل المثال، لتغيير المنطقة الافتراضية إلى start، يجب تشغيل الأمر التالي:
|
1 |
sudo firewall-cmd --set-default-zone=home |
بعد ذلك، يمكنك التحقق من التغييرات باستخدام:
|
1 |
sudo firewall-cmd --get-default-zone |
إعداد القواعد لتطبيقاتك
دعنا نمر عبر الأساسيات المطلوبة لتحديد استثناءات جدار الحماية للخدمات:
إضافة خدمة إلى مناطقك
الطريقة الأكثر مباشرة هي إضافة المنافذ أو الخدمات التي تحتاجها إلى المناطق التي تستخدمها. وبالمثل، يمكنك استخدام الخيار –get-services لرؤية جميع الخدمات المتاحة:
|
1 |
firewall-cmd --get-services |

يمكنك تفعيل الخدمة لمنطقة ما باستخدام المعلمة –add-service =. يستهدف هذا الإجراء المنطقة الافتراضية أو أي منطقة محددة بواسطة المعلمة –zone =. بشكل افتراضي، يتم تكوين جلسة جدار الحماية الحالية فقط. يمكنك إعداد تكوين دائم لجدار الحماية عن طريق تفعيل علامة –permanent. على سبيل المثال، إذا كنت تقوم بتشغيل خادم ويب يوفر حركة مرور HTTP عادية، فيمكنك السماح بحركة المرور هذه للواجهات في المنطقة “public” الخاصة بنا لهذه الجلسة عن طريق إدخال:
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
يمكنك حذف –zone = إذا كنت تريد تغيير المنطقة الافتراضية. يمكنك التحقق من نجاح العملية باستخدام العمليتين –list-all أو –list-services:
|
1 |
sudo firewall-cmd --zone=public --list-services |

بمجرد التحقق من أن كل شيء يعمل كما هو متوقع، فمن المرجح أنك سترغب في تغيير قواعد جدار الحماية الدائمة لتظل خدمتك متاحة بعد إعادة التشغيل. يمكننا إجراء التغيير على المنطقة “public” الخاصة بنا بشكل دائم عن طريق إدخال الصيغة التالية:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http output: success |
يمكنك التحقق مما إذا كان هذا ناجحًا عن طريق إضافة علامة –permanent إلى عملية –list-services. يجب عليك استخدام sudo لجميع العمليات الدائمة –all:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services output: dhcpv6-client http ssh |
تسمح المنطقة “public” الآن بحركة مرور HTTP على المنفذ 80. يمكنك إضافة هذا إلى الجلسة الحالية ومجموعة القواعد الدائمة باستخدام الأمر أدناه:
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
إذا لم تكن هناك خدمات تناسب متطلباتك، فلديك خياران ممتازان للتعامل مع هذا الموقف:
- فتح منفذ لمناطقك
الطريقة الأكثر مباشرة لإضافة الدعم لتطبيقك الخاص هي فتح المنافذ المستخدمة في كل منطقة. الأمر بسيط للغاية مثل تحديد منفذ أو نطاق منافذ والبروتوكول المقابل للمنافذ التي تحتاج إلى فتحها. على سبيل المثال، إذا كان تطبيقك يعمل على المنفذ 5000 ويستخدم TCP، فيمكنك إضافته إلى المنطقة “public” لهذه الجلسة باستخدام المعلمة –add-port =. يمكن أن تكون البروتوكولات TCP أو UDP:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp output: success |
من أجل التحقق من نجاح العملية، استخدم عملية –list-ports:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Output: 5000/tcp |
يمكنك أيضًا تحديد نطاق للواجهة التسلسلية عن طريق الفصل بين منفذي البداية والنهاية في النطاق بواصلة. على سبيل المثال، إذا كان تطبيقك يستخدم منافذ UDP من 4990 إلى 4999، فيمكنك فتحها في “public” عن طريق كتابة:
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
بعد الاختبار، سنرغب على الأرجح في إضافتها إلى جدار الحماية الدائم. يمكنك القيام بذلك عن طريق كتابة ما يلي:
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- تعريف خدمة
الخدمة هي عبارة عن مجموعة من المنافذ مع اسم ووصف مرتبطين بها. إدارة الخدمات أسهل من إدارة المنافذ، ولكنها تتطلب بعض العمل الأولي. الطريقة الأكثر مباشرة للبدء هي نسخ برنامج نصي موجود (في / usr / lib / firewalld / services) إلى دليل /etc/firewalld/services. على سبيل المثال، يمكنك نسخ تعريف خدمة SSH لاستخدامه في تعريف الخدمة “example” على النحو التالي. يحدد اسم الملف مطروحًا منه لاحقة XML اسم الخدمة في قائمة خدمات جدار الحماية:
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
في هذه المرحلة، يمكنك ضبط التعريف في الملف المنسوخ:
|
1 |
sudo vi /etc/firewalld/services/example.xml |
أولاً، يحتوي الملف على تعريف SSH الذي قمت بنسخه:
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>الآمنة القشرة (SSH) هو a بروتوكول لـ تسجيل الدخول إلى و تنفيذ الأوامر على الأجهزة البعيدة. وهو يوفر اتصالات مشفرة آمنة. إذا كنت تخطط للـوصول إلى جهازك machine عن بعد عبر SSH عبر a واجهة محمية بجدار حمايةinterface, فقم بتمكين هذا الخيار. أنت بحاجة إلى the openssh--server حزمة مثبتة لكي يكون هذا الخيار مفيدًا be useful.</description> <port protocol="tcp" port="22"/> </service> |
يتكون معظم هذا التعريف من بيانات وصفية. يجب عليك تغيير الاسم القصير للخدمة في علامات <short>. هذا اسم خدمة مقروء. تخيل أنه بالنسبة لخدمتنا “example”، يتعين علينا فتح المنفذ 7777 لبروتوكول TCP والمنفذ 8888 لبروتوكول UDP. يمكنك تغيير التعريف الحالي بالدخول إلى وضع INSERT بالضغط على i:
|
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>خدمة مثال</short> <description>هذه is مجرد an خدمة تجريبية. It ربما لا ينبغي 't استخدامها used على a نظام حقيقي.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
بعد ذلك، اضغط على ESC واكتب :x لحفظ الملف وإغلاقه. ثم اكتب الأمر أدناه لإعادة تشغيل جدار الحماية الخاص بك من أجل الوصول إلى خدمتك الجديدة؛
|
1 |
sudo firewall-cmd --reload |
بعد ذلك، استخدم الأمر أدناه للحصول على قائمة بالخدمات المتاحة:
|
1 |
firewall-cmd --get-services |

هذه الخدمة متاحة الآن في منطقتك.
إنشاء مناطقك الخاصة
في حين أن المناطق المحددة مسبقًا قد تكون كافية لمعظم المستخدمين، فقد يكون من المفيد تحديد مناطقك الخاصة التي تصف وظيفتها بشكل كامل.
عند إضافة منطقة، أضفها إلى إعدادات جدار الحماية الدائمة لديك. ثم يمكنك إعادة التحميل لتطبيق الإعدادات على جلستك الحالية. على سبيل المثال، يمكنك إنشاء المنطقتين اللتين تمت مناقشتهما سابقًا عن طريق كتابة:
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
يمكنك التأكد من وجودها في تكوينك الدائم باستخدام هذا الأمر:
|
1 |
sudo firewall-cmd --permanent --get-zones |

أعد تحميل جدار الحماية لإدخال هذه المناطق الجديدة في التكوين النشط:
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones الناتج: block dmz drop external home internal privateDNS public publicweb trusted work |
الآن، يمكنك تعيين الخدمات والمنافذ المناسبة للمناطق الخاصة بك. على سبيل المثال، بالنسبة لمنطقة “publicweb” قد ترغب في إضافة خدمات SSH و HTTP و HTTPS:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

أيضًا، يمكنك إضافة خدمة DNS إلى منطقة “privateDNS” الخاصة بك باستخدام هذا الأمر:
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

بعد ذلك، يمكنك تغيير الواجهات الخاصة بك إلى هذه المناطق الجديدة لاختبارها:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
اختبر التكوين لمعرفة ما إذا كان يعمل. إذا كانت هذه القيم تعمل معك، فيجب عليك إضافة نفس القواعد إلى التكوين الدائم. يمكنك القيام بذلك عن طريق إعادة تطبيق القواعد باستخدام مؤشر —permanent:
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
بعد تطبيق هذه القواعد بشكل دائم، يمكنك إعادة تشغيل الشبكة وإعادة تحميل خدمة جدار الحماية:
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
تحقق من أنه تم تعيين المناطق بشكل صحيح:
|
1 |
firewall-cmd --get-active-zones |

علاوة على ذلك، تأكد من أن كلا المنطقتين تحتويان على الخدمة الصحيحة:
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services الناتج: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services الناتج: dns |
إذا كنت تريد تعيين إحدى مناطقك كمنطقة افتراضية للواجهات الأخرى، فيجب عليك تكوين هذا السلوك باستخدام المعلمة –set-default-zone= باستخدام هذا الأمر:
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
الخاتمة
عند هذه النقطة، تكون قد أنشأت مناطقك الخاصة بنجاح. يجب أن يكون لديك فهم أساسي لإدارة خدمة firewalld على نظام CentOS الخاص بك للاستخدام اليومي. يتيح لك الفهم الجيد لخدمة firewalld الاستفادة الكاملة من قوتها ومرونتها.
حوسبة سعيدة!


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