الجدران النارية Firewalls هي أنظمة حماية تتحكّم في حركة البيانات القادمة إلى شبكة أو الخارجة منها، اعتمادا على مجموعة من القواعد المعرَّفة مسبقا؛ على سبيل المثال وجهة الحزم Packets، مصدرها أو نوعية البيانات.
سنعرض في هذا الدرس لأساسيات FirewallD وهو البرنامج المبدئي لإدارة الجدار الناري في Red Hat Enterprise Linux 7، وIptables الذي هو الجدار الناري التقليدي في أنظمة لينكس، ويتوفّر أيضا في RHEL 7.
مقارنة بين FirewallD وIptables
يعمل الجداران الناريان FirewallD وIptables عن طريق التخاطب مع النواة عبر نفس الواجهة، أمر iptables
؛ إلا أن الاختلاف بينهما يكمن في أن FirewallD يمكنه تعديل الإعدادات أثناء عمل النظام دون ضياع الاتّصالات الجارية. يجب أن يكون FirewallD مثبتا مبدئيا على RHEL 7، إلا أنه يمكن ألا يكون مفعلا. يمكن التحقّق منه بالأوامر التاليّة:
# yum info firewalld firewall-config
تُظهر نتيجة الأمر أعلاه أن الجدار الناري FirewallD مثبت فعلا، وكذلك حزمة firewall-config
التي توفّر أداة في واجهة المستخدم لإدارة الجدار الناري. الجدار الناري مثبّت، يمكننا الآن التحقق من ما إذا كان مفعّلا أم لا:
# systemctl status -l firewalld.service
على الجانب الآخر، لا يُضمَّن جدار Iptables الناري مبدئيا في Red Hat Enterprise Linux 7؛ إلا أنه يمكن تثبيته بالأمر:
# yum update && yum install iptables-services
تُشغَّل الخدمتان وتُفعّلان مع الإقلاع عن طريق أوامر systemd
الاعتيادية:
# systemctl start firewalld.service # systemctl start iptables.service # systemctl enable firewalld.service # systemctl enable iptables.service
يوجد ملفّ إعداد iptables
على المسار etc/sysconfig/iptables/
(يجب أن تكون الحزمة مثبتة حتى يوجد الملفّ)؛ بينما توجد ملفات إعداد FirewallD موزعة بين المجلدين usr/lib/firewalld/
وetc/firewalld/
.
يمكن الحصول على معلومات أكثر عن هذه الأدوات بتنفيذ الأوامر:
# man firewalld.conf # man firewall-cmd # man iptables
راجع مقال أساسيات التعامل مع الصدفة Shell في Red Hat Enterprise Linux لطرق أخرى حول الحصول على المعلومات عن الأوامر في Red Hat Enterprise Linux 7.
استخدام Iptables للتحكم في حركة البيانات عبر الشبكة
سنذكُر في ما يلي أمثلة لإعداد Iptables على RHEL 7؛ تأكد من مراجعة مقال ما هو الجدار الناري وكيف يعمل؟ والمقالات المرتبطة به لفهم آلية عمل الجدار الناري بالتفصيل.
السماح لحركة البيانات المتجهة إلى خادوم الوِب والصّادرة منه
تستخدم خواديم الوِب المنفذين 80
و443
للإنصات للطلبات القادمة إلى الخادوم. المنفذ الأول 80
خاصّ بحركة البيانات العاديّة بينما يُستخدم المنفذ الثاني 443
للبيانات المؤمّنة. تطلُب الأوامر التالية من Iptables السماح بحركة البيانات الواردة والصّادرة عبر المنفذين 80
و443
في واجهة الشبكة enp0s3
:
# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT # iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
حجب بيانات قادمة من شبكة محدّدة
تحتاج أحيانا لمنع اتصالات واردة من شبكة تحدّدها، مثلا 192.168.1.0/24
. يؤدّي Iptables هذه المهمة بتنفيذ الأمر التالي:
# iptables -I INPUT -s 192.168.1.0/24 -j DROP
يحجب الأمر السابق جميع الاتصالات القادمة من عنوان IP ضمن الشبكة الفرعية 192.168.1.0/24
؛ يمكننا تخصيص الأمر بحجب الاتصالات القادمة من هذه الشبكة عبر المنفذ 22
دون غيره:
# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
توجيه البيانات الواردة إلى وجهة أخرى
يمكن استخدام RHEL 7 فاصلا بين شبكتين بحيث يعيد توجيه البيانات بينهما؛ يجب في هذه الحالة تفعيل إعادة توجيه عناوين IP على النظام بتحرير الملف etc/sysctl.conf/
وتعيين القيمة 1
للتعليمة net.ipv4.ip_forward
:
net.ipv4.ip_forward = 1
احفظ التعديلات ثم نفّذ الأمر لاعتمادها:
# sysctl -p /etc/sysctl.conf
سنفترض أن لدينا طابعة مربوطة بخادوم للطباعة يعمل على العنوان 192.168.0.10
ويُنصِت للطلبات القادمة عبر المنفذ 631
. يمكن في هذه الحالة توجيه طلبات الطباعة القادمة إلى الجدار الناري على المنفذ 631
إلى خادوم الطباعة بالأمر التالي:
# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631
ملحوظة: يجب تذكر أن Iptables يقرأ القواعد الأمنية بالتسلسل، لذا تأكد من القواعد المحدّدة بعد القواعد أعلاه لا تلغيها. نفس الشيء بالنسبة للسياسات المبدئية Default policies.
جدار FirewallD الناري
المناطق Zones هي أحد التغييرات التي أضافها جدار FirewallD؛ وهي درجات مختلفة من الموثوقيّة يمنحها مدير النظام للأجهزة والبيانات في الشبكة.
يُستخدم الأمر التالي لسرد لائحة بالمناطق النشطة في FirewallD:
# firewall-cmd --get-active-zones public interfaces: enp0s3 enp0s9
يظهر في نتيجة الأمر أعلاه أن المنطقة public
التي توجد بها الواجهتان enp0s3
وenp0s9
، نشطة. نستخدم الأمر التالي للحصول على جميع المعلومات المتوفرة عن منطقة (public
في المثال):
# firewall-cmd --zone=public --list-all
السماح للخدمات بالمرور عبر الجدار الناري
يتعرّف FirewallD تلقائيا على أسماء عدد من الخدمات، يمكن الحصول على لائحة بها بتنفيذ الأمر:
# firewall-cmd --get-services
تطلب الأوامر التالية من الجدار الناري السماح بمرور بيانات الخدمتين http
(المنفذ 80
) وhttps
(المنفذ 443
) وتفعيلها مع إقلاع النظام (permanent--
):
# firewall-cmd --zone=MyZone --add-service=http # firewall-cmd --zone=MyZone --permanent --add-service=http # firewall-cmd --zone=MyZone --add-service=https # firewall-cmd --zone=MyZone --permanent --add-service=https # firewall-cmd --reload
إن لم تحدّد المنطقة عن طريق الخيار zone
فستُسخدَم المنطقة المبدئيّة.
استخدم remove
مكان add
إن أردت حذف القاعدة.
توجيه البيانات
يجب التأكد أولا من أن إخفاء العناوين IP masquerading مفعَّل بالنسبة للمنطقة المطلوبة:
# firewall-cmd --zone=MyZone --query-masquerade yes # firewall-cmd --zone=public --query-masquerade no
يظهر في نتيجة الأمر السابق أن إخفاء العناوين مفعَّل بالنسبة للمنطقة MyZone
بينما هو معطَّل بالنسبة لـpublic
.
ملحوظة: إخفاء العناوين IP masquerading هو آلية في لينكس تشبه ترجمة العناوين Network address translation, NAT في الموجّهات Routers. تمكّن هذه الآلية - مثلا - مجموعة من الأجهزة من الاتّصال بالإنترنت باستخدام نفس عنوان IP؛ حيث يتولى الجهاز الذي يُفعَّل عليه إخفاء العناوين التخاطب مع العالم الخارجي ثم يعيد توجيه الحزم في الشبكة الداخلية.
يمكن تفعيل إخفاء العناوين بالنسبة للمنطقة public
على النحو التالي:
# firewall-cmd --zone=public --add-masquerade
يؤدي الأمر التالي نفس مهمة مثال التوجيه السابق باستخدام FirewallD بدلا من Iptables:
# firewall-cmd --zone=public --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
لا تنس إعادة تحميل إعدادات الجدار الناري لاعتماد التعديلات:
# firewall-cmd --reload
يمكنك الحصول على أمثلة أخرى في درس إعداد خادوم وِب وخادوم FTP على Red Hat Enterprise Linux حيث شرحنا كيفية السماح للبيانات بالمرور عبر المنافذ التي يستخدمها عادة خادومُ الوِب وخادوم FTP وكيفية تغيير القاعدة في الجدار الناري عند تغيير المنفذ الذي تعمل عبره هذه الخدمات. تمكن أيضا الاستعانة بويكي FirewallD للمزيد من الأمثلة.
ترجمة - بتصرّف - لمقال RHCSA Series: Firewall Essentials and Network Traffic Control Using FirewallD and Iptables – Part 11 لصاحبه Gabriel Cánepa.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.