ديف أوبس

جدار ناري آمن باستخدام IPTables

جدول المحتوى

تنفيذ نموذج جدار ناري باستخدام IPTables على Ubuntu 14.04: دليل شامل

مقدمة

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

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


التعريف بـ IPTables ودوره في أمن الشبكة

IPTables هي أداة سطر أوامر لإعداد وتكوين الجدار الناري في أنظمة Linux، وهي تعمل بالاعتماد على Netfilter، وهي واجهة ضمن نواة Linux تتحكم في معالجة الحزم.

IPTables تعتمد على مفهوم “السلاسل” (Chains) و”الجداول” (Tables):

  • الجداول (Tables):

    • filter: الجداول الافتراضية لتصفية الحزم.

    • nat: تستخدم لترجمة العناوين (مثل NAT وPort Forwarding).

    • mangle: تُستخدم لتعديل الحزم.

    • raw: تُستخدم لتجاوز تتبع الاتصالات (Connection Tracking).

  • السلاسل (Chains):

    • INPUT: الحزم الواردة إلى الجهاز.

    • OUTPUT: الحزم الصادرة من الجهاز.

    • FORWARD: الحزم التي تمر عبر الجهاز إلى وجهة أخرى.

    • سلاسل إضافية مثل PREROUTING و POSTROUTING للجداول الأخرى.


الخطوة الأولى: التحقق من تثبيت IPTables

يُفترض أن تكون IPTables مثبتة بشكل افتراضي على Ubuntu 14.04، لكن يمكن التأكد عبر:

bash
sudo apt-get update sudo apt-get install iptables

للتحقق من الإصدار:

bash
iptables -V

الخطوة الثانية: مسح القواعد الحالية (Reset)

قبل البدء ببناء الجدار الناري، من الأفضل تنظيف القواعد السابقة:

bash
sudo iptables -F sudo iptables -X sudo iptables -t nat -F sudo iptables -t mangle -F sudo iptables -t raw -F

الخطوة الثالثة: وضع السياسة الافتراضية (Default Policy)

تحديد سياسات الحظر أو السماح الافتراضية:

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

بهذا، نمنع كل الحزم الواردة والموجهة (إعادة توجيه)، مع السماح للحزم الخارجة.


الخطوة الرابعة: السماح بالاتصالات المحلية والموثوقة

السماح بالتواصل الداخلي:

bash
sudo iptables -A INPUT -i lo -j ACCEPT

السماح باتصالات تم إنشاؤها مسبقاً (حالة الاتصال Established وRelated):

bash
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

الخطوة الخامسة: فتح منافذ محددة للخدمات الأساسية

SSH (منفذ 22)

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

HTTP و HTTPS (منفذي 80 و 443)

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

الخطوة السادسة: الحماية من هجمات المسح Scan والـ DoS

منع الحزم المشبوهة (مثل الحزم بدون حالة اتصال)

bash
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

الحد من محاولات الاتصال (Rate Limiting)

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

الخطوة السابعة: حفظ القواعد

في Ubuntu 14.04، لا يتم حفظ قواعد IPTables تلقائياً بعد إعادة التشغيل. لحفظها:

تثبيت iptables-persistent

bash
sudo apt-get install iptables-persistent

أثناء التثبيت، سيتم سؤالك إن كنت تريد حفظ القواعد الحالية. اختر “Yes”.

لحفظ التغييرات مستقبلاً:

bash
sudo sh -c "iptables-save > /etc/iptables/rules.v4"

الخطوة الثامنة: إدارة الجدار الناري عبر سكريبت تلقائي

إنشاء سكريبت لتطبيق القواعد تلقائياً:

bash
sudo nano /etc/iptables/firewall.sh

ثم كتابة المحتوى التالي:

bash
#!/bin/bash # Flush old rules iptables -F iptables -X iptables -t nat -F iptables -t mangle -F # Default policies iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # Allow loopback and established connections iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT # HTTP/HTTPS iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Drop invalid packets iptables -A INPUT -m conntrack --ctstate INVALID -j DROP # Rate limiting for SSH iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/min --limit-burst 10 -j ACCEPT

جعل السكريبت قابلاً للتنفيذ:

bash
sudo chmod +x /etc/iptables/firewall.sh

لتنفيذه تلقائياً عند الإقلاع، أضفه إلى rc.local:

bash
sudo nano /etc/rc.local

أضف السطر التالي قبل exit 0:

bash
sh /etc/iptables/firewall.sh

الخطوة التاسعة: إعداد NAT وPort Forwarding (عند الحاجة)

تفعيل IP Forwarding

bash
sudo sysctl -w net.ipv4.ip_forward=1

أو تعديل /etc/sysctl.conf:

bash
net.ipv4.ip_forward=1

إضافة قاعدة NAT:

bash
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

إعادة توجيه منفذ:

bash
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

الخطوة العاشرة: مراقبة الجدار الناري وتحليل السجلات

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

bash
sudo iptables -L -n -v

تسجيل محاولات الدخول غير المرغوبة:

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

السجلات تظهر عادة في:

bash
/var/log/syslog

جدول يوضح أهم القواعد النموذجية المستخدمة

الخدمة / الغرض الأمر المستخدم
تنظيف القواعد السابقة iptables -F ، iptables -X
سياسة افتراضية للحماية iptables -P INPUT DROP ، iptables -P OUTPUT ACCEPT
السماح بالحلقات المحلية iptables -A INPUT -i lo -j ACCEPT
السماح بالاتصالات الحالية iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
فتح SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT
فتح HTTP و HTTPS iptables -A INPUT -p tcp --dport 80 -j ACCEPT ، iptables -A INPUT -p tcp --dport 443 -j ACCEPT
رفض الحزم غير الشرعية iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
الحد من اتصالات SSH iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/min --limit-burst 10 -j ACCEPT
حفظ القواعد iptables-save > /etc/iptables/rules.v4

الخاتمة

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

المراجع:

  1. IPTables Documentation – The Netfilter Project

  2. Ubuntu 14.04 Server Guide – Security and Firewall Configuration