يتم استخدام جدار الحماية المثبت في نظام التشغيل لمنع مرور البيانات غير المصرح به من خلال شبكات الكمبيوتر. قم يدويًا أو تلقائيًا بإنشاء قواعد خاصة لجدار الحماية ، تكون مسؤولة عن التحكم في الوصول. في نظام التشغيل الذي تم تطويره على Linux kernel ، يحتوي CentOS 7 على جدار حماية مدمج ، ويتم إدارته باستخدام جدار حماية. يتم تمكين FirewallD افتراضيًا ، ونود التحدث عن التكوين الخاص به اليوم.
محتوى
كما ذكر أعلاه ، يتم تعيين جدار الحماية القياسي على CentOS 7 إلى الأداة المساعدة FirewallD. هذا هو السبب في إعداد جدار الحماية سيتم النظر في مثال هذه الأداة. يمكنك تعيين قواعد التصفية باستخدام نفس iptables ، ولكن يتم ذلك بطريقة مختلفة قليلاً. نوصي بأن تتعرف على تهيئة الأداة المساعدة المذكورة من خلال النقر على الرابط التالي ، وسوف نبدأ في تحليل FirewallD.
انظر أيضا: تكوين iptables على CentOS 7
هناك العديد من المناطق - مجموعات من القواعد لإدارة حركة المرور بناءً على الثقة في الشبكات. يتم إعطاء كل منهم سياساتهم الخاصة ، والتي تشكل مجمل تكوين جدار الحماية. يتم تخصيص كل منطقة لواجهة واحدة أو أكثر من الشبكات ، مما يسمح لك أيضًا بضبط التصفية. القواعد المطبقة تعتمد مباشرة على الواجهة المستخدمة. على سبيل المثال ، عند الاتصال بشبكة Wi-Fi متاحة للجمهور ، سيزيد جدار الحماية من مستوى التحكم ، وفي الشبكة المنزلية سيفتح وصولًا إضافيًا للمشاركين في السلسلة. في جدار الحماية هذا توجد مناطق:
trusted
- الحد الأقصى لمستوى الثقة في جميع الأجهزة على الشبكة ؛ home
هو مجموعة الشبكة المحلية. هناك ثقة في البيئة ، ولكن في القيام بذلك ، تتوفر الاتصالات الواردة فقط لبعض الأجهزة ؛ dmz
- منطقة لأجهزة الكمبيوتر المعزولة. يتم قطع هذه الأجهزة عن بقية الشبكة وتسمح فقط بحركة مرور واردة معينة ؛ external
- عكس المنطقة السابقة. في الشبكات الخارجية ، يكون تقنيع NAT نشطًا ، حيث يغلق الشبكة الداخلية ، ولكن لا يحظر القدرة على الوصول ؛ block
- يتم إعادة تعيين جميع الطلبات الواردة مع وجود خطأ محظور على icmp-host أو محظور على icmp6 ؛ drop
- الحد الأدنى لمستوى الثقة. يتم إسقاط الاتصالات الواردة دون أي إشعار. السياسيون أنفسهم مؤقتون ودائمون. عند ظهور المعلمات أو تحريرها ، يتغير إجراء جدار الحماية على الفور دون الحاجة إلى إعادة تشغيل الكمبيوتر. في حالة تطبيق قواعد مؤقتة ، سيتم إعادة تعيينها بعد إعادة تشغيل FirewallD. تسمى القاعدة الدائمة - سيتم الاحتفاظ بها على أساس دائم عند تطبيق الوسيطة - —permanent
.
تحتاج أولاً إلى بدء FirewallD أو التأكد من أنه في الحالة النشطة. تطبيق الخفي فقط (برنامج يعمل في الخلفية) سيتم تطبيق قواعد جدار الحماية. يتم التنشيط ببضع نقرات فقط:
sudo systemctl start firewalld.service
واضغط على المفتاح Enter . firewall-cmd --state
. إذا احتجت مرة إلى تعطيل جدار الحماية بشكل مؤقت أو دائم ، نوصيك باستخدام الإرشادات الواردة في مقالتنا الأخرى على الرابط التالي.
مزيد من التفاصيل: تعطيل جدار الحماية على CentOS 7
حتى أثناء العمل في الوضع العادي ، يحتوي جدار الحماية على قواعد ومناطق محددة خاصة به. قبل البدء في تحرير السياسات ، نوصيك بالتعرف على التكوين الحالي. يتم ذلك باستخدام أوامر بسيطة:
firewall-cmd --get-default-zone
. firewall-cmd --get-active-zones
هذه المعلومات من خلال firewall-cmd --get-active-zones
. firewall-cmd --list-all
القواعد المحددة للمنطقة الافتراضية. انظر لقطة أدناه. يمكنك أن ترى أن القاعدة "الافتراضية" يتم تخصيصها للمنطقة النشطة "عام" - تتم إضافة العملية الافتراضية والواجهة "enp0s3" وخدمتان . firewall-cmd --get-zones
. firewall-cmd --zone=name --list-all
، حيث يكون الاسم هو اسم المنطقة. بعد تحديد المعلمات الضرورية ، يمكنك المتابعة إلى التعديل والإضافة. دعونا نلقي نظرة فاحصة على بعض التكوينات الأكثر شعبية.
كما تعلم من المعلومات أعلاه ، فإن كل واجهة لها منطقتها الافتراضية. سيبقى فيه حتى يتم تغيير الإعدادات من قبل المستخدم أو برمجياً. من الممكن نقل الواجهة يدويًا إلى المنطقة لجلسة واحدة ، ويتم ذلك عن طريق تنشيط الأمر sudo firewall-cmd --zone=home --change-interface=eth0
. تشير نتيجة "النجاح" إلى أن عملية النقل كانت ناجحة. تذكر أنه تتم إعادة تعيين هذه الإعدادات فور إعادة تشغيل جدار الحماية.
مع هذا التغيير في المعلمات ، يجب أن يؤخذ في الاعتبار أنه يمكن إعادة تعيين عمل الخدمات. لا يدعم بعضها التشغيل في مناطق معينة ، على سبيل المثال SSH ، على الرغم من أنها متوفرة في "المنزل" ، لكن الخدمة سوف ترفض العمل في المستخدم أو الخدمات الخاصة. يمكنك firewall-cmd --get-active-zones
أن الواجهة تم ربطها بنجاح بفرع جديد عن طريق كتابة firewall-cmd --get-active-zones
.
إذا كنت ترغب في إعادة تعيين الإعدادات السابقة ، sudo systemctl restart firewalld.service
سوى إعادة تشغيل جدار الحماية: sudo systemctl restart firewalld.service
.
في بعض الأحيان ، ليس من المناسب دائمًا تغيير منطقة الواجهة عن طريق جلسة واحدة فقط. في هذه الحالة ، سوف تحتاج إلى تحرير ملف التكوين بحيث يتم إدخال جميع الإعدادات على أساس دائم. للقيام بذلك ، نوصي باستخدام محرر نصوص nano ، المثبت من مستودع sudo yum install nano
الرسمي. يبقى لتنفيذ الإجراءات التالية:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
، حيث eth0 هو اسم الواجهة المطلوبة. public
أو home
. الآن ستكون منطقة الواجهة هي ما حددتها ، حتى التحرير التالي لملف التكوين. لجعل الإعدادات المحدّثة نافذة المفعول ، قم بتشغيل sudo systemctl restart network.service
و sudo systemctl restart firewalld.service
.
أعلاه ، لقد أظهرنا بالفعل أمرًا سمح لنا بمعرفة المنطقة الافتراضية. يمكن أيضًا تغييره عن طريق تحديد الخيار الذي تختاره. للقيام بذلك ، يكفي تسجيل sudo firewall-cmd --set-default-zone=name
في وحدة التحكم ، حيث يكون الاسم هو اسم المنطقة المطلوبة.
سيتم الإشارة إلى نجاح الأمر من خلال كتابة "النجاح" على سطر منفصل. بعد ذلك ، سيتم ربط جميع الواجهات الحالية بالمنطقة المحددة ، ما لم يتم تحديد خلاف ذلك في ملفات التكوين.
في بداية المقال تحدثنا عن تشغيل كل منطقة. تحديد الخدمات والمرافق والبرامج في مثل هذه الفروع سوف يسمح لكل منها بتطبيق المعلمات الفردية لكل طلبات المستخدم. بادئ ذي بدء ، ننصحك بأن تتعرف على القائمة الكاملة للخدمات المتاحة حاليًا: firewall-cmd --get-services
.
يتم عرض النتيجة مباشرة في وحدة التحكم. يتم فصل كل خادم بمسافة ، وفي القائمة يمكنك بسهولة العثور على الأداة التي تهتم بها. إذا كانت الخدمة الضرورية مفقودة ، فيجب تثبيتها بشكل إضافي. حول قواعد التثبيت ، اقرأ وثائق البرنامج الرسمي.
يعرض الأمر أعلاه أسماء الخدمات فقط. يتم الحصول على معلومات مفصلة عن كل منهم من خلال ملف فردي يقع على طول المسار /usr/lib/firewalld/services
. مثل هذه المستندات بتنسيق XML ، على سبيل المثال ، يبدو مسار SSH كما يلي: /usr/lib/firewalld/services/ssh.xml
، ويحتوي المستند على المحتويات التالية:
SSH
Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.
يتم تنشيط الدعم اليدوي للخدمة في منطقة معينة. في "المحطة الطرفية" ، يجب عليك تعيين الأمر sudo firewall-cmd --zone=public --add-service=http
، حيث --zone = العام هي منطقة التنشيط ، و - add-service = http هو اسم الخدمة. لاحظ أن هذا التغيير سيسري فقط خلال جلسة واحدة.
يتم تنفيذ الإضافة الدائمة عبر sudo firewall-cmd --zone=public --permanent --add-service=http
، وتشير نتيجة "النجاح" إلى الإكمال الناجح للعملية.
يمكنك عرض القائمة الكاملة للقواعد الدائمة لمنطقة معينة عن طريق عرض القائمة في سطر منفصل من وحدة التحكم: sudo firewall-cmd --zone=public --permanent --list-services
.
بشكل قياسي ، يتم سرد الخدمات الأكثر شعبية وآمنة في قواعد جدار الحماية على النحو المسموح به ، لكنها تمنع بعض التطبيقات القياسية أو تطبيقات الجهات الخارجية. في هذه الحالة ، سيحتاج المستخدم إلى تغيير الإعدادات يدويًا لحل مشكلة الوصول. يمكن القيام بذلك بطريقتين مختلفتين.
ميناء الشحن
كما تعلم ، تستخدم جميع خدمات الشبكة منفذًا محددًا. يتم اكتشافه بسهولة بواسطة جدار الحماية ، ويمكنه حظر الأقفال. لتجنب مثل هذه الإجراءات التي يتخذها جدار الحماية ، تحتاج إلى فتح المنفذ المطلوب من خلال sudo firewall-cmd --zone=public --add-port=0000/tcp
، حيث --zone = public هي منطقة المنفذ ، --add-port = 0000 / tcp - رقم المنفذ والبروتوكول. يعرض الخيار firewall-cmd --list-ports
list firewall-cmd --list-ports
قائمة بالمنافذ المفتوحة.
إذا كنت بحاجة إلى فتح منافذ في النطاق ، استخدم سطر sudo firewall-cmd --zone=public --add-port=0000-9999/udp
، حيث --add-port = 0000-9999 / udp هو نطاق المنافذ و بروتوكولهم.
سوف تسمح الأوامر أعلاه فقط لاختبار استخدام هذه المعلمات. إذا نجحت ، يجب عليك إضافة نفس المنافذ إلى الإعدادات الدائمة ، ويتم ذلك عن طريق إدخال sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp
أو sudo firewall-cmd --zone=public --permanent --add-port=0000-9999/udp
. يتم عرض قائمة المنافذ الثابتة المفتوحة كـ: sudo firewall-cmd --zone=public --permanent --list-ports
.
كما ترى ، لا تسبب إضافة المنافذ أي صعوبات ، لكن الإجراء معقد عند استخدام عدد كبير من التطبيقات. يصبح من الصعب تتبع جميع المنافذ المستخدمة ، مما يعني أن تعريف الخدمة سيكون أكثر صحة:
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
، حيث يمثل service.xml اسم ملف الخدمة ، و example.xml هو اسم نسخته. sudo nano /etc/firewalld/services/example.xml
. sudo firewall-cmd --reload
تشغيل جدار الحماية لتطبيق الإعدادات عبر sudo firewall-cmd --reload
. بعد ذلك ، ستظهر الخدمة في قائمة الخدمات المتاحة ، والتي يمكن عرضها من خلال firewall-cmd --get-services
. عليك فقط اختيار أنسب طريقة لحل المشكلة مع الوصول إلى الخدمة واتباع الإرشادات الواردة. كما ترون ، يتم تنفيذ جميع الإجراءات بسهولة تامة ، ولا ينبغي أن تنشأ أي صعوبات.
أنت تعرف بالفعل أنه في البداية تم إنشاء عدد كبير من المناطق المختلفة مع قواعد معينة في FirewallD. ومع ذلك ، هناك حالات عندما يحتاج مسؤول النظام إلى إنشاء منطقة مستخدم ، مثل "publicweb" لخادم ويب مثبت أو "privateDNS" لخادم DNS. في هذين المثالين ، نقوم بتحليل إضافة الفروع:
sudo firewall-cmd --permanent --new-zone=publicweb
و sudo firewall-cmd --permanent --new-zone=privateDNS
. sudo firewall-cmd --reload
إعادة التحميل. لعرض المناطق الدائمة ، أدخل sudo firewall-cmd --permanent --get-zones
. sudo firewall-cmd --zone=publicweb --add-service=ssh
، sudo firewall-cmd --zone=publicweb --add-service=http
و sudo firewall-cmd --zone=publicweb --add-service=https
، حيث --zone = publicweb هو اسم المنطقة المراد إضافتها. يمكنك عرض نشاط الخدمات من خلال firewall-cmd --zone=publicweb --list-all
. في هذه المقالة ، تعلمت كيفية إنشاء مناطق مخصصة وإضافة خدمات إليها. لقد سبق أن وصفنا أعلاه إعدادهم افتراضيًا وتعيين واجهات ، ما عليك سوى تحديد الأسماء الصحيحة. لا تنسى إعادة تشغيل جدار الحماية بعد إجراء أي تغييرات دائمة.
كما ترون ، جدار الحماية FirewallD هو أداة كبيرة إلى حد ما تسمح لك بإجراء التكوين الأكثر مرونة لجدار الحماية. يبقى فقط للتأكد من تشغيل الأداة المساعدة مع النظام وأن القواعد المحددة تبدأ عملها على الفور. القيام بذلك مع sudo systemctl enable firewalld
الأمر sudo systemctl enable firewalld
.