الفصل 9.3 - جدار الحماية
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم جدران الحماية في لينكس
- إعداد iptables
- استخدام firewalld (Red Hat/CentOS)
- استخدام ufw (Ubuntu/Debian)
- فهم قواعد التصفية
- تأمين الخدمات
أنواع جدران الحماية
iptables
جدار حماية منخفض المستوى، تحكم مباشر في النواة:
الخصائص:
- قوي جدًا
- معقد
- نواة مباشرة
- متاح في كل مكان
firewalld
جدار حماية عالي المستوى، واجهة مبسطة:
- مناطق (public, internal, إلخ.)
- خدمات محددة مسبقًا
- أبسط من iptables
- Red Hat/CentOS/Fedora
ufw
جدار حماية غير معقد، بسيط جدًا:
- واجهة بسيطة
- Ubuntu/Debian
- يعتمد على iptables
- سهل الاستخدام
iptables - الأساسيات
الجداول
# الجداول الرئيسية
# - filter: التصفية (الافتراضي)
# - nat: ترجمة العناوين
# - mangle: تعديل الحزم
# عرض القواعد
sudo iptables -L -n -v
# حسب الجدول
sudo iptables -t filter -L
sudo iptables -t nat -L
السلاسل
جدول FILTER:
- INPUT: الحزم الواردة
- OUTPUT: الحزم الصادرة
- FORWARD: الحزم الموجهة
عرض القواعد
# قائمة بسيطة
sudo iptables -L
# مع الأرقام
sudo iptables -L --line-numbers
# رقمي (بدون حل DNS)
sudo iptables -L -n
# مفصل (تفاصيل)
sudo iptables -L -v
# جميع الجداول
sudo iptables -t nat -L -n -v
قواعد iptables
إضافة قاعدة
# الصيغة: iptables -A CHAINE -j ACTION
# السماح بـ SSH (المنفذ 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# السماح بـ HTTP (المنفذ 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# السماح بـ HTTPS (المنفذ 443)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# رفض كل ما تبقى
sudo iptables -A INPUT -j DROP
إدراج قاعدة
# إدراج في البداية (أولوية)
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
# إدراج في موقع محدد
sudo iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT
حذف قاعدة
# حسب الرقم
sudo iptables -D INPUT 1
# حسب المطابقة
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
السياسة الافتراضية
# السياسة الافتراضية (إذا لم تطابق أي قاعدة)
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
أمثلة iptables
إعداد أساسي
#!/bin/bash
# إعداد جدار حماية أساسي
# تفريغ القواعد الحالية
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
# السياسة الافتراضية
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 OUTPUT -o lo -j ACCEPT
# السماح بالاتصالات القائمة
sudo iptables -A INPUT -m state --state 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
# ICMP (ping)
sudo iptables -A INPUT -p icmp -j ACCEPT
حفظ/استعادة
# حفظ
sudo iptables-save > /etc/iptables/rules.v4
# استعادة
sudo iptables-restore < /etc/iptables/rules.v4
# تلقائي عند بدء التشغيل (Ubuntu/Debian)
sudo apt install iptables-persistent
sudo netfilter-persistent save
firewalld
المفاهيم
المناطق:
- public: منطقة عامة (افتراضي)
- internal: شبكة داخلية
- trusted: موثوق
- work: مكتب
- home: منزل
الأوامر الأساسية
# الحالة
sudo firewall-cmd --state
sudo firewall-cmd --list-all
# المناطق
sudo firewall-cmd --get-zones
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --set-default-zone public
# الخدمات
sudo firewall-cmd --get-services
sudo firewall-cmd --list-services
إضافة خدمات
# إضافة خدمة (مؤقت)
sudo firewall-cmd --add-service=http
# إضافة خدمة (دائم)
sudo firewall-cmd --add-service=http --permanent
# إعادة تحميل
sudo firewall-cmd --reload
# التحقق
sudo firewall-cmd --list-services
المنافذ
# إضافة منفذ
sudo firewall-cmd --add-port=8080/tcp
# دائم
sudo firewall-cmd --add-port=8080/tcp --permanent
# إزالة
sudo firewall-cmd --remove-port=8080/tcp --permanent
ufw (Ubuntu/Debian)
التفعيل
# عرض الحالة
sudo ufw status
# تفعيل
sudo ufw enable
# تعطيل
sudo ufw disable
القواعد الأساسية
# السماح بـ SSH
sudo ufw allow 22/tcp
sudo ufw allow ssh
# السماح بـ HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# السماح من عنوان IP
sudo ufw allow from 192.168.1.0/24
# رفض
sudo ufw deny 3306/tcp # MySQL
# حذف قاعدة
sudo ufw delete allow 80/tcp
عرض القواعد
# قائمة مرقمة
sudo ufw status numbered
# تفاصيل
sudo ufw status verbose
إعادة تعيين
# إعادة تعيين جميع القواعد
sudo ufw reset
أفضل الممارسات
الأمان
# 1. السماح دائمًا بـ SSH قبل التفعيل
sudo ufw allow ssh
sudo ufw enable
# 2. سياسة افتراضية مقيدة
# DROP لـ INPUT، ACCEPT لـ OUTPUT
# 3. السماح فقط بما هو ضروري
# لا قواعد واسعة جدًا
# 4. اختبار قبل الحفظ
# التحقق من الاتصال
# 5. تسجيل الرفض
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "
الصيانة
# التحقق من القواعد بانتظام
sudo iptables -L -n -v
sudo firewall-cmd --list-all
sudo ufw status verbose
# حفظ الإعدادات
sudo iptables-save > backup-$(date +%Y%m%d).rules
الملخص
في هذا الفصل، تعلمت:
الأنواع: iptables (منخفض المستوى)، firewalld (مناطق)، ufw (بسيط)
iptables: الجداول، السلاسل، القواعد، السياسات
firewalld: المناطق، الخدمات، المنافذ، الدائم
ufw: التفعيل، القواعد، الحالة، إعادة التعيين
الأمان: سياسة مقيدة، السماح بالضروري فقط
الممارسة: إعداد أساسي، حفظ، اختبار
الخطوات التالية
الفصل 9.4: التدقيق ومراقبة الأمان
الوحدة 10: إدارة الحزم
تم إنشاء الفصل في: ديسمبر 2024