جدار الحماية (7): iptables-save | iptables-restore
جدول المحتويات:
- المتطلبات الأساسية
- مفاهيم Firewalld الأساسية
- مناطق Firewalld
- خدمات جدار الحماية
- Firewalld Runtime و الإعدادات الدائمة
- تثبيت وتمكين FirewallD
- العمل مع مناطق Firewalld
- تغيير منطقة واجهة
- تغيير المنطقة الافتراضية
- فتح ميناء أو خدمة
- إنشاء خدمة FirewallD جديدة
- ميناء الشحن مع Firewalld
- إنشاء قواعد مع FirewallD
- استنتاج
يعد جدار الحماية المكوّن بشكل صحيح أحد أهم جوانب أمان النظام الكلي.
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
-
يتم تثبيت 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
فتح ميناء أو خدمة
باستخدام FirewallD ، يمكنك السماح بحركة مرور لمنافذ محددة بناءً على قواعد محددة مسبقًا تسمى الخدمات.
للحصول على قائمة بكل أنواع الخدمات المتاحة الافتراضية:
sudo firewall-cmd --get-services
يمكنك العثور على مزيد من المعلومات حول كل خدمة عن طريق فتح ملف.xml المرتبط ضمن دليل
/usr/lib/firewalld/services
. على سبيل المثال ، يتم تعريف خدمة HTTP مثل هذا:
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.
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 و
-
تغيير المنطقة الافتراضية إلى 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 الأمن - -جدار الحماية للجدار مقابل برنامج جدار الحماية - الفرق

ما هو الفرق بين برنامج جدار الحماية وجدار حماية الأجهزة؟ انظر المقارنة. يحتوي اليوم جدار حماية الأجهزة على IPS / IPDS (أنظمة منع التطفل أيضاً.
كيفية إعداد نفق ssh لتجاوز جدار الحماية

يعد جدار الحماية شيئًا جيدًا ، ولكن إذا كان يمنعك من القيام بشيء ما ، فإن SSH Tunneling يعد خيارًا جيدًا للاستكشاف.
كيفية إعداد جدار الحماية مع ufw على أوبونتو 18.04

بشكل افتراضي ، يأتي Ubuntu مع أداة تكوين جدار الحماية تسمى UFW (جدار حماية غير معقد). UFW هي واجهة سهلة الاستخدام لإدارة قواعد جدار الحماية iptables وهدفها الرئيسي هو جعل إدارة iptables أسهل أو كما يقول الاسم غير معقد.