دليل المستخدم تعليمات بسيطة للعمل مع خدمة Profitserver
الرئيسية دليل المستخدم تكوين جدار الحماية على لينكس

تكوين جدار الحماية على لينكس


يلعب جدار الحماية في لينكس دورًا حيويًا في تأمين نظام الحاسوب. فهو يعمل كحاجز، يتحكم في حركة مرور الشبكة ويُرشّحها لحماية النظام من الوصول غير المصرح به والهجمات والتهديدات الأخرى. بدون جدار حماية مُهيأ بشكل صحيح، قد يكون الخادم عرضة لأنواع مختلفة من الهجمات الإلكترونية، مما يؤدي إلى عواقب وخيمة على أمن البيانات وسريتها.

سنتناول في هذه المقالة أداتين رئيسيتين لتكوين جدار الحماية في نظام لينكس: firewalld و iptables. سنجري تحليلًا مقارنًا لميزاتهما ووظائفهما ومزاياهما. بالإضافة إلى ذلك، سنقدم تعليمات مفصلة لإعداد كل أداة واستخدامها، كما سنناقش أفضل الممارسات لتأمين نظامك باستخدام جدار الحماية على منصة لينكس. سيتم تطبيق جميع الخطوات عمليًا على خادم افتراضي بصلاحيات المستخدم الجذر.

تكوين جدار الحماية على لينكس

برنامج Firewalld (خادم جدار الحماية) هو برنامج لإدارة جدار الحماية في أنظمة تشغيل لينكس. يوفر واجهة مستخدم لضبط قواعد جدار الحماية، والسماح باتصالات تطبيقات الشبكة أو حظرها. وهو مُثبّت مسبقًا بشكل افتراضي في معظم توزيعات الخوادم. في حال عدم تثبيته مسبقًا، يمكن تثبيته بشكل مستقل من مستودعات التوزيعة الرسمية.

بالنسبة لأنظمة Red Hat (مثل RHEL وCentOS وFedora)، يتم إجراء التثبيت باستخدام الأمر:

yum install firewalld

بالنسبة لديبيان/أوبونتو:

apt-get install firewalld

بعد التثبيت، يمكن البدء في تشغيله وتنشيطه على الفور باستخدام الأمر:

systemctl start firewalld

بعد ذلك، عليك إضافة الخدمة إلى بدء التشغيل:

systemctl enable firewalld
إضافة firewalld في التحميل التلقائي لنظام Linux

في هذه المرحلة، نوصي بتعطيل ufw، إذ لا يُنصح باستخدام هذه الأداة مع firewalld أو iptables في نفس الوقت. تحقق من الحالة:

systemctl status ufw
التحقق من ufw لينكس

لإيقافه، أدخل الأمر:

systemctl stop ufw

للإلغاء الكامل:

ufw disable

بعد هذه الإجراءات، يمكنك المتابعة لتكوين firewalld.

أولاً، من الضروري تحديد مناطق الثقة. يستخدم جدار الحماية مفهوم المناطق لتحديد مستوى ثقة واجهات الشبكة. تُخصص منطقة واحدة لكل واجهة، وتُطبق قواعد جدار الحماية بناءً عليها. تُفتح قائمة جميع المناطق المتاحة باستخدام الأمر:

firewall-cmd --get-zones

عادة، يتم استخدام 4 مناطق رئيسية:

  1. عام:هذه المنطقة مخصصة للشبكات التي تعتبرها غير آمنة؛
  2. خاص:ينطبق على الشبكات المنزلية أو اتصالات الشبكة الموثوقة الأخرى؛
  3. داخلي:تستخدم للشبكات الداخلية، مثل تلك الموجودة داخل شبكة منظمة أو شركة؛
  4. DMZ:هذه المنطقة هي المكان الذي يتم فيه عادةً وضع الخوادم التي يجب أن تكون قابلة للوصول إليها من الإنترنت.

هذا مجرد مثال واحد. يمكنك إضافة منطقتك الخاصة باستخدام الأمر:

firewall-cmd --permanent --new-zone=nameyourzone

بعد الإضافة، يلزم إعادة التحميل:

firewall-cmd --reload

لحذف منطقة، يتم استخدام طريقة مماثلة

firewall-cmd --permanent --delete-zone=nameyourzone

بعد تحديد المناطق، من الضروري السماح بحركة المرور للخدمات والمنافذ المطلوبة. للسماح بخدمة معينة، استخدم الأمر:

firewall-cmd --zone=public --add-service=name

حيث يمثل "name" اسم الخدمة. على سبيل المثال، للسماح بمرور البيانات إلى خادم Apache:

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

لتحديد المنافذ المسموح بها، استخدم الأمر:

firewall-cmd --zone=public --add-port=number/protocol

على سبيل المثال، سيبدو المنفذ القياسي 22 لـ SSH على النحو التالي:

