ذكري المظهر

كيفية تكوين وإدارة جدار الحماية على centos 8

Introduction to Amazon Web Services by Leo Zhadanovsky

Introduction to Amazon Web Services by Leo Zhadanovsky

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

Anonim

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

سفن CentOS 8 مزودة بخفي جدار الحماية المسمى firewalld. إنه حل كامل بواجهة D-Bus يسمح لك بإدارة جدار الحماية الخاص بالنظام بشكل ديناميكي.

في هذا البرنامج التعليمي ، سنتحدث عن كيفية تكوين جدار الحماية وإدارته في CentOS 8. وسنشرح أيضًا مفاهيم FirewallD الأساسية.

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

لتكوين خدمة جدار الحماية ، يجب تسجيل الدخول كجذر أو مستخدم لديه امتيازات sudo.

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

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

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

في CentOS 8 ، يتم استبدال iptables بـ nftables كخلفية جدار الحماية الافتراضية لخفي firewalld.

مناطق Firewalld

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

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

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

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

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

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

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

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

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

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

لتطبيق التغييرات في مجموعتي التكوين ، يمكنك استخدام إحدى الطريقتين التاليتين:

  1. تغيير تكوين وقت التشغيل وجعله دائمًا:

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

    تغيير التكوين الدائم وإعادة تحميل البرنامج الخفي firewalld:

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

تمكين FirewallD

في CentOS 8 ، يتم تثبيت firewalld وتمكينه افتراضيًا. إذا لم يكن مثبتًا على نظامك لسبب ما ، يمكنك تثبيت البرنامج الخفي وبدء تشغيله عن طريق الكتابة:

sudo dnf install firewalld sudo systemctl enable firewalld --now sudo dnf install firewalld sudo systemctl enable firewalld --now

يمكنك التحقق من حالة خدمة جدار الحماية باستخدام:

sudo firewall-cmd --state

إذا تم تمكين جدار الحماية ، فيجب طباعة الأمر running . خلاف ذلك ، سترى not running .

مناطق Firewalld

المنطقة الافتراضية هي تلك المستخدمة لكل شيء لم يتم تعيينه بشكل صريح إلى منطقة أخرى.

يمكنك رؤية المنطقة الافتراضية عن طريق الكتابة:

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

يُظهر الإخراج أدناه أنه يتم تعيين الواجهات eth0 و eth1 إلى المنطقة public :

public interfaces: 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:

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

sudo firewall-cmd --list-all-zones

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

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

يعرّف الهدف السلوك الافتراضي للمنطقة لحركة المرور الواردة غير المحددة. يمكن ضبطه على أحد الخيارات التالية: default ، ACCEPT ، REJECT ، DROP .

لتعيين هدف المنطقة ، حدد المنطقة بخيار --zone والهدف --set-target .

على سبيل المثال ، لتغيير هدف المنطقة public إلى DROP يجب تشغيل:

sudo firewall-cmd --zone=public --set-target=DROP

تعيين واجهة لمنطقة مختلفة

يمكنك إنشاء مجموعات محددة من القواعد للمناطق المختلفة وتعيين واجهات مختلفة لها. هذا مفيد بشكل خاص عند قيامك بواجهات متعددة على جهازك.

لتعيين واجهة لمنطقة مختلفة ، حدد المنطقة بخيار --zone والواجهة مع خيار --change-interface .

على سبيل المثال ، يعين الأمر التالي الواجهة eth1 إلى منطقة work :

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 افتراضيًا.

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

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

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

sudo firewall-cmd --get-default-zone

home

إنشاء مناطق جديدة

يسمح لك Firewalld أيضًا بإنشاء مناطق خاصة بك. هذا مفيد عندما تريد إنشاء قواعد لكل تطبيق.

في المثال التالي ، سنقوم بإنشاء منطقة جديدة باسم memcached ، وفتح المنفذ 11211 والسماح بالوصول فقط من عنوان IP 192.168.100.30 :

  1. قم بإنشاء المنطقة:

    sudo firewall-cmd --new-zone=memcached --permanent

    أضف القواعد إلى المنطقة:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent

    إعادة تحميل البرنامج الخفي firewalld لتنشيط التغييرات:

    sudo firewall-cmd --reload

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

باستخدام 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

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

sudo firewall-cmd --runtime-to-permanent

استخدم قائمة --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 من التكوين الدائم للمنطقة العامة.

إنشاء خدمة 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 مثل أي خدمة أخرى.

فتح المنافذ و IPs المصدر

يتيح لك Firewalld أيضًا تمكين كل حركة المرور بسرعة من عنوان IP موثوق أو من منفذ معين دون إنشاء تعريف للخدمة.

فتح مصدر IP

للسماح لكل حركة المرور الواردة من عنوان IP محدد (أو نطاق) ، حدد المنطقة بخيار --zone و IP المصدر مع خيار --add-source .

على سبيل المثال ، للسماح لكل حركة المرور الواردة من 192.168.1.10 في المنطقة public ، قم بتشغيل:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

اجعل القاعدة الجديدة ثابتة:

sudo firewall-cmd --runtime-to-permanent

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

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

192.168.1.10

بناء الجملة لإزالة IP المصدر هو نفسه عند إضافة واحد. ما عليك --remove-source استخدام --remove-source بدلاً من --add-source :

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

فتح منفذ المصدر

للسماح لكل حركة المرور الواردة على منفذ معين ، حدد المنطقة مع خيار --zone والمنفذ والبروتوكول مع خيار --add-port .

على سبيل المثال ، لفتح المنفذ 8080 في المنطقة العامة للجلسة الحالية التي قمت بتشغيلها:

sudo firewall-cmd --zone=public --add-port=8080/tcp

يمكن أن يكون البروتوكول إما tcp أو udp أو dccp أو dccp .

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

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

8080

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

sudo firewall-cmd --runtime-to-permanent

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

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

موانئ الشحن

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

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

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

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

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

توجيه حركة المرور إلى عنوان IP آخر

في المثال التالي ، نعيد توجيه حركة المرور من المنفذ 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

لجعل القاعدة الأمامية ثابتة ، استخدم:

sudo firewall-cmd --runtime-to-permanent

استنتاج

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

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

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