ديف أوبس

أساسيات وقواعد IPTables

أساسيات IPTables: قواعد وأوامر شائعة للجدار الناري

في عالم إدارة الشبكات وأمن الحاسوب، يُعتبر الجدار الناري (Firewall) من الركائز الأساسية التي تحمي الأنظمة من الهجمات والاختراقات غير المرغوب فيها. من أشهر الأدوات التي تُستخدم في أنظمة لينوكس لإنشاء وإدارة الجدران النارية هو IPTables، والذي يعد أداة قوية ومرنة للتحكم في حركة مرور الشبكة على مستوى حزم البيانات (Packets). يتيح IPTables لمسؤولي النظام إعداد قواعد معقدة لتنظيم الاتصالات الواردة والصادرة، مما يجعل التحكم في الشبكة فعالاً وآمناً.

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


مفهوم IPTables ودوره في النظام

IPTables هو نظام جدار ناري مبني على نواة لينوكس (Linux Kernel) يسمح بفلترة حزم الشبكة والتحكم بها. يعتمد IPTables على جداول (Tables) تحتوي على سلاسل (Chains) من القواعد (Rules) التي تحدد ما يجب عمله مع كل حزمة بيانات تدخل أو تخرج من النظام.

مكونات IPTables الأساسية:

  • الجداول (Tables): هي مجموعات قواعد مختلفة مخصصة لأغراض محددة مثل الفلترة أو التوجيه.

  • السلاسل (Chains): هي مجموعات من القواعد تُطبّق على الحزم في مراحل معينة.

  • القواعد (Rules): تعليمات محددة داخل السلاسل تحدد الإجراء الذي يجب اتخاذه تجاه الحزم.


جداول IPTables الأساسية

يحتوي IPTables على عدة جداول رئيسية، أهمها:

  1. filter (فلترة): الجدول الافتراضي والمسؤول عن السماح أو حجب مرور الحزم.

  2. nat (تحويل العناوين): يستخدم لتغيير عناوين IP في الحزم، مثل تحويل عناوين الشبكة الداخلية إلى عنوان خارجي (MASQUERADE أو SNAT).

  3. mangle (تغيير الحزم): يُستخدم لتعديل خصائص الحزم مثل تعديل العلامات (marks) أو تعديل نوع الخدمة (TOS).

  4. raw (خام): يسمح بالتعامل مع الحزم قبل أن تدخل إلى عملية الفلترة لتخطي أو تغيير بعض السلوكيات.


سلاسل IPTables الرئيسية

كل جدول يحتوي على سلاسل، لكن هناك ثلاث سلاسل رئيسية مشتركة تستخدم في أغلب الحالات:

  • INPUT: تتحكم في الحزم القادمة إلى النظام المحلي.

  • OUTPUT: تتحكم في الحزم الصادرة من النظام المحلي.

  • FORWARD: تتحكم في الحزم التي تمر عبر النظام (توجيه الحزم بين شبكات مختلفة).

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


سياسات السلاسل (Policies)

كل سلسلة تحتوي على سياسة افتراضية (Policy) تحدد ماذا يحدث للحزم التي لا تطابق أي قاعدة. يمكن أن تكون هذه السياسات:

  • ACCEPT: السماح بمرور الحزمة.

  • DROP: إسقاط الحزمة بدون أي إشعار.

  • REJECT: رفض الحزمة مع إرسال إشعار إلى المرسل.

عادةً، يكون من الأفضل تعيين سياسة DROP كافتراضية، ثم السماح فقط للحزم المصرح بها من خلال قواعد مخصصة.


صيغة القاعدة في IPTables

تتبع قواعد IPTables صيغة محددة يمكن تلخيصها كما يلي:

bash
iptables -t [table] -A [chain] [conditions] -j [target]
  • -t [table]: تحديد الجدول، مثل filter أو nat (إذا لم يُحدد، يتم استخدام filter افتراضياً).

  • -A [chain]: إضافة قاعدة في نهاية السلسلة المحددة (يمكن استخدام -I للإدخال في بداية السلسلة).

  • [conditions]: شروط لتطابق الحزمة مثل البروتوكول، عنوان المصدر، عنوان الوجهة، المنفذ، الواجهة.

  • -j [target]: الإجراء الذي يجب اتخاذه على الحزمة إذا تم تطابقها، مثل ACCEPT أو DROP أو REJECT.


أوامر IPTables شائعة الاستخدام

1. عرض قواعد IPTables

لعرض قواعد الجدار الناري الحالية:

bash
iptables -L -v -n
  • -L: لعرض القواعد.

  • -v: معلومات تفصيلية.

  • -n: عدم محاولة ترجمة عناوين IP وأسماء المنافذ (لأداء أفضل).

2. حذف جميع القواعد

يمكن حذف كل القواعد من جميع السلاسل في جدول الفلترة:

bash
iptables -F

3. تعيين سياسة افتراضية

