العودة إلى المدونة

إعداد جدار حماية باستخدام FirewallD على CentOS 7

إعداد جدار حماية باستخدام FirewallD على CentOS 7

مقدمة

Firewalld هو حل لإدارة جدار الحماية متاح للعديد من توزيعات Linux. وهو يعمل كواجهة لنظام تصفية حزم iptables الذي توفره نواة Linux. في هذا الدليل، ستتعلم كيفية تكوين جدار حماية لخادمك. سنوضح لك أيضًا أساسيات إدارة جدار الحماية باستخدام أداة الإدارة firewall-cmd.

أساسيات Firewalld

يستخدم FirewallD مفاهيم المناطق (zones) والخدمات (services)، بدلاً من السلاسل (chains) والقواعد (rules) الخاصة بـ iptables. اعتمادًا على المناطق والخدمات التي تقوم بتكوينها، يمكنك التحكم في حركة المرور المسموح بها أو غير المسموح بها من وإلى النظام. يمكن تكوين FirewallD وإدارته باستخدام أداة سطر الأوامر firewall-cmd.

تثبيت جدار الحماية وتمكينه للبدء عند الإقلاع

في معظم توزيعات Linux، يكون firewallD مثبتًا بالفعل. ومع ذلك، إذا كنت بحاجة إلى تثبيته بنفسك، فاكتب الصيغة أدناه:

يمكنك تمكين الخدمة وإعادة تشغيل الخادم بمجرد تثبيت firewalld:

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

check firewall state FirewallD

يوضح المخرج أن إعداد جدار الحماية الافتراضي يعمل.

التحقق من الإعدادات الافتراضية

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

check firewall default zone

تحقق من المنطقة النشطة عن طريق كتابة:

firewall active zones

اطبع تكوين المنطقة الافتراضية لمعرفة القواعد المرفقة بالمنطقة العامة باستخدام هذه صيغة:

list all rules FirewallD

يشير المخرج إلى أن هذه المنطقة هي المنطقة الافتراضية والنشطة في نفس الوقت. كما يوضح أيضًا أنه تم تعيين واجهتي eth0 و eth1 لهذه المنطقة.

التحقق من المناطق البديلة

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

firewall check other zones

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

check zone configuration FirewallD

 تغيير منطقة الواجهة

يمكنك بسهولة تغيير منطقة الواجهة باستخدام الخيار –change-interface مدمجًا مع الخيار –change-interface. سيقوم الأمر التالي بتعيين الواجهة eth1 إلى مساحة العمل:

يمكنك التحقق من التغييرات عن طريق كتابة:

changing firewall interface zones FirewallD

تغيير المنطقة الافتراضية

لتغيير المنطقة الافتراضية، استخدم –set-default-zone متبوعًا باسم المنطقة التي تريد تعيينها كافتراضية. على سبيل المثال، لتغيير المنطقة الافتراضية إلى start، يجب تشغيل الأمر التالي:

بعد ذلك، يمكنك التحقق من التغييرات باستخدام:

firewall change default zone

إعداد القواعد لتطبيقاتك

دعنا نمر عبر الأساسيات المطلوبة لتحديد استثناءات جدار الحماية للخدمات:

إضافة خدمة إلى مناطقك

الطريقة الأكثر مباشرة هي إضافة المنافذ أو الخدمات التي تحتاجها إلى المناطق التي تستخدمها. وبالمثل، يمكنك استخدام الخيار –get-services لرؤية جميع الخدمات المتاحة:

firewall get services FirewallD

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

يمكنك حذف –zone = إذا كنت تريد تغيير المنطقة الافتراضية. يمكنك التحقق من نجاح العملية باستخدام العمليتين –list-all أو –list-services:

add service to zone

بمجرد التحقق من أن كل شيء يعمل كما هو متوقع، فمن المرجح أنك سترغب في تغيير قواعد جدار الحماية الدائمة لتظل خدمتك متاحة بعد إعادة التشغيل. يمكننا إجراء التغيير على المنطقة “public” الخاصة بنا بشكل دائم عن طريق إدخال الصيغة التالية:

يمكنك التحقق مما إذا كان هذا ناجحًا عن طريق إضافة علامة –permanent إلى عملية –list-services. يجب عليك استخدام sudo لجميع العمليات الدائمة –all:

تسمح المنطقة “public” الآن بحركة مرور HTTP على المنفذ 80. يمكنك إضافة هذا إلى الجلسة الحالية ومجموعة القواعد الدائمة باستخدام الأمر أدناه:

إذا لم تكن هناك خدمات تناسب متطلباتك، فلديك خياران ممتازان للتعامل مع هذا الموقف:

  1. فتح منفذ لمناطقك

