ذكري المظهر

كيفية إعداد جدار الحماية مع firewalld على centos 7

جدار الحماية (7): iptables-save | iptables-restore

جدار الحماية (7): iptables-save | iptables-restore

جدول المحتويات:

Anonim

يعد جدار الحماية المكوّن بشكل صحيح أحد أهم جوانب أمان النظام الكلي.

FirewallD هو الحل الكامل لجدار الحماية الذي يدير قواعد iptables الخاصة بالنظام ويوفر واجهة D-Bus للعمل عليها. بدءًا من CentOS 7 ، يستبدل FirewallD iptables كأداة إدارة جدار الحماية الافتراضية.

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

المتطلبات الأساسية

قبل البدء في هذا البرنامج التعليمي ، تأكد من تسجيل الدخول إلى الخادم الخاص بك باستخدام حساب مستخدم له امتيازات sudo أو مع المستخدم الجذر. أفضل ممارسة هي تشغيل الأوامر الإدارية كمستخدم sudo بدلاً من الجذر. إذا لم يكن لديك مستخدم sudo على نظام CentOS ، فيمكنك إنشاء واحد باتباع هذه التعليمات.

مفاهيم Firewalld الأساسية

يستخدم FirewallD مفاهيم المناطق والخدمات ، بدلاً من سلسلة وقواعد iptables. بناءً على المناطق والخدمات التي ستقوم بتكوينها ، يمكنك التحكم في حركة المرور المسموح بها أو غير المسموح بها من وإلى النظام.

يمكن تكوين FirewallD وإدارتها باستخدام أداة سطر الأوامر المساعدة firewall-cmd .

مناطق Firewalld

المناطق هي مجموعات محددة مسبقًا من القواعد التي تحدد حركة المرور التي يجب السماح بها بناءً على مستوى الثقة على الشبكات التي يتصل بها الكمبيوتر. يمكنك تعيين واجهات الشبكة ومصادرها للمنطقة.

فيما يلي المناطق التي يوفرها FirewallD المطلوبة وفقًا لمستوى الثقة في المنطقة من غير موثوق به إلى موثوق به:

  • إسقاط: يتم إسقاط كافة الاتصالات الواردة دون أي إشعار. الاتصالات الصادرة فقط هي المسموح بها. block: يتم رفض جميع الاتصالات الواردة برسالة icmp-host-prohibited لـ IPv4 و icmp6-adm-prohibited على IPv6n. الاتصالات الصادرة فقط هي المسموح بها. public: للاستخدام في المناطق العامة غير الموثوق بها. لا تثق بأجهزة الكمبيوتر الأخرى على الشبكة ، ولكن يمكنك السماح بالاتصالات الواردة المحددة. خارجي: للاستخدام على الشبكات الخارجية مع تمكين تنكر NAT عندما يعمل نظامك كبوابة أو جهاز توجيه. يسمح فقط بالاتصالات الواردة المحددة. داخلي: للاستخدام على الشبكات الداخلية عندما يعمل نظامك كبوابة أو جهاز توجيه. موثوق الأنظمة الأخرى على الشبكة بشكل عام. يسمح فقط بالاتصالات الواردة المحددة. dmz: يستخدم لأجهزة الكمبيوتر الموجودة في منطقتك المنزوعة السلاح والتي لها وصول محدود إلى بقية شبكتك. يسمح فقط بالاتصالات الواردة المحددة. العمل: تستخدم لآلات العمل. أجهزة الكمبيوتر الأخرى الموجودة على الشبكة موثوق بها عمومًا. يسمح فقط بالاتصالات الواردة المحددة. المنزل: تستخدم للآلات المنزلية. أجهزة الكمبيوتر الأخرى الموجودة على الشبكة موثوق بها عمومًا. يسمح فقط بالاتصالات الواردة المحددة. موثوق به: يتم قبول جميع اتصالات الشبكة. الوثوق بجميع أجهزة الكمبيوتر في الشبكة.

خدمات جدار الحماية

خدمات Firewalld هي قواعد محددة مسبقًا يتم تطبيقها داخل منطقة ما وتعرف الإعدادات اللازمة للسماح بحركة المرور الواردة لخدمة معينة.

Firewalld Runtime و الإعدادات الدائمة

يستخدم Firewalld مجموعتي تكوين منفصلتين ، وقت التشغيل ، والتكوين الدائم.

تكوين وقت التشغيل هو التكوين الفعلي قيد التشغيل ، وليس ثابتًا عند إعادة التشغيل. عند بدء تشغيل خدمة Firewalld ، يتم تحميل التكوين الدائم ، والذي يصبح تكوين وقت التشغيل.

