يُمثل الوصول غير المصرح به واختراق الخوادم تهديدات جدية، ولهذا ينبغي تطبيق جدار حماية كجزء من منظومة أمان شبكتك. إتقان قواعد Iptables هو أحد الأسس الأساسية للحدّ من هذه المخاطر على أنظمة Linux. سيرشدك هذا الدليل إلى المفاهيم الأساسية لجدار الحماية، من عرض قواعد iptables وحذف قواعد iptables في Ubuntu، مما يُمكّنك من تنفيذ أوامر بسيطة لإتمام ذلك. قبل الحديث عن كيفية سرد قواعد iptables أو حذفها، لنتعرف أولاً على ماهية قواعد iptables وسبب استخدامها.
ما هو Iptables؟
iptables هو أداة جدار حماية تعمل من سطر الأوامر، تتيح لك السماح بحركة المرور أو حجبها عبر سلاسل السياسات. عندما تحاول اتصالات الوصول إلى نظامك، يبحث iptables في قائمة القواعد عن تطابق لكل اتصال، مما يجعله أداة فعّالة لأمن الشبكة. إذا لم يعثر على قاعدة مطابقة، يلجأ إلى الإجراء الافتراضي.
يأتي iptables مثبّتاً مسبقاً في أغلب توزيعات Linux. يمكنك استخدام الأمر التالي لتحديثه أو تثبيته:
sudo apt-get install iptables
لماذا نستخدم Iptables؟
بوصفه جداراً نارياً يعمل من سطر الأوامر في Linux، يتيح iptables لمسؤولي النظام التحكم في حركة المرور الواردة والصادرة عبر قواعد جداول قابلة للتهيئة. يعتمد iptables على مجموعة من الجداول التي تحتوي على سلاسل من القواعد المدمجة أو المعرَّفة من قِبل المستخدم.
كما أشرنا في القسم السابق، يؤدي iptables دوراً محورياً في أمان الشبكة لمعظم أنظمة Linux. يتناول بقية هذا المقال بالتفصيل كيفية سرد قواعد iptables بالكامل، بما في ذلك مفاهيم مثل عرض قواعد iptables وحذفها.
تحديداً، يناقش هذا المقال بعض المهام الأساسية في iptables، ليوضح لك كيفية: سرد القواعد، وإعادة تعيين عدادات الحزم والبايتات، وحذف قاعدة من iptables، وتفريغ السلاسل، وحذف جميع السلاسل وقبول كل حركة المرور.
دليل شامل لـ Iptables في Ubuntu
قبل الخوض في عرض قواعد iptables، تأكد من أنك تعمل على خادم Linux مع تثبيت أمر iptables. يُشترط كذلك امتلاك صلاحيات sudo. عند العمل بالجدران النارية، احرص على عدم حجب وصولك إلى الخادم بسبب منع حركة مرور SSH (المنفذ: 22 افتراضياً). إن فقدت الوصول بسبب إعدادات الجدار الناري، قد تحتاج إلى الاتصال بالخادم عبر وحدة تحكم خارجية النطاق لإصلاح المشكلة.
اقرأ أيضاً: كيف تُغيّر منفذ SSH في Linux - دليل سريع خطوة بخطوة
عرض القواعد حسب المواصفات
يمكنك عرض قواعد iptables النشطة في شكل جدول أو بوصفها قائمة بمواصفات القواعد. يوفر كلا الأسلوبين تقريباً المعلومات ذاتها بتنسيقين مختلفين. لسرد جميع القواعد النشطة في iptables وفق المواصفات، شغِّل أمر iptables مع الخيار -S:
sudo iptables -S
بعد تشغيل هذا الأمر لعرض قواعد iptables، ستظهر لك نتيجة مشابهة لما يلي:

سرد سلسلة محددة
إن أردت تقييد ناتج عرض iptables بسلسلة معينة كـ INPUT أو OUTPUT أو TCP، يمكنك تحديد اسم السلسلة مباشرةً بعد الخيار -S. على سبيل المثال، يساعدك الأمر التالي على تحديد سلسلة TCP:
sudo iptables -S TCP

كما أشرنا سابقاً، ثمة أسلوب آخر لعرض قواعد iptables: وهو عرض القواعد في شكل جدول. لنستعرض هذا الأسلوب.
عرض القواعد على شكل جداول
يساعدك عرض قواعد iptables في شكل جدول على مقارنة القواعد المختلفة. شغِّل الأمر التالي مع الخيار -L لعرض جميع القواعد النشطة في جدول:
sudo iptables -L
يعرض هذا الأمر جميع القواعد الحالية مرتبةً حسب السلاسل. يمكنك تقييد الناتج بسلسلة محددة كـ INPUT أو OUTPUT أو TCP وغيرها، وذلك بتحديد اسم السلسلة مباشرةً بعد الخيار -L. في ما يلي مثال على تقييد عرض قواعد iptables بسلسلة INPUT:
sudo iptables -L INPUT