firewall-cmd --zone=public --add-port=22/tcp

في هذه المرحلة، تكون القواعد الرئيسية قد وُضعت بالفعل. بعد ذلك، حدد كيفية معالجة حركة البيانات بناءً على المصدر والوجهة والمنفذ ومعايير أخرى. لإضافة قاعدة (باستخدام المنطقة العامة كمثال):

firewall-cmd --zone=public rule

على سبيل المثال، للسماح بحركة المرور الواردة من أي مصدر إلى المنفذ 80 (HTTP):

firewall-cmd --zone=public --add-port=80/tcp --permanent

لإزالة القاعدة:

firewall-cmd --permanent --remove-rule=rule_specification

حيث يمثل rule نوع القاعدة (على سبيل المثال، المنفذ، الخدمة، القاعدة الغنية، إلخ)، و rule_specification هي مواصفات القاعدة نفسها.

بعد إجراء تغييرات على إعدادات جدار الحماية، يجب حفظها وتطبيقها. لحفظ التغييرات، استخدم الأمر:

firewall-cmd --runtime-to-permanent

لتطبيق التغييرات:

firewall-cmd --reload

بعد الانتهاء من عملية الإعداد، يمكنك التحقق من المعلمات المحددة عن طريق فتح قائمة جميع القواعد:

firewall-cmd --list-all
قواعد جدار الحماية Linux

في حالة ظهور أي مشاكل، تحقق من سجلات Firewalld باستخدام الأمر:

journalctl -u firewalld

ملاحظة: لقد تناولنا فقط الخوارزمية العامة لإعداد الاتصال. الأداة تتمتع بوظائف واسعة. للحصول على معلومات كاملة حول جميع الخيارات المتاحة، يمكنك الرجوع إلى الوثائق الرسمية أو فتح قسم المساعدة.

firewall-cmd --help

تكوين iptables على Linux

بخلاف Firewalld، يُعد iptables أداةً أقدم، لكنها لا تزال شائعة الاستخدام في لينكس، لإدارة جدار الحماية. يوفر نهجًا أكثر مباشرة ومرونة لقواعد تصفية الحزم على مستوى نواة لينكس. مع ذلك، يتطلب iptables معرفةً وخبرةً أكثر تقدمًا مقارنةً بـ Firewalld، مما يجعله أصعب على المبتدئين. تحقق من الإصدار المُثبّت مسبقًا من الأداة باستخدام الأمر:

iptables -V

إذا لم تكن الأداة مُثبّتة، ​​فستحتاج إلى تثبيتها. أمر التثبيت على أوبونتو وديبيان:

apt install iptables

بالنسبة لأنظمة Red Hat (على سبيل المثال، CentOS، Fedora):

yum install iptables

الأمر للتفعيل بعد التثبيت:

systemctl start iptables

لإضافة إلى بدء التشغيل، قم بتنفيذ:

systemctl enable iptables

قبل البدء بإعدادات iptables، من المهم فهم آلية عمله. ويساعد في ذلك بناء جملة البرنامج. يبدو البرنامج كما يلي:

iptables -t table action chain additional_parameters

دعونا نتعمق أكثر في كل عنصر.

يحتوي برنامج Iptables على أربعة جداول رئيسية: filter و nat و mangle و raw . كل جدول مصمم لمعالجة أنواع معينة من الحزم وله سلاسل قواعد خاصة به.

  1. تصفيةهذا هو الجدول الأكثر استخدامًا، ويحتوي على قواعد تصفية الحزم. يُستخدم لاتخاذ القرارات بشأن السماح بالحزم أو رفضها.
  2. ناتيُستخدم هذا الجدول لتعديل عناوين الشبكة والمنافذ في الحزم. ويُستخدم غالبًا لإعداد التمويه (NAT).
  3. مفقودفي هذا الجدول، يمكنك تعديل رؤوس الحزم. يُستخدم لعمليات حزم متخصصة، مثل وضع العلامات.
  4. الخاميُستخدم هذا الجدول لتكوين القواعد التي تُطبّق قبل مرورها عبر نظام تتبع الاتصالات. ويُستخدم عادةً لإعداد قواعد لا ينبغي لنظام التتبع تعديلها، مثل حذف الحزم من عناوين معينة.

يحتوي كل جدول على مجموعة من السلاسل. السلاسل هي سلسلة من القواعد التي يتم التحقق منها بالتتابع. هناك ثلاث سلاسل محددة مسبقًا:

  1. الإدخال (الوارد). تحدد القواعد الموجودة في هذه السلسلة ما يجب فعله بالحزم الواردة.
  2. الإخراج (الصادر)تنطبق هذه السلسلة على جميع الحزم التي يرسلها جهاز الكمبيوتر الخاص بك إلى أجهزة أو أجهزة كمبيوتر أخرى على الشبكة.
  3. إعادة توجيه (إعادة توجيه). تحدد القواعد الموجودة في هذه السلسلة ما يجب فعله بالحزم المعاد توجيهها.

