انتقل إلى المحتوى الرئيسي

الفصل 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