يُظهر السطر الأول من الناتج أعلاه اسم السلسلة (INPUT في هذه الحالة) والسياسة الافتراضية لها (DROP). يحتوي السطر التالي على عناوين أعمدة الجدول وقواعد السلسلة. سنستعرضها جميعاً لمساعدتك على فهمها:
- Target: إذا تطابقت حزمة مع قاعدة ما، يحدد الهدف (Target) ما يجب فعله بها. يمكنك قبول الحزمة، أو إسقاطها، أو تسجيلها، أو إرسالها إلى سلسلة أخرى لمقارنتها بمزيد من القواعد.
- prot: البروتوكول (مثل TCP أو udp أو ICMP أو all)
- opt: يشير إلى خيارات IP (نادر الاستخدام)
- source: يعرض عنوان IP المصدر أو الشبكة الفرعية للحركة
- destination: يعرض عنوان IP الوجهة أو الشبكة الفرعية للحركة
العمود الذي لا يحمل تسمية يشير إلى خيارات القاعدة، ويتضمن أي جزء من القاعدة لم يُذكر في الأعمدة السابقة. قد تشمل هذه المعلومات منافذ المصدر والوجهة، أو حالة اتصال الحزمة.
اقرأ أيضاً: تثبيت OpenVPN على VPS – إعداد عميل OpenVPN 🔑
كيف تعرض عدد الحزم والحجم الإجمالي؟
عند عرض قواعد iptables، يمكن إظهار عدد الحزم والحجم الإجمالي لها بالبايت لكل قاعدة على حدة؛ وهذا مفيد لمعرفة أي القواعد تنطبق على الحزم. لتحقيق ذلك، يجب استخدام -L و خيار -v معاً لإتمام ذلك.
فيما يلي مثال نستخدم فيه سلسلة INPUT مرة أخرى مع الخيار -v:
sudo iptables -L INPUT -v

لاحظ أن القائمة تضم الآن عمودين إضافيين بعنوان pkts و bytes. تعرّفنا على طرق متعددة لعرض جميع قواعد iptables، وحان الآن وقت معرفة كيفية إعادة تعيين أعداد الحزم والحجم الإجمالي.
كيف تعيد تعيين عدد الحزم والحجم الإجمالي؟
استخدم الخيار -Z إذا أردت مسح عدادات الحزم والبايت أو إعادتها إلى الصفر. تُعاد هذه العدادات تلقائياً عند إعادة تشغيل الخادم، وهذا مفيد إذا كنت تريد التحقق من وصول حركة مرور جديدة تطابق قواعدك الحالية.
يمكنك مسح العدادات لجميع السلاسل والقواعد باستخدام الخيار -Z منفرداً:
sudo iptables -Z
لإزالة العدادات لجميع القواعد في سلسلة محددة، استخدم الخيار -Z مع تحديد اسم السلسلة. على سبيل المثال، الأمر التالي يُعيد تعيين عدادات سلسلة INPUT:
sudo iptables -Z INPUT
إذا أردت إزالة العدادات لقاعدة بعينها، فحدد اسم السلسلة ورقم القاعدة بدقة. على سبيل المثال، يمكنك تنفيذ الأمر التالي لإعادة تعيين عدادات القاعدة الأولى في سلسلة INPUT:
sudo iptables -Z INPUT 1
إلى جانب معرفة أوامر عرض قواعد iptables وطرق إعادة تعيين عدادات الحزم والبايت، من المفيد أيضاً معرفة كيفية حذف قاعدة من iptables.
اقرأ أيضاً: كيفية تثبيت خادم PPTP VPN على VPS الخاص بك
كيف تحذف قواعد iptables؟
يمكنك استخدام أوامر متعددة لحذف قواعد iptables أو حتى مسح جميع القواعد في سلسلة. سنتناول هذه الطرق هنا،
حذف القواعد حسب المواصفات
إحدى طرق حذف قواعد iptables هي تحديد القاعدة مباشرةً، إذ تتيح لك تشغيل أمر iptables مع الخيار -D ومواصفات القاعدة. إذا أردت حذف قواعد بهذه الطريقة، يمكنك الاستعانة بمخرجات قائمة القواعد عبر الأمر iptables -S.
على سبيل المثال، لحذف القاعدة التي تُسقط الحزم الواردة غير الصالحة (-A INPUT -m conntrack –ctstate INVALID -j DROP)، نفّذ الأمر التالي:
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
انتبه إلى أن الخيار -A يُحدد موضع القاعدة عند إنشائها، ولا يجب تضمينه هنا.
حذف القواعد حسب السلسلة والرقم
الطريقة الأخرى لحذف قواعد iptables هي باستخدام اسم السلسلة ورقم السطر. اكتب الأمر التالي لتحديد رقم سطر القاعدة، وعرض القواعد بصيغة جدولية، وإضافة الخيار –line-numbers:
sudo iptables -L --line-numbers