الطريقة الأكثر مباشرة لإضافة الدعم لتطبيقك الخاص هي فتح المنافذ المستخدمة في كل منطقة. الأمر بسيط للغاية مثل تحديد منفذ أو نطاق منافذ والبروتوكول المقابل للمنافذ التي تحتاج إلى فتحها. على سبيل المثال، إذا كان تطبيقك يعمل على المنفذ 5000 ويستخدم TCP، فيمكنك إضافته إلى المنطقة “public” لهذه الجلسة باستخدام المعلمة –add-port =. يمكن أن تكون البروتوكولات TCP أو UDP:

من أجل التحقق من نجاح العملية، استخدم عملية –list-ports:

يمكنك أيضًا تحديد نطاق للواجهة التسلسلية عن طريق الفصل بين منفذي البداية والنهاية في النطاق بواصلة. على سبيل المثال، إذا كان تطبيقك يستخدم منافذ UDP من 4990 إلى 4999، فيمكنك فتحها في “public” عن طريق كتابة:

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

adding ports to permanent firewall

  1. تعريف خدمة

الخدمة هي عبارة عن مجموعة من المنافذ مع اسم ووصف مرتبطين بها. إدارة الخدمات أسهل من إدارة المنافذ، ولكنها تتطلب بعض العمل الأولي. الطريقة الأكثر مباشرة للبدء هي نسخ برنامج نصي موجود (في / usr / lib / firewalld / services) إلى دليل /etc/firewalld/services. على سبيل المثال، يمكنك نسخ تعريف خدمة SSH لاستخدامه في تعريف الخدمة “example” على النحو التالي. يحدد اسم الملف مطروحًا منه لاحقة XML اسم الخدمة في قائمة خدمات جدار الحماية:

في هذه المرحلة، يمكنك ضبط التعريف في الملف المنسوخ:

أولاً، يحتوي الملف على تعريف SSH الذي قمت بنسخه:

يتكون معظم هذا التعريف من بيانات وصفية. يجب عليك تغيير الاسم القصير للخدمة في علامات <short>. هذا اسم خدمة مقروء. تخيل أنه بالنسبة لخدمتنا “example”، يتعين علينا فتح المنفذ 7777 لبروتوكول TCP والمنفذ 8888 لبروتوكول UDP. يمكنك تغيير التعريف الحالي بالدخول إلى وضع INSERT بالضغط على i:

بعد ذلك، اضغط على ESC واكتب :x لحفظ الملف وإغلاقه. ثم اكتب الأمر أدناه لإعادة تشغيل جدار الحماية الخاص بك من أجل الوصول إلى خدمتك الجديدة؛

بعد ذلك، استخدم الأمر أدناه للحصول على قائمة بالخدمات المتاحة:

get services

هذه الخدمة متاحة الآن في منطقتك.

إنشاء مناطقك الخاصة

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

عند إضافة منطقة، أضفها إلى إعدادات جدار الحماية الدائمة لديك. ثم يمكنك إعادة التحميل لتطبيق الإعدادات على جلستك الحالية. على سبيل المثال، يمكنك إنشاء المنطقتين اللتين تمت مناقشتهما سابقًا عن طريق كتابة:

يمكنك التأكد من وجودها في تكوينك الدائم باستخدام هذا الأمر:

firewall zones

أعد تحميل جدار الحماية لإدخال هذه المناطق الجديدة في التكوين النشط:

الآن، يمكنك تعيين الخدمات والمنافذ المناسبة للمناطق الخاصة بك. على سبيل المثال، بالنسبة لمنطقة “publicweb” قد ترغب في إضافة خدمات SSH و HTTP و HTTPS:

list public web zone

 

أيضًا، يمكنك إضافة خدمة DNS إلى منطقة “privateDNS” الخاصة بك باستخدام هذا الأمر:

list privateDNS zone FirewallD

بعد ذلك، يمكنك تغيير الواجهات الخاصة بك إلى هذه المناطق الجديدة لاختبارها:

اختبر التكوين لمعرفة ما إذا كان يعمل. إذا كانت هذه القيم تعمل معك، فيجب عليك إضافة نفس القواعد إلى التكوين الدائم. يمكنك القيام بذلك عن طريق إعادة تطبيق القواعد باستخدام مؤشر —permanent:

 

بعد تطبيق هذه القواعد بشكل دائم، يمكنك إعادة تشغيل الشبكة وإعادة تحميل خدمة جدار الحماية:

تحقق من أنه تم تعيين المناطق بشكل صحيح:

check active zones FirewallD

علاوة على ذلك، تأكد من أن كلا المنطقتين تحتويان على الخدمة الصحيحة:

إذا كنت تريد تعيين إحدى مناطقك كمنطقة افتراضية للواجهات الأخرى، فيجب عليك تكوين هذا السلوك باستخدام المعلمة –set-default-zone= باستخدام هذا الأمر:

الخاتمة

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

حوسبة سعيدة!

 

author

Akshay Nagpal

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

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