ديف أوبس

تأمين الخواديم باستخدام IPTables

كيف تضبط جدار IPTables لحماية البيانات المنقولة بين خواديمك

يُعد أمن الشبكات أحد الأعمدة الأساسية لضمان استمرارية الأنظمة وسلامة البيانات، خاصة في بيئات الخواديم التي تتعامل مع بيانات حساسة أو تتطلب درجة عالية من التوافر والحماية. من بين الأدوات الأساسية التي تُمكِّن مديري الأنظمة من فرض سياسات أمان صارمة هو جدار الحماية المعروف بـ IPTables، وهو أداة قوية لإدارة قواعد الفلترة على الشبكات في أنظمة Linux.

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

مواضيع ذات صلة

1. مقدمة إلى IPTables

IPTables هو إطار عمل لجدار حماية يستخدمه نواة Linux للتحكم في حركة مرور الشبكة بناءً على مجموعة من القواعد المحددة مسبقًا. يعمل على طبقة الشبكة، ما يمنحه القدرة على مراقبة ومنع أو السماح بمرور الحزم بناءً على عنوان المصدر، الوجهة، البروتوكول، المنافذ، والعديد من العوامل الأخرى.

IPTables يتكون من ثلاث سلاسل رئيسية:

  • INPUT: للتحكم في البيانات الواردة إلى الخادم.

  • OUTPUT: للتحكم في البيانات الخارجة من الخادم.

  • FORWARD: للتحكم في البيانات الموجهة من خلال الخادم إذا كان يعمل كجسر أو موجه.


2. التمهيد قبل إعداد القواعد

قبل الشروع في ضبط القواعد، ينبغي أولاً تحديد:

  • البروتوكولات التي تستخدمها الخواديم (SSH، HTTP/HTTPS، FTP، MySQL… إلخ).

  • المنافذ المفتوحة الضرورية.

  • عناوين IP أو النطاقات الخاصة بالخواديم المتصلة.

  • نوع الاتصال بين الخواديم (مباشر عبر IP، VPN، نفق SSH…).

من المهم أيضًا التأكد من أن خدمات الشبكة مهيأة لتسجيل الأنشطة، مثل استخدام rsyslog أو journalctl، لتتبع الأخطاء أو الاختراقات المحتملة.


3. حماية قناة الاتصال بين خادمين باستخدام IPTables

3.1 مثال عملي: خادمان يتواصلان عبر SSH

لنفترض وجود خادمين:

  • خادم A: 192.168.10.10

  • خادم B: 192.168.10.20

  • التواصل بينهما يتم عبر بروتوكول SSH على المنفذ 22

إعداد القواعد على خادم A

bash
# تنظيف القواعد السابقة iptables -F # سياسة افتراضية لمنع كل شيء iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # السماح لحركة المرور المحلية iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # السماح بالاتصالات الحالية iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # السماح لـ SSH فقط إلى خادم B iptables -A OUTPUT -p tcp -d 192.168.10.20 --dport 22 -j ACCEPT # السماح بقبول اتصال SSH فقط من خادم B iptables -A INPUT -p tcp -s 192.168.10.20 --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

إعداد القواعد على خادم B

bash
# تنظيف القواعد السابقة iptables -F # سياسة افتراضية لمنع كل شيء iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # السماح لحركة المرور المحلية iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # السماح للاتصالات الحالية iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # السماح لـ SSH فقط من خادم A iptables -A INPUT -p tcp -s 192.168.10.10 --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -d 192.168.10.10 --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

4. تأمين البيانات المنقولة بين الخواديم عبر VPN

في حال تم استخدام شبكة افتراضية خاصة (VPN) بين الخواديم، يمكن استخدام IPTables لضبط القواعد بناءً على عنوان IP الداخلي في نفق VPN فقط، وهو ما يضيف طبقة أمن إضافية.

مثال: السماح بالاتصال فقط من خلال نفق OpenVPN

bash
# مثال على السماح بالوصول إلى قاعدة البيانات من عنوان VPN فقط iptables -A INPUT -p tcp -s 10.8.0.2 --dport 3306 -j ACCEPT iptables -A OUTPUT -p tcp -d 10.8.0.2 --sport 3306 -j ACCEPT

5. فلترة البروتوكولات والمنافذ

من الأفضل تقليل عدد المنافذ المفتوحة إلى أدنى حد ممكن، والتأكد من أن كل منفذ يستخدم في اتصال مشفر (مثل HTTPS بدلاً من HTTP). إليك جدولاً يوضح أمثلة على البروتوكولات الشائعة وكيفية فلترتها:

البروتوكول المنفذ الهدف القاعدة الموصى بها
SSH 22 إدارة الخواديم السماح فقط من عناوين محددة
HTTP 80 حركة الويب يفضل التحويل إلى HTTPS
HTTPS 443 تشفير حركة الويب السماح العام إذا كان خادم ويب
MySQL 3306 قاعدة البيانات السماح فقط من عناوين داخلية أو VPN
PostgreSQL 5432 قاعدة البيانات السماح فقط من IP معروف

6. الحفاظ على القواعد بعد إعادة التشغيل

تطبيق قواعد IPTables لا يعني أنها ستبقى فعالة بعد إعادة تشغيل الخادم. لذلك ينبغي حفظ القواعد باستخدام الأدوات التالية:

على توزيعة Debian/Ubuntu:

bash
apt install iptables-persistent netfilter-persistent save

على توزيعة CentOS/RHEL:

bash
service iptables save

7. مراقبة سجلات IPTables

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

bash
iptables -A INPUT -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4 iptables -A OUTPUT -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4

ثم يمكن مشاهدة السجلات باستخدام:

bash
tail -f /var/log/syslog # أو journalctl -f

8. تحسين الحماية عبر دمج IPTables مع أدوات أخرى

يمكن تقوية الحماية بشكل أكبر من خلال استخدام IPTables مع أدوات مثل:

  • Fail2ban: لمنع محاولات الدخول المتكررة.

  • Port Knocking: لإخفاء المنافذ الحساسة.

  • SELinux/AppArmor: لتقييد العمليات داخل النظام.

  • TCP Wrappers: لفلترة الخدمات على مستوى التطبيق.


9. قواعد متقدمة للتحكم في السرعة والتدفق

يمكن استخدام وحدة limit للحد من عدد الحزم المستلمة لتقليل تأثير هجمات مثل DoS:

bash
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min --limit-burst 5 -j ACCEPT

هذا يسمح بثلاث محاولات اتصال فقط في الدقيقة على منفذ SSH.


10. النسخ الاحتياطي واستعادة إعدادات IPTables

لحفظ القواعد الحالية:

bash
iptables-save > /etc/iptables/rules.v4

لاستعادتها:

bash
iptables-restore < /etc/iptables/rules.v4

ينبغي الاحتفاظ بنسخة احتياطية دورية من هذه القواعد ضمن نسخ النظام الأخرى.


خاتمة

إن ضبط جدار IPTables بشكل دقيق ومبني على أساس أمني صلب يمكن أن يكون خط الدفاع الأول لحماية البيانات المنقولة بين الخواديم. من خلال فهم بنية القواعد، ودمجها مع السياسات الشبكية، وربطها مع الأدوات المكملة مثل VPN وSSH والأنظمة المتقدمة للتحكم في الدخول، يمكن تحقيق بيئة نقل بيانات آمنة وموثوقة تضمن سلامة المعلومات واستمرارية الخدمة.


المراجع:

  1. IPTables Manual – Linux

  2. Netfilter Project – www.netfilter.org