بعد تنفيذ هذا الأمر، يظهر رقم كل قاعدة من قواعد iptables تحت عمود num.
حين تعرف القاعدة التي تريد حذفها، احتفظ باسم سلسلتها ورقم سطرها. استخدم الأمر iptables -D مع اسم السلسلة ورقم القاعدة. مثلاً، إذا أردت حذف قاعدة INPUT التي تُسقط الحزم غير الصالحة، ستجدها القاعدة رقم 3 في سلسلة INPUT. نفّذ هذا الأمر:
sudo iptables -D INPUT 3
كيف تمسح السلاسل؟
يمكنك حذف جميع قواعد iptables في سلسلة واحدة دفعةً واحدة، وهو ما يُعرف بـ مسح السلسلة. سنستعرض هنا الطرق المختلفة لإجراء ذلك. قبل المتابعة، احرص على ألا تفقد وصولك إلى الخادم عبر SSH عند مسح سلسلة سياستها الافتراضية هي الرفض أو الحظر، لأن ذلك قد يضطرك إلى الاتصال بالخادم عبر وحدة التحكم لاستعادة الوصول.
مسح سلسلة واحدة
لمسح سلسلة معينة، أي حذف جميع قواعدها، استخدم -F أو ما يعادله خيار --flush مع اسم السلسلة المطلوبة. إذا أردت مثلاً حذف جميع قواعد سلسلة INPUT، الأمر بسيط، نفّذ الأمر التالي:
sudo iptables -F INPUT
مسح جميع السلاسل
لحذف جميع السلاسل أو مسحها، استخدم الخيار -F أو ما يعادله –flush بمفرده:
sudo iptables -F
كيف تمسح جميع القواعد، وتحذف جميع السلاسل، وتقبل كل الاتصالات؟
في هذه المرحلة، سنشرح كيفية مسح جميع قواعد جدار الحماية وجداوله وسلاسله، والسماح بكل حركة مرور الشبكة. انتبه إلى أن هذه العملية تُعطّل جدار الحماية فعلياً، لذا اتبع هذا القسم فقط إذا كنت تريد البدء من الصفر في ضبط إعدادات جدار الحماية.
تحتاج أولاً إلى ضبط السياسات الافتراضية لكل سلسلة مدمجة على ACCEPT. السبب الرئيسي لذلك هو ضمان عدم فقدان وصولك إلى الخادم عبر SSH:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
بعد ذلك، امسح جدولَي nat وmangle، وامسح جميع السلاسل (-F)، واحذف جميع السلاسل غير الافتراضية (-X) على النحو التالي:
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
بعد تشغيل الأوامر السابقة، سيسمح جدار الحماية بجميع حركة مرور الشبكة. إذا أردت عرض قواعدك الآن، فلن تجد أيًّا منها؛ إذ تبقى فقط السلاسل الثلاث الافتراضية: INPUT وFORWARD وOUTPUT.
كيف تضبط iptables في Ubuntu؟
كما هو الحال مع أي جدار حماية، تُقرأ قواعد iptables وفق ترتيبها في كل سلسلة، مما يعني أنك بحاجة إلى ضبط القواعد بالترتيب الصحيح. عند إضافة قواعد جديدة، تُلحق في نهاية قائمة القواعد. يمكنك إدراج قاعدة جديدة في موضع محدد من القائمة باستخدام الأمر iptables -I <index> -command. الـ <index> هو رقم الترتيب الذي تريد إدراج القاعدة فيه. يمكنك استخدام الأمر التالي لمعرفة رقم الفهرس المناسب:
sudo iptables -L --line-numbers
الرقم في بداية كل سطر يشير إلى موضع القاعدة في السلسلة. لإضافة قاعدة جديدة فوق قاعدة موجودة، استخدم رقم فهرس تلك القاعدة. على سبيل المثال، لإضافة قاعدة في أعلى السلسلة، نفّذ الأمر التالي مع رقم الفهرس 1:
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
كيف يختلف iptables عن firewalld؟
كلٌّ من iptables وfirewalld أداتان فعّالتان لإدارة جدران الحماية على أنظمة Linux المختلفة، وهما مصمّمتان تحديدًا لتصفية الحزم (التصفية الثابتة). تصفية الحزم هي استراتيجية لجدار الحماية تتيح للمستخدمين التحكم في الوصول إلى شبكة محددة من خلال إدارة حزم المعلومات الواردة والصادرة، إما بالسماح لها بالمرور أو بحجبها، وذلك بناءً على قواعد جدار الحماية المحددة مسبقًا فيما يخص بروتوكولات المصدر والوجهة والمنافذ وعناوين IP. توفر هذه القواعد آليات أمان فعّالة جدًّا، مما يجعل تصفية الحزم خطَّ دفاع قويًّا ضد الأجهزة الموجَّهة من خارج الشبكة المحلية للنظام (LAN).
تجدر الإشارة إلى أن firewalld قُدِّم في الأصل كواجهة لإدارة iptables بهدف تبسيط التعامل معه للمستخدمين. بعد هذه المقارنة بين firewalld وiptables، دعنا نستعرضهما بمزيد من التفصيل.
iptables مقابل firewalld: إعداد النظام
يعتمد كلٌّ من firewalld وiptables على إعدادات وآليات تخزين افتراضية مختلفة. مع iptables، يتطلب كل تغيير مسح جميع القواعد القديمة واستيراد القواعد الجديدة، مما يستلزم إعادة تشغيل النظام. أما مع firewalld، فلا تُعاد كتابة القواعد من الصفر؛ بل تُطبَّق التعديلات والفروق على القواعد القائمة مباشرةً، وتظهر آثارها فور تطبيقها دون الحاجة إلى إعادة التشغيل.
iptables مقابل firewalld: واجهة المستخدم
يوفر firewalld واجهة مستخدم رسومية (GUI)، في حين يعتمد iptables على واجهة سطر الأوامر (CLI)، وهو ما قد يُصعّب على بعض المستخدمين الوصول إلى قواعد جدار الحماية في نواة Linux عبر iptables، مما يجعل firewalld خيارًا أكثر سهولةً. مع ذلك، تجدر الإشارة إلى أن iptables أسرع استجابةً لاعتماده على أوامر قصيرة. في نهاية المطاف، لكلٍّ منهما حالات استخدام مختلفة، فاختر الأداة التي تشعر بارتياح أكبر في التعامل معها.
خلاصة القول: عرض قواعد iptables
iptables أداة مرنة لإدارة جدران الحماية، مصممة تحديدًا لأنظمة Linux. سواء كنت مستخدمًا جديدًا لـ Linux أو مسؤول نظام محترفًا، ستجد في قواعد iptables ما يفيدك. تناولت هذه المقالة الأوامر الأساسية لهذه الأداة، بما فيها عرض القواعد وحذفها، بهدف استعراض موجز لإمكانيات Linux. علاوةً على ذلك، يمكنك الاستفادة من حلول استضافة Linux VPS للاستفادة الكاملة من إمكانيات هذا النظام. في Cloudzy، نوفر خططًا متنوعة لاستضافة Linux VPS مدعومة بـ KVM، تناسب حالات استخدام متعددة كاستضافة المواقع ونشر تطبيقات الويب وإعداد بيئات التطوير والاختبار وأتمتة الكود.
الأسئلة الشائعة
كيف تعرض جميع قواعد iptables في Linux حسب المواصفات؟
لعرض جميع قواعد iptables النشطة حاليًّا وفق مواصفاتها أو وظائفها، يمكنك تنفيذ أمر iptables متبوعًا بـ علم -S. انتبه إلى استخدام sudo الكلمة المفتاحية في هذه الحالة:
sudo iptables -S
كيف تحذف قواعد iptables؟
لحذف سلسلة بأكملها بما تحتويه من قواعد، يجب عليك استخدام الخيار -F أو –flush مع اسم السلسلة. لنفترض أننا نريد حذف جميع القواعد في سلسلة OUTPUT. ما الذي يجب فعله؟ ببساطة، نفّذ هذا الأمر:
sudo iptables -F OUTPUT
كيف يعمل iptables في Ubuntu؟
يقارن جدار الحماية iptables حركة مرور الشبكة بمجموعة من القواعد. تحدد هذه القواعد خصائص الحزمة التي ينبغي مطابقتها، والإجراء الواجب اتخاذه عند تحقق المطابقة. بطبيعة الحال، تتوفر خيارات كثيرة لتحديد الحزم التي تنطبق عليها قاعدة معينة.
هل تسري قواعد iptables فور تطبيقها؟ ولماذا؟
نعم، تسري قواعد iptables فور تطبيقها؛ لأن السكريبت يضيف القواعد إلى سلسلتَي INPUT وOUTPUT، وتُلحق هذه القواعد في نهاية كل سلسلة.