الرئيسية
» لينوكس
»
كيفية تكوين جدار الحماية SLES 15 باستخدام firewall-cmd
كيفية تكوين جدار الحماية SLES 15 باستخدام firewall-cmd
قد تعمل خدمة ما على خادم SLES 15، ومع ذلك قد تواجه مشكلة انقطاع الاتصال من قبل العملاء البعيدين بسبب حظر جدار الحماية لحركة البيانات الواردة الجديدة. الحل عادةً هو تحديد منطقة جدار الحماية النشطة والسماح فقط للخدمة أو المنفذ الذي يحتاجه التطبيق. أداة سطر الأوامر الخاصة بـ SLES لهذا الغرض هي firewall-cmd...
يتبع هذا الدليل دليل الأمان والتحصين الخاص بنظام SLES 15 SP7 من SUSE، بالإضافة إلى مرجع أوامر firewalld، وقد تمت مراجعته في 7 أكتوبر 2026. قد تختلف حالات أو إعدادات جدار الحماية القديمة في حزم الخدمة السابقة وأنظمة SLES 12 المُحدَّثة. تُظهر صور الطرفية أمثلة توضيحية، وليست نتائج مُلتقطة من خادم حقيقي؛ استبدل أسماء الواجهات والمناطق والخدمات بالقيم الموجودة على جهازك.
1. تأكد من أن برنامج firewalld قيد التشغيل
تُوثّق SUSE أن برنامج firewalld مُثبّت ومُفعّل افتراضيًا على نظام SLES 15. يقوم YaST عادةً بتشغيله بعد التثبيت ويضع واجهات الشبكة في publicالمنطقة الافتراضية. مع ذلك، يُنصح بفحص الجهاز بدلًا من افتراض عدم تغيير الإعدادات الافتراضية. نفّذ هذه الأوامر باستخدام حساب مُصرّح له باستخدامها sudo:
sudo systemctl status firewalld
sudo firewall-cmd --state
يجب أن يُبلغ مدير الخدمة عن حالة firewalldالخدمة النشطة، ويجب firewall-cmd --stateأن يُبلغ عن runningحالة الخدمة المتوقفة. إذا كانت الخدمة مثبتة ولكنها متوقفة، فقم بتشغيلها وتفعيلها عند بدء التشغيل.
sudo systemctl enable --now firewalld
في حال firewall-cmdعدم وجودها، تحقق من firewalldتثبيت الحزمة وتوفرها في مستودعات SUSE المُفعّلة. لا تقم بتثبيت أو استبدال مكونات جدار الحماية بشكل عشوائي على خادم مُدار.
يقوم الجهاز الطرفي النموذجي بفحص حالة جدار الحماية ويعرض مثالاً لمنطقة عامة نشطة مع واجهة eth0.
2. ابحث عن المنطقة التي تحمي واجهة الخادم
يُصنّف Firewalld القواعد في مناطق ، تُمثّل مستويات ثقة مُختلفة. publicتُستخدم المنطقة عادةً للشبكات غير الموثوقة. لا تُفتح الخدمة تلقائيًا في جميع المناطق إذا تم فتحها في منطقة مُعينة، لذا قد يؤدي وضع قاعدة صحيحة في منطقة خاطئة إلى جعل تطبيقك غير قابل للوصول.
استخدم مخرجات الأمر active-zone للعثور على المنطقة المتصلة بالواجهة التي تحمل حركة مرور العميل. قد يكون اسم الواجهة eth0، ens160أو ، أو اسمًا آخر. إذا كنت بحاجة إلى فحص واجهة واحدة، فقم بتشغيل الأمر التالي:
sudo firewall-cmd --get-zone-of-interface=eth0
استبدل eth0الواجهة بالواجهة الفعلية. تُدار الواجهة غير المُخصصة لمنطقة معينة بواسطة المنطقة الافتراضية. تجنب تغيير المنطقة الافتراضية بشكل عشوائي، فقد يؤثر ذلك على الواجهات التي تعتمد عليها. على خادم بعيد، حدد منطقة إدارة SSH أو أي منطقة إدارة أخرى، وتأكد من قاعدة الوصول الخاصة بها قبل إعادة تحميل إعدادات جدار الحماية. احتفظ بوحدة تحكم أو مسار استعادة خارج النطاق متاحًا إن وُجد.
تُظهر قائمة المناطق الواجهات والخدمات المرتبطة بالمنطقة العامة النموذجية قبل أي تغييرات.
3. اختر خدمة محددة أو منفذًا معينًا
خدمة جدار الحماية (firewalld) هي تعريف مُسمى قد يتضمن منفذًا واحدًا أو أكثر وبروتوكولات. عادةً ما يكون من الأسهل السماح لخدمة معروفة بالاسم بدلاً من حفظ رقم منفذها. تحقق من قائمة الخدمات المُثبتة وافحص التعريف قبل استخدامه.
بالنسبة لخادم الويب، httpتغطي الخدمة المُعرّفة مسبقًا عادةً منفذ TCP 80؛ httpsبينما تُعدّ خدمة TLS خدمةً منفصلةً لحركة مرور الويب. توضح وثائق SLES نفس الأسلوب القائم على الخدمات مع أمثلة مثل DHCP. استخدم الخدمة الفعلية التي يتطلبها تطبيقك، وتحقق من تعريف الخدمة محليًا إذا كنت غير متأكد.
إذا لم تكن هناك خدمة مُعرّفة مسبقًا مناسبة، فافتح المنفذ والبروتوكول المطلوبين فقط. على سبيل المثال، يمكن السماح لتطبيق يستمع على منفذ TCP رقم 8443. --add-port=8443/tcpلا يؤدي فتح منفذ في جدار الحماية إلى تشغيل التطبيق أو ربطه بالشبكة أو تأمينه؛ تأكد من تهيئة الخدمة نفسها للاستماع على العنوان المقصود.
اختبر قاعدة مؤقتة أولاً
لإجراء اختبار قصير، طبّق قاعدة على إعدادات وقت التشغيل. تُطبّق تغييرات وقت التشغيل فورًا، ولكنها تُفقد بعد إعادة تحميل جدار الحماية أو إعادة تشغيل الخدمة ما لم تحفظها بشكل دائم. يدعم Firewalld قاعدة محدودة المدة، وهي مفيدة عندما تريد انتهاء صلاحية الاختبار تلقائيًا.
لإجراء اختبار منفذ لمرة واحدة، استخدم --add-port=8443/tcp --timeout=5mبدلاً من --add-service=http. حدد المنطقة التي تحتوي فعليًا على واجهة الخادم؛ لا تقم بالنسخ publicإذا كان مضيفك يستخدم منطقة أخرى.
يقوم الأمر النموذجي بإضافة خدمة HTTP إلى التكوين الدائم للمنطقة العامة، ثم يعيد تحميل firewalld لتطبيقها.
4. احفظ القاعدة وأعد تحميل جدار الحماية
عندما تكون مستعدًا للاحتفاظ بقاعدة، أضفها إلى الإعدادات الدائمة. يسمح المثال التالي باستخدام بروتوكول HTTP في المنطقة العامة:
تُعدّل هذه الأمثلة الإعدادات الدائمة أولًا، ثم تُعيد تحميلها لتفعيل القاعدة الجديدة. كما تُستبدل إعدادات وقت التشغيل بالإعدادات الدائمة. لذا، قد تُهمل أي تغييرات أُجريت في وقت التشغيل فقط في أماكن أخرى. قبل إعادة تحميل نظام الإنتاج، راجع قواعد وقت التشغيل والقواعد الدائمة المهمة، وخاصةً قواعد الوصول للإدارة عن بُعد.
يوجد أيضًا سير عمل يعتمد على وقت التشغيل أولًا: اختبر القاعدة أثناء التشغيل، وتأكد من عمل الخدمة، ثم أضف نفس القاعدة --permanentوأعد تحميلها. تجنب استخدام --runtime-to-permanentهذه الطريقة كاختصار إلا إذا كنت تنوي حفظ جميع قواعد وقت التشغيل الحالية، بما في ذلك التغييرات المؤقتة التي أجراها مسؤولون آخرون أو برامج أخرى.
كيف يمكنك التحقق من نجاح التغيير؟
تحقق من كلٍّ من قاعدة التشغيل النشطة والقاعدة المحفوظة. بالنسبة لخدمة HTTP في المنطقة العامة، شغّل الأمر التالي:
يجب أن تُرجع الاستعلامات قيمةً yes، ويجب أن تتضمن قائمة الخدمات الدائمة الخدمة المطلوبة http، ويجب أن يكتمل فحص التكوين بنجاح. بالنسبة لقاعدة المنفذ، استخدم الأمرَين `------` --query-port=8443/tcpو` --list-ports------` في الأوامر المكافئة. اختبر أيضًا من عميل منفصل يمكنه الوصول إلى الخادم؛ إذ يؤكد استعلام جدار الحماية المحلي وجود القاعدة، وليس صحة نظام أسماء النطاقات (DNS) أو التوجيه أو جدران الحماية الخارجية أو مستمع التطبيق.
تتحقق أوامر التحقق من قاعدة الخدمة النشطة، وقائمة الخدمات المحفوظة، وبنية التكوين الدائمة.
المشاكل الشائعة والتصحيحات الآمنة
القاعدة موجودة، لكن الاتصالات لا تزال تنتهي بانتهاء المهلة: تأكد من إضافتها إلى المنطقة المرتبطة بواجهة المستخدم. ثم تحقق من أن التطبيق يستمع على العنوان والمنفذ المتوقعين، وتحقق من أي جدار حماية للشبكة في اتجاه المنبع.
كانت القاعدة تعمل حتى إعادة التحميل: ربما تمت إضافتها فقط أثناء التشغيل. أضفها وأعد --permanentالتحميل، ثم استعلم عن كلا التكوينين.
الوصول إلى SSH مُعرّض للخطر: تحقق من خدمات المنطقة النشطة والخدمات الدائمة قبل إعادة التحميل. إذا كان SSH مطلوبًا وغير متوفر، فأضف الخدمة sshإلى المنطقة الصحيحة بشكل دائم قبل إعادة التحميل. لا تُغلق جلسة التحكم عن بُعد الحالية حتى تختبر اتصالًا ثانيًا.
أنت بصدد الترقية من إصدار أقدم من SUSE: استبدل SLES 15 برنامج SuSEfirewall2 ببرنامج firewalld. تحذر SUSE من أن ملفات تعريف جدار الحماية القديمة تتمتع بتوافق محدود مع الإصدارات السابقة؛ لذا يُرجى مراجعة دليل الترقية بدلاً من افتراض ترجمة جميع القواعد القديمة.
يبدو أن القواعد متعارضة: فبرنامج firewalld مُصمم لإدارة قواعد جدار الحماية الخاص بالجهاز المضيف. وتحذر SUSE من تعديل القواعد نفسها بشكل منفصل باستخدام أدوات مثل iptables، مما قد يُربك الإعدادات النشطة.
لإزالة خدمة أو منفذ دائم غير ضروري، استخدم الخيار المطابق --remove-serviceأو --remove-portالخيار مع --permanent، ثم أعد التحميل وتحقق مرة أخرى. على سبيل المثال، قم بإزالة HTTP من المنطقة العامة باستخدام sudo firewall-cmd --permanent --zone=public --remove-service=httpمتبوعًا بـ sudo firewall-cmd --reload.
تحقق بنفسك قبل الانتهاء
firewalldيتم تشغيله ويبدأ عند بدء تشغيل الخادم.
لقد حددت المنطقة النشطة للواجهة التي تستقبل حركة البيانات.
يُسمح فقط بالخدمة أو المنفذ الذي يحتاجه التطبيق في تلك المنطقة.
لا يزال مسموحاً بالإدارة عن بعد قبل وبعد إعادة التحميل.
تظهر القاعدة في وقت التشغيل والاستعلامات الدائمة، ويجتاز فحص التكوين بنجاح.
يؤكد اختبار الاتصال من مضيف آخر إمكانية الوصول إلى التطبيق.