أخيرًا، لكل سلسلة فعل (هدف). عمليًا، تُستخدم خمسة أفعال رئيسية:

  1. أقبل:السماح للحزمة بالمرور عبر جدار الحماية.
  2. إسقاط:رفض الحزمة والتخلص منها دون أي استجابة.
  3. رفض:رفض الحزمة وإرسال رسالة خطأ ICMP إلى المرسل.
  4. LOG:قم بتسجيل الحزمة في سجل النظام وقم بإجراء آخر (على سبيل المثال، قبول أو إسقاط).
  5. عودة:توقف عن التحقق من القواعد في السلسلة الحالية والعودة إلى سلسلة الاستدعاء (إذا أمكن).

لبدء الإعداد، افتح قائمة القواعد الموجودة باستخدام الأمر:

iptables -L
تكوين جدار الحماية على لينكس

كدليل لتكوين Iptables، دعونا نلقي نظرة على أمثلة عملية لأكثر الأوامر استخدامًا. لتسهيل الأمر، سنقسم الأمثلة إلى ثلاث مجموعات، حسب السلسلة المحددة.

مدخلات السلسلة :

  1. السماح بحركة المرور الواردة عبر بروتوكول TCP على المنفذ 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. السماح بحركة المرور الواردة عبر بروتوكول UDP على المنفذ 22:

iptables -A INPUT -p udp --dport 22 -j ACCEPT

3. حظر حركة المرور الواردة من عنوان IP محدد:

iptables -A INPUT -s 192.168.1.100 -j DROP

مخرجات السلسلة :

  1. السماح بحركة المرور الصادرة عبر بروتوكول TCP على المنفذ 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

2. السماح بحركة المرور الصادرة عبر بروتوكول UDP على المنفذ 80:

iptables -A OUTPUT -p udp --dport 80 -j ACCEPT

3. حظر حركة المرور الصادرة إلى منفذ معين (على سبيل المثال، 21):

iptables -A OUTPUT -p tcp --dport 21 -j DROP

سلسلة للأمام :

  1. حظر حركة المرور المعاد توجيهها من نطاق محدد من عناوين IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP

2. حظر إعادة توجيه الحزم من واجهة شبكة محددة:

iptables -A FORWARD -i eth1 -j DROP

3. حدد عدد الاتصالات المتزامنة لمنفذ معين (في هذا المثال، 10 اتصالات في الدقيقة على المنفذ 80):

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT

كما ترى، في كل حالة على حدة، يُستخدم أمر إضافي. للحصول على قائمة كاملة بالوسائط الممكنة والدعم الشامل لوظائف الأداة، أدخل:

iptables -h
قائمة أوامر إعداد iptables Linux

للتأكد من صحة الإعدادات، أعد إدخال الأمر لعرض قائمة القواعد:

iptables -L
التحقق من قواعد iptables Linux

لحذف قاعدة معينة، استخدم الأمر:

iptables -D chain rule_number

على سبيل المثال، إذا كنت تريد حذف القاعدة رقم 1 من سلسلة INPUT، فسوف يبدو الأمر كما يلي:

iptables -D INPUT 1

لحذف جميع القواعد بأمر واحد:

iptables -F

ملاحظة هامة : لا تُحفظ قواعد iptables تلقائيًا بعد إعادة تشغيل النظام أو الخدمة. لحفظ القواعد، يجب إضافتها إلى ملف تكوين واستعادتها بعد إعادة التشغيل. يمكن استخدام أداتي iptables-save و iptables-restore لهذا الغرض. لحفظ القواعد، أدخل الأمر التالي:

iptables-save > /etc/iptables/rules.v4

يحفظ هذا قواعد iptables الحالية في ملف rules.v4. لاستعادتها بعد إعادة التشغيل، أدخل:

iptables-restore < /etc/iptables/rules.v4

يقوم هذا الأمر باستعادة القواعد من ملف rules.v4.

خاتمة

يُعدّ تكوين جدار الحماية على نظام لينكس باستخدام firewalld أو iptables جانبًا مهمًا لضمان أمان الخادم. تُوفّر كلتا الأداتين وسائل موثوقة لإدارة حركة مرور الشبكة وحماية النظام من الوصول غير المصرّح به والهجمات الإلكترونية. يعتمد الاختيار بين firewalld وiptables على احتياجات المستخدم وتفضيلاته الخاصة، مع مراعاة اختلاف وظائفهما ونقاط قوتهما.

❮ المقال السابق تشخيص تحميل الخادم
المقال التالي ❯ مستخدمو لينكس: الإدارة والأذونات

اسألنا عن VPS

نحن على استعداد دائمًا للإجابة على أسئلتك في أي وقت من النهار أو الليل.