تعيين سياسة افتراضية لسلسلة معينة:

bash
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP

4. السماح بالاتصال المحلي

bash
iptables -A INPUT -i lo -j ACCEPT

السماح بالحزم القادمة من الواجهة المحلية (loopback).

5. السماح بحركة مرور SSH

bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

فتح منفذ SSH للسماح بالاتصالات الواردة.

6. السماح بحركة مرور HTTP و HTTPS

bash
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT

فتح منافذ الويب الأساسية.

7. إسقاط كل الحزم الأخرى

bash
iptables -A INPUT -j DROP

تعيين قاعدة إسقاط لجميع الحزم غير المصرح بها.


شرح قواعد متقدمة في IPTables

1. تحديد مصادر معينة للسماح أو الحجب

يمكن السماح فقط لعناوين IP محددة:

bash
iptables -A INPUT -s 192.168.1.100 -j ACCEPT

أو حجب عنوان معين:

bash
iptables -A INPUT -s 10.0.0.50 -j DROP

2. التحكم في حركة المرور عبر الواجهات

السماح فقط لحركة المرور القادمة من واجهة معينة مثل eth0:

bash
iptables -A INPUT -i eth0 -j ACCEPT

3. التحكم في الاتصالات الجديدة فقط

للسماح فقط باتصالات جديدة على منفذ معين:

bash
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

4. الحد من عدد المحاولات (مكافحة هجمات الـ brute force)

bash
iptables -A INPUT -p tcp --dport 22 -m recent --name sshattack --rcheck --seconds 60 --hitcount 4 -j DROP iptables -A INPUT -p tcp --dport 22 -m recent --name sshattack --set -j ACCEPT

5. إعادة توجيه المنافذ (Port Forwarding)

لإعادة توجيه الاتصالات الواردة على منفذ إلى جهاز آخر داخل الشبكة:

bash
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80 iptables -t nat -A POSTROUTING -j MASQUERADE

إدارة قواعد IPTables

حفظ قواعد IPTables

بعد إعداد قواعد الجدار الناري، يجب حفظها لكي تبقى فعالة بعد إعادة تشغيل النظام. في توزيعات مثل Debian أو Ubuntu يمكن استخدام:

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

وفي CentOS:

bash
service iptables save

استعادة القواعد

لاستعادة القواعد المحفوظة:

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

مقارنة بين IPTables وأدوات أخرى

مع تطور الأنظمة، ظهرت أدوات أحدث مثل nftables التي تقدم بديلاً لـ IPTables مع مزايا أكثر كفاءة وتنظيمًا. لكن IPTables لا يزال مستخدمًا على نطاق واسع بسبب بساطته ودعمه في أغلب توزيعات لينوكس.


جدول يوضح أهم الخيارات والأوامر في IPTables

الأمر الوصف الاستخدام النموذجي
iptables -L عرض جميع القواعد الحالية iptables -L -v -n
iptables -F حذف جميع القواعد من الجداول iptables -F
iptables -A [chain] إضافة قاعدة في نهاية سلسلة معينة iptables -A INPUT -p tcp -j ACCEPT
iptables -I [chain] إدخال قاعدة في بداية سلسلة iptables -I INPUT 1 -j DROP
iptables -D [chain] حذف قاعدة من سلسلة معينة iptables -D INPUT 1
iptables -P [chain] تعيين سياسة افتراضية لسلسلة معينة iptables -P INPUT DROP
iptables-save حفظ القواعد في ملف iptables-save > /etc/iptables/rules.v4
iptables-restore استعادة القواعد من ملف iptables-restore < /etc/iptables/rules.v4
-p [protocol] تحديد البروتوكول (tcp, udp, icmp) -p tcp
--dport [port] تحديد منفذ الوجهة --dport 80
--sport [port] تحديد منفذ المصدر --sport 1024
-s [source IP] تحديد عنوان IP المصدر -s 192.168.1.1
-d [dest IP] تحديد عنوان IP الوجهة -d 10.0.0.1
-j [target] الإجراء المتبع عند تطابق القاعدة -j ACCEPT أو -j DROP

أهمية IPTables في تأمين الشبكة

يُعتبر IPTables من الأدوات الحيوية التي تمنح المستخدمين القدرة على:

  • تقليل الهجمات الإلكترونية: من خلال حجب الحزم المشبوهة والمشاريع.

  • تنظيم حركة المرور: بتحديد من يُسمح له بالاتصال ومن يُرفض.

  • حماية البيانات: منع الوصول غير المصرح به إلى الخدمات والأنظمة.

  • إدارة موارد الشبكة: التحكم في الترافيك وتقليل الضغط على النظام.


الختام

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


المصادر والمراجع

  1. The Linux Foundation - IPTables Tutorial and How To: https://www.linuxfoundation.org

  2. Netfilter/iptables project documentation: https://netfilter.org/projects/iptables/index.html