جدار الحماية (Firewall) وتأمين النظام (UFW, Firewalld, Iptables)


مرحباً يا جماعة! كمهندس أنظمة لينكس، تأمين الخوادم هو شغلي الشاغل. والفايروول هو خط الدفاع الأول. اليوم، بنشوف 3 أدوات رئيسية: Iptables، UFW، و Firewalld. كل وحدة لها استخداماتها وميزاتها.

Iptables: الأساس الصلب

هذا هو قلب جدار الحماية في لينكس. Iptables يعمل مباشرة مع نواة لينكس (kernel) ويسمح لك بتحديد قواعد دقيقة جداً. هو قوي جداً لكن معقد شوي للمبتدئين.

ملاحظة: Iptables هو الأداة الأساسية اللي كل الفايروولات الثانية (مثل UFW و Firewalld) تعتمد عليها في النهاية. هم واجهات أبسط لـ Iptables.

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

sudo iptables -L -v -n

السماح بـ SSH (المنفذ 22):

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

هنا INPUT يعني حركة المرور اللي جاية للنظام، -p tcp البروتوكول TCP، --dport 22 المنفذ 22، و -j ACCEPT يعني اسمح بها.

رفض كل شيء آخر (سياسة افتراضية):

sudo iptables -P INPUT DROP

تحذير: لازم تكون متأكد إنك سمحت بالمنفذ اللي تحتاجه قبل لا تسوي هالخطوة، وإلا ممكن تقفل على نفسك!

حفظ القواعد (مهم جداً!):

قواعد Iptables مؤقتة. إذا سويت إعادة تشغيل للنظام، بتروح. عشان تحفظها:

على Debian/Ubuntu:

sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload

على CentOS/RHEL (أو أنظمة تستخدم firewalld بشكل افتراضي):

sudo yum install iptables-services
sudo systemctl enable iptables
sudo systemctl start iptables
sudo iptables-save > /etc/sysconfig/iptables

UFW: السهل الممتنع (Uncomplicated Firewall)

لو أنت جديد على لينكس أو تبغى حل سريع ومباشر، UFW هو خيارك الأفضل. هو واجهة أبسط لـ Iptables.

التأكد من التثبيت:

sudo apt update && sudo apt install ufw

(في Debian/Ubuntu، عادة يكون مثبت)

تفعيل UFW:

sudo ufw enable

تحذير: قبل التفعيل، تأكد إنك سمحت بمنفذ SSH (إذا كنت تتصل عن بعد) وإلا بتقفل على نفسك.

السماح بـ SSH:

sudo ufw allow ssh

أو بمنفذ معين:

sudo ufw allow 22/tcp

السماح بخدمات شائعة (HTTP, HTTPS):

sudo ufw allow http
sudo ufw allow https

أو بالمنفذ:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

رفض منفذ معين:

sudo ufw deny 23/tcp

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

sudo ufw status verbose

تعطيل UFW:

sudo ufw disable

إعادة تعيين القواعد (مسح كل شيء):

sudo ufw reset

تحذير: هذا بيمسح كل قواعدك وبيرجع UFW لحالته الافتراضية.

Firewalld: الديناميكي للمؤسسات

Firewalld هو الفايروول الافتراضي في أنظمة مثل CentOS/RHEL. يعتمد على مفهوم "المناطق" (Zones) ويسمح لك بتغيير القواعد بدون إعادة تحميل كاملة للفايروول، وهذا ميزة كبيرة في البيئات الإنتاجية.

التأكد من التثبيت والتشغيل:

sudo yum install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --state

المناطق (Zones):

Firewalld يستخدم مناطق مختلفة (مثل public, home, internal, external) لتطبيق قواعد مختلفة بناءً على مستوى الثقة للشبكة اللي أنت فيها.

عرض المناطق النشطة:

sudo firewall-cmd --get-active-zones

عرض الخدمات والports المسموحة في منطقة معينة (مثلاً public):

sudo firewall-cmd --zone=public --list-all

السماح بخدمة (مثلاً HTTP) بشكل دائم:

sudo firewall-cmd --zone=public --add-service=http --permanent

--permanent يعني القواعد بتظل حتى بعد إعادة التشغيل.

بعد أي تغيير بـ --permanent، لازم تسوي إعادة تحميل:

sudo firewall-cmd --reload

السماح بمنفذ (مثلاً 8080/tcp) بشكل دائم:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

إزالة خدمة أو منفذ:

استخدم --remove-service أو --remove-port بدلاً من --add-service أو --add-port.

sudo firewall-cmd --zone=public --remove-service=http --permanent
sudo firewall-cmd --reload

تغيير المنطقة الافتراضية:

sudo firewall-cmd --set-default-zone=home

أيهم أختار؟

الخلاصة:

  • Iptables: إذا كنت تحتاج تحكم دقيق جداً، أو شغال على أنظمة قديمة، أو تبغى تفهم كيف الفايروول يشتغل من الصفر. لكنه معقد للمبتدئين.
  • UFW: مثالي للمستخدمين الجدد أو الخوادم البسيطة اللي ما تحتاج قواعد معقدة. سهل وسريع.
  • Firewalld: الأفضل للبيئات الإنتاجية الكبيرة وأنظمة RHEL/CentOS. يوفر مرونة كبيرة مع مفهوم المناطق والتحديثات الديناميكية.

مهما كان اختيارك، الأهم هو إنك تفهم وش قاعد تسوي بالضبط. لا تخلي خادمك بدون فايروول!