كيفية إعداد جدار ناري باستخدام IPTables على Ubuntu 14.04
يعتبر إعداد جدار ناري (Firewall) من الأمور الأساسية التي يجب على أي مسؤول نظام أو مستخدم يرغب في حماية خوادمه وشبكته إتقانها. من أشهر الأدوات لإدارة الجدران النارية على أنظمة Linux هو iptables، والذي يمنح المستخدم تحكماً دقيقاً في مرور البيانات بين النظام والشبكة، ويسمح بتحديد قواعد مفصلة لتصفية حركة المرور وحماية النظام من التهديدات الخارجية.
تأتي أنظمة Ubuntu 14.04 ضمن توزيعات Linux التي تدعم iptables بشكل افتراضي، وتعتبر إعداداته من المهام الحيوية التي تضمن أمان النظام وتمنع الاختراقات غير المرغوبة. في هذا المقال سيتم شرح كيفية إعداد جدار ناري باستخدام iptables على Ubuntu 14.04 بطريقة مفصلة تغطي المفاهيم الأساسية، إعداد القواعد، حفظها، وكيفية التعامل مع المشاكل المحتملة.
مفهوم جدار الحماية (Firewall) وأهمية iptables
جدار الحماية هو نظام أمني يعمل كحاجز بين شبكة داخلية خاصة والعالم الخارجي، حيث يقوم بفحص حركة مرور البيانات ومراقبتها وفق قواعد محددة مسبقًا تسمح أو تمنع مرور هذه البيانات. الهدف الأساسي من الجدار الناري هو حماية النظام من الهجمات الإلكترونية، مثل محاولات الدخول غير المصرح بها، والبرمجيات الخبيثة، وحركة المرور غير المرغوب فيها.
iptables هو أداة قوية على نظام Linux تستخدم لتكوين جدار ناري، وهي تعتمد على ما يُسمى بـ “جداول” (Tables) تحتوي على “سلاسل” (Chains) من القواعد (Rules) التي تُطبق على حركة مرور الشبكة. يتيح iptables إمكانيات مرنة جدًا للتحكم في كيفية استقبال، إرسال، أو رفض حزم البيانات.
المكونات الأساسية لـ IPTables
لفهم كيفية إعداد جدار ناري بواسطة iptables، من المهم التعرف على المكونات الأساسية التي يتعامل معها:
1. الجداول (Tables)
-
filter: الجدول الافتراضي، مسؤول عن تصفية حركة المرور. يحتوي على سلاسل مثل INPUT و OUTPUT و FORWARD.
-
nat: مسؤول عن تعديل عناوين IP في حزم البيانات، يستخدم عادة لإعادة توجيه المنافذ.
-
mangle: يستخدم لتعديل خصائص الحزم (مثل تغيير علامات الـ TTL).
-
raw: يستخدم لتحديد استثناءات معينة من المعالجة التلقائية.
2. السلاسل (Chains)
-
INPUT: تعالج الحزم الواردة إلى الجهاز.
-
OUTPUT: تعالج الحزم الصادرة من الجهاز.
-
FORWARD: تعالج الحزم التي يتم توجيهها عبر الجهاز بين شبكات أخرى.
3. القواعد (Rules)
تحدد ما يجب فعله مع الحزم، سواء بالسماح بها أو رفضها أو تسجيلها.
خطوات إعداد جدار ناري باستخدام IPTables على Ubuntu 14.04
الخطوة 1: التحقق من حالة iptables الحالية
يمكن عرض القواعد الحالية لجدار الحماية باستخدام الأمر التالي:
bashsudo iptables -L -v -n
هذا الأمر يعرض القواعد الموجودة مع معلومات تفصيلية عن الحزم التي تم التعامل معها.
الخطوة 2: تحديد سياسة افتراضية (Default Policy)
السياسة الافتراضية تحدد ما يحدث للحزم التي لا تطابق أي قاعدة. في العادة يتم تعيين السياسات التالية:
-
INPUT: DROP (رفض الحزم الواردة افتراضياً)
-
FORWARD: DROP (رفض حزم التوجيه افتراضياً)
-
OUTPUT: ACCEPT (السماح للحزم الصادرة افتراضياً)
لضبط السياسات:
bashsudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
الخطوة 3: السماح بالحركة الأساسية
للحفاظ على عمل النظام بشكل طبيعي، يجب السماح للحركة الأساسية التي تشمل:
-
السماح بحركة المرور المحلية (loopback interface):
bashsudo iptables -A INPUT -i lo -j ACCEPT
-
السماح بحركة المرور المرتبطة والمُذنبة (Established and Related connections):
bashsudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
الخطوة 4: السماح بالاتصالات الأساسية المطلوبة
بحسب نوع الخدمات التي تريد تشغيلها على الخادم، يجب فتح المنافذ المطلوبة. مثلاً، للسماح باتصالات SSH (المنفذ 22):
bashsudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
وللسماح باتصالات HTTP و HTTPS (المنافذ 80 و 443):
bashsudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
الخطوة 5: منع الاتصالات غير المرغوب فيها
بعد السماح بالحركة المطلوبة، يمكن ترك السياسة الافتراضية تمنع كل شيء آخر (DROP).
مثال عملي لإعداد قواعد iptables متكاملة
في هذا الجزء، سنجمع قواعد متكاملة تحمي الخادم بشكل جيد على Ubuntu 14.04 مع السماح بالاتصالات الأساسية.
bash# مسح القواعد القديمة
sudo iptables -F
sudo iptables -X
sudo iptables -Z
# تعيين السياسات الافتراضية
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# السماح بالاتصالات المحلية
sudo iptables -A INPUT -i lo -j ACCEPT
# السماح بحركة المرور المرتبطة والمذنبة
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# السماح باتصالات SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# السماح باتصالات HTTP و HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
حفظ قواعد iptables
على Ubuntu 14.04، لا تحفظ القواعد تلقائياً بعد إعادة التشغيل. لذلك يجب حفظ القواعد يدويًا حتى تُعاد تطبيقها عند كل إقلاع للنظام.
الطريقة الأولى: استخدام iptables-persistent
-
تثبيت الحزمة:
bashsudo apt-get install iptables-persistent
-
أثناء التثبيت سيطلب منك حفظ القواعد الحالية، اضغط نعم.
-
يمكن حفظ القواعد يدوياً في أي وقت بالأوامر:
bashsudo netfilter-persistent save
أو
bashsudo service iptables-persistent save
الطريقة الثانية: استخدام سكربت
يمكن إنشاء ملف سكربت بسيط يقوم بتحميل القواعد عند بدء التشغيل، مثلاً:
bashsudo iptables-save > /etc/iptables.rules
ثم إضافة تحميل القواعد إلى ملف /etc/network/interfaces تحت قسم الواجهة:
bashiface eth0 inet static pre-up iptables-restore < /etc/iptables.rules
مراقبة وإدارة قواعد iptables
لمراقبة حالة iptables:
bashsudo iptables -L -v -n --line-numbers
هذا الأمر يعرض القواعد مع أرقام الأسطر، مما يسهل تعديل أو حذف قواعد محددة.
لحذف قاعدة محددة:
bashsudo iptables -D INPUT <رقم القاعدة>
لإضافة قاعدة في موقع معين:
bashsudo iptables -I INPUT <رقم السطر> -p tcp --dport 25 -j ACCEPT
التعامل مع المشاكل الشائعة
-
عدم القدرة على الاتصال بالخادم بعد ضبط iptables: يحدث عادة بسبب تعيين سياسة INPUT إلى DROP دون السماح باتصالات SSH، لذا يجب التأكد من السماح بالمنفذ 22.
-
فقدان قواعد iptables بعد إعادة التشغيل: يجب حفظ القواعد باستخدام أحد الطريقتين المذكورتين سابقًا.
-
تعطيل iptables مؤقتًا: يمكن إيقاف جميع قواعد iptables بتعيين السياسات إلى ACCEPT ومسح القواعد.
bashsudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -F
مقارنة بين IPTables وبدائل أخرى على Ubuntu 14.04
رغم قوة iptables، ظهرت أدوات أخرى مثل ufw (Uncomplicated Firewall) كواجهة أبسط لتكوين جدار الحماية على Ubuntu. ولكن iptables تبقى الأداة الأساسية والأكثر مرونة وقوة خاصة للمستخدمين المتقدمين.
الجدول التالي يوضح مقارنة بين بعض الأوامر المهمة في iptables
| العملية | الأمر المثال | الوصف |
|---|---|---|
| عرض القواعد | sudo iptables -L -v -n |
عرض القواعد مع تفاصيل الحركة |
| مسح جميع القواعد | sudo iptables -F |
حذف جميع القواعد الحالية |
| تعيين سياسة افتراضية | sudo iptables -P INPUT DROP |
تعيين سياسة الافتراضية للسلسلة |
| السماح بمرور SSH | sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
السماح بحركة مرور SSH |
| حفظ القواعد | sudo iptables-save > /etc/iptables.rules |
حفظ القواعد إلى ملف |
| استعادة القواعد | sudo iptables-restore < /etc/iptables.rules |
استعادة القواعد من ملف |
| حذف قاعدة محددة | sudo iptables -D INPUT 3 |
حذف القاعدة رقم 3 من INPUT |
نصائح متقدمة لتعزيز أمان جدار الحماية باستخدام iptables
-
الحد من محاولات الدخول SSH: يمكن إضافة قواعد لمنع محاولات الدخول المتكررة عبر إضافة نظام لمنع هجمات القوة الغاشمة (Brute Force) باستخدام iptables مع مراقبة عدد المحاولات.
-
تقييد الوصول بناءً على عنوان IP: يمكن السماح أو منع عناوين IP معينة بالوصول للخدمات.
-
تسجيل الحزم المرفوضة: يمكن إضافة قواعد لتسجيل الحزم المرفوضة لمراجعة محاولات الاختراق.
مثال على تسجيل الحزم المرفوضة:
bashsudo iptables -N LOGDROP
sudo iptables -A LOGDROP -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
sudo iptables -A LOGDROP -j DROP
sudo iptables -A INPUT -j LOGDROP
الخلاصة
إعداد جدار ناري باستخدام iptables على Ubuntu 14.04 هو عملية أساسية لضمان أمان النظام وحمايته من الهجمات الخارجية. توفر iptables تحكمًا مرنًا وعالي الدقة في تصفية حركة مرور الشبكة، مما يمكن المستخدم من تخصيص قواعد حماية مخصصة تتناسب مع متطلبات النظام والخدمات التي يشغلها.
من خلال تحديد السياسات الافتراضية، السماح بالحركة الضرورية، ومنع الحزم غير المرغوب فيها، يمكن بناء جدار ناري قوي وفعال. حفظ هذه القواعد وإدارتها بشكل مستمر يضمن استقرار وأمان النظام على المدى الطويل. تبقى الممارسة والتجربة العملية أفضل وسيلة لإتقان استخدام iptables وتحقيق أقصى استفادة من إمكانياته.

