تنفيذ نموذج جدار ناري باستخدام 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، لكن يمكن التأكد عبر:
bashsudo apt-get update sudo apt-get install iptables
للتحقق من الإصدار:
bashiptables -V
الخطوة الثانية: مسح القواعد الحالية (Reset)
قبل البدء ببناء الجدار الناري، من الأفضل تنظيف القواعد السابقة:
bashsudo iptables -F sudo iptables -X sudo iptables -t nat -F sudo iptables -t mangle -F sudo iptables -t raw -F
الخطوة الثالثة: وضع السياسة الافتراضية (Default Policy)
تحديد سياسات الحظر أو السماح الافتراضية:
bashsudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
بهذا، نمنع كل الحزم الواردة والموجهة (إعادة توجيه)، مع السماح للحزم الخارجة.
الخطوة الرابعة: السماح بالاتصالات المحلية والموثوقة
السماح بالتواصل الداخلي:
bashsudo iptables -A INPUT -i lo -j ACCEPT
السماح باتصالات تم إنشاؤها مسبقاً (حالة الاتصال Established وRelated):
bashsudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
الخطوة الخامسة: فتح منافذ محددة للخدمات الأساسية
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
الخطوة السادسة: الحماية من هجمات المسح Scan والـ DoS
منع الحزم المشبوهة (مثل الحزم بدون حالة اتصال)
bashsudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
الحد من محاولات الاتصال (Rate Limiting)
bashsudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/min --limit-burst 10 -j ACCEPT
الخطوة السابعة: حفظ القواعد
في Ubuntu 14.04، لا يتم حفظ قواعد IPTables تلقائياً بعد إعادة التشغيل. لحفظها:
تثبيت iptables-persistent
bashsudo apt-get install iptables-persistent
أثناء التثبيت، سيتم سؤالك إن كنت تريد حفظ القواعد الحالية. اختر “Yes”.
لحفظ التغييرات مستقبلاً:
bashsudo sh -c "iptables-save > /etc/iptables/rules.v4"
الخطوة الثامنة: إدارة الجدار الناري عبر سكريبت تلقائي
إنشاء سكريبت لتطبيق القواعد تلقائياً:
bashsudo 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
جعل السكريبت قابلاً للتنفيذ:
bashsudo chmod +x /etc/iptables/firewall.sh
لتنفيذه تلقائياً عند الإقلاع، أضفه إلى rc.local:
bashsudo nano /etc/rc.local
أضف السطر التالي قبل exit 0:
bashsh /etc/iptables/firewall.sh
الخطوة التاسعة: إعداد NAT وPort Forwarding (عند الحاجة)
تفعيل IP Forwarding
bashsudo sysctl -w net.ipv4.ip_forward=1
أو تعديل /etc/sysctl.conf:
bashnet.ipv4.ip_forward=1
إضافة قاعدة NAT:
bashsudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
إعادة توجيه منفذ:
bashsudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
الخطوة العاشرة: مراقبة الجدار الناري وتحليل السجلات
عرض القواعد الحالية:
bashsudo iptables -L -n -v
تسجيل محاولات الدخول غير المرغوبة:
bashsudo 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 الأصلية دون الاعتماد على تطبيقات خارجية.
المراجع:
-
Ubuntu 14.04 Server Guide – Security and Firewall Configuration