افتراضيًا ، عند إجراء تغييرات على تكوين Firewalld باستخدام الأداة المساعدة firewall-cmd ، يتم تطبيق التغييرات على تكوين وقت التشغيل. لجعل التغييرات دائمة ، تحتاج إلى استخدام الخيار --permanent .

تثبيت وتمكين FirewallD

  1. يتم تثبيت Firewalld افتراضيًا على CentOS 7 ، ولكن إذا لم يكن مثبتًا على نظامك ، فيمكنك تثبيت الحزمة عن طريق الكتابة:

    sudo yum install firewalld

    تم تعطيل خدمة Firewalld افتراضيًا. يمكنك التحقق من حالة جدار الحماية باستخدام:

    sudo firewall-cmd --state

    لبدء تشغيل خدمة FirewallD وتمكينها من نوع التمهيد:

    sudo systemctl start firewalld sudo systemctl enable firewalld

العمل مع مناطق Firewalld

بعد تمكين خدمة FirewallD لأول مرة ، يتم تعيين المنطقة public كمنطقة افتراضية. يمكنك عرض المنطقة الافتراضية عن طريق الكتابة:

sudo firewall-cmd --get-default-zone

public

للحصول على قائمة بجميع المناطق المتاحة ، اكتب:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

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

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

يخبرنا الإخراج أعلاه أنه يتم تعيين كل من واجهات eth0 و eth1 إلى المنطقة العامة.

يمكنك طباعة إعدادات تكوين المنطقة باستخدام:

sudo firewall-cmd --zone=public --list-all

public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

من الناتج أعلاه ، يمكننا أن نرى أن المنطقة العامة نشطة وتعيين eth1 افتراضية ، تستخدمها كل من واجهات eth0 و eth1 . أيضا ، الاتصالات المتعلقة بعميل DHCP و SSH مسموح بها.

sudo firewall-cmd --list-all-zones

يقوم الأمر بطباعة قائمة ضخمة مع إعدادات كل المنطقة المتاحة.

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

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

sudo firewall-cmd --zone=work --change-interface=eth1

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

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

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

لتغيير المنطقة الافتراضية ، استخدم خيار --set-default-zone متبوعًا باسم المنطقة التي تريد --set-default-zone افتراضيًا.

على سبيل المثال ، لتغيير المنطقة الافتراضية إلى المنزل ، يجب تشغيل الأمر التالي:

sudo firewall-cmd --set-default-zone=home

تحقق من التغييرات باستخدام:

sudo firewall-cmd --get-default-zone

home

فتح ميناء أو خدمة

باستخدام FirewallD ، يمكنك السماح بحركة مرور لمنافذ محددة بناءً على قواعد محددة مسبقًا تسمى الخدمات.

للحصول على قائمة بكل أنواع الخدمات المتاحة الافتراضية:

sudo firewall-cmd --get-services

يمكنك العثور على مزيد من المعلومات حول كل خدمة عن طريق فتح ملف.xml المرتبط ضمن دليل /usr/lib/firewalld/services . على سبيل المثال ، يتم تعريف خدمة HTTP مثل هذا:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

للسماح بحركة مرور HTTP الواردة (المنفذ 80) للواجهات في المنطقة العامة ، لنوع الجلسة الحالية (تهيئة وقت التشغيل) فقط:

sudo firewall-cmd --zone=public --add-service=http إذا كنت تقوم بتعديل المنطقة الافتراضية ، فيمكنك --zone خيار --zone .

للتحقق من إضافة الخدمة بنجاح ، استخدم خيار --list-services :

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

sudo firewall-cmd --permanent --zone=public --add-service=http

استخدم قائمة --list-services جنبًا إلى جنب مع خيار --permanent للتحقق من تغييراتك:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

بناء الجملة لإزالة الخدمة هو نفسه عند إضافة خدمة. مجرد استخدام --remove-service بدلاً من --add-service :

sudo firewall-cmd --zone=public --remove-service=http --permanent

يزيل الأمر أعلاه خدمة http من التكوين الدائم للمنطقة العامة.

ماذا لو كنت تقوم بتشغيل تطبيق مثل Plex Media Server الذي لا تتوفر له خدمة مناسبة؟

في مثل هذه الحالات ، لديك خياران. يمكنك إما فتح المنافذ المناسبة أو تحديد خدمة FirewallD جديدة.

على سبيل المثال ، يستمع Plex Server على المنفذ 32400 ويستخدم TCP ، لفتح المنفذ في المنطقة العامة للجلسة الحالية ، استخدم الخيار --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp يمكن أن تكون البروتوكولات إما tcp أو udp .

للتحقق من إضافة المنفذ بنجاح ، استخدم خيار --list-ports :

sudo firewall-cmd --zone=public --list-ports

32400/tcp

لإبقاء المنفذ 32400 مفتوحًا بعد إعادة التشغيل ، أضف القاعدة إلى الإعدادات الدائمة عن طريق تشغيل الأمر نفسه باستخدام خيار - --permanent .

بناء الجملة لإزالة منفذ هو نفسه عند إضافة منفذ. مجرد استخدام --remove-port بدلاً من --add-port .

sudo firewall-cmd --zone=public --remove-port=32400/tcp

إنشاء خدمة FirewallD جديدة

كما ذكرنا بالفعل ، يتم تخزين الخدمات الافتراضية في دليل /usr/lib/firewalld/services . تتمثل أسهل طريقة لإنشاء خدمة جديدة في نسخ ملف خدمة موجود إلى دليل /etc/firewalld/services ، وهو موقع الخدمات التي أنشأها المستخدمون وتعديل إعدادات الملف.

على سبيل المثال ، لإنشاء تعريف خدمة لخادم الوسائط Plex ، يمكننا استخدام ملف خدمة SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

افتح ملف plexmediaserver.xml المنشأ حديثًا plexmediaserver.xml بتغيير الاسم المختصر والوصف للخدمة داخل و العلامات. العلامة الأكثر أهمية التي تحتاج إلى تغييرها هي علامة port ، والتي تحدد رقم المنفذ والبروتوكول الذي تريد فتحه.

في المثال التالي ، 32400 المنافذ 1900 UDP و 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

احفظ الملف وأعد تحميل خدمة FirewallD:

sudo firewall-cmd --reload

يمكنك الآن استخدام خدمة plexmediaserver في plexmediaserver مثل أي خدمة أخرى..

ميناء الشحن مع Firewalld

لإعادة توجيه حركة المرور من منفذ إلى منفذ أو عنوان آخر ، قم أولاً بتمكين التنكر للمنطقة المرغوبة باستخدام --add-masquerade التبديل --add-masquerade . على سبيل المثال لتمكين التنكر لنوع المنطقة external :

sudo firewall-cmd --zone=external --add-masquerade

  • توجيه حركة المرور من منفذ إلى آخر على نفس الخادم

في المثال التالي ، نعيد توجيه حركة المرور من المنفذ 80 إلى المنفذ 8080 على نفس الخادم:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

  • نقل حركة المرور إلى خادم آخر

في المثال التالي ، نعيد توجيه حركة المرور من المنفذ 80 إلى المنفذ 80 على خادم IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

  • توجيه حركة المرور إلى خادم آخر على منفذ مختلف

في المثال التالي ، نعيد توجيه حركة المرور من المنفذ 80 إلى المنفذ 8080 على خادم IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

إنشاء قواعد مع FirewallD

في المثال التالي ، سنعرض كيفية تكوين جدار الحماية الخاص بك إذا كنت تقوم بتشغيل خادم ويب. نحن نفترض أن خادمك لديه واجهة واحدة eth0 ، وتريد السماح بحركة المرور الواردة فقط على منافذ SSH و HTTP و

  1. تغيير المنطقة الافتراضية إلى dmz

    سوف نستخدم منطقة dmz (منزوعة السلاح) لأنه افتراضيًا لا يسمح سوى بحركة مرور SSH. لتغيير المنطقة الافتراضية إلى dmz وتعيينها إلى واجهة eth0 ، قم بتشغيل الأوامر التالية:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    افتح منافذ HTTP و

    لفتح منافذ HTTP و HTTPS ، أضف قواعد خدمة دائمة إلى منطقة dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    اجعل التغييرات فعالة على الفور عن طريق إعادة تحميل جدار الحماية:

    sudo firewall-cmd --reload

    تحقق من التغييرات

    للتحقق من نوع إعدادات تكوين منطقة dmz:

    sudo firewall-cmd --zone=dmz --list-all

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    يخبرنا الإخراج أعلاه أن dmz هي المنطقة الافتراضية ، ويتم تطبيقها على واجهة eth0 وفتح منافذ ssh (22) http (80) و https (443).

استنتاج

لقد تعلمت كيفية تكوين وإدارة خدمة FirewallD على نظام CentOS.

تأكد من السماح لجميع الاتصالات الواردة الضرورية لتشغيل نظامك بشكل صحيح ، مع الحد من جميع الاتصالات غير الضرورية.

جدار الحماية جدار الحماية iptables centos الأمن - -