العودة إلى المدونة

إعداد جدار الحماية Iptables: القواعد والأوامر الأساسية

إعداد جدار الحماية Iptables: القواعد والأوامر الأساسية

مقدمة

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

أوامر Iptables

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

أشياء يجب وضعها في الاعتبار

قبل المتابعة في القراءة، إليك بعض الأشياء التي يجب عليك وضعها في الاعتبار:

  • ترتيب القواعد في iptables مهم.
  • لإضافة قاعدة جديدة إلى نهاية سلسلة، سيتعين على أمر ​iptables الخاص بك استخدام ​-A.​​
  • إذا كنت تريد إضافة القاعدة في موضع آخر، فيجب عليك استخدام خيار ​-I . يتيح لك هذا الخيار تحديد الموقع الدقيق للقاعدة. إذا كنت تريد وضع القاعدة في بداية السلسلة، فببساطة لا تقدم رقمًا للقاعدة.
  • لضمان وصولك المستمر إلى خادمك، قم بحظر حركة مرور SSH على المنفذ 22 افتراضيًا.
  • في حال فشلت في القيام بذلك وفقدت الوصول إلى خادمك، يمكنك إعادة الاتصال باستخدام وحدة التحكم. اسمح بحركة مرور SSH لتغيير إعدادات جدار الحماية.
  • إذا كنت ترغب في أي وقت في مراجعة مجموعة القواعد المعمول بها حاليًا، فاستخدم الأوامر sudo iptables -S​ و ​ ​sudo iptables -L.

علاوة على ذلك، لدينا ​دليل مفصل حول كيفية سرد وحذف قواعد جدار حماية iptables​, والذي سيساعدك بشكل أكبر في تحقيق أقصى استفادة من جدار حماية iptables الخاص بك.

الآن بعد أن انتهينا من المتطلبات الأساسية، دعنا نتعمق في بعض من ​the common iptables commands​:

كيفية حفظ القواعد الخاصة بك

سنبدأ بتحديد كيف يمكنك حفظ قواعدك. من المهم ملاحظة أن قواعد iptables مؤقتة. هذا يعني أنها ستُفقد بعد إعادة تشغيل نظامك - ما لم تقم بحفظها. إليك كيف يمكنك حفظ قواعدك الجديدة يدويًا على خادم ​Ubuntu​ و ​CentOS​ على التوالي:

  • Ubuntu

أسهل طريقة لحفظ قواعدك الجديدة على خادم Ubuntu هي استخدام حزمة iptables-persistent​. يمكنك بسهولة ​إنشاء خادم Ubuntu باتباع هذا البرنامج التعليمي​.

الآن، الخطوة الأولى لحفظ قواعد iptables الجديدة هي تثبيت حزمة iptables-persistent ​باستخدام apt-get. إليك كيف يمكنك الحصول عليها:

Iptables Firewall 1

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

Iptables Firewall 2

يعمل الأمر أعلاه عادةً مع إصدارات Ubuntu اللاحقة للإصدار 16.04. إذا كنت تستخدم إصدارًا أقدم، فاستخدم هذا الأمر بدلاً من ذلك:

  • CentOS

يمكنك تكوين جدار الحماية الخاص بك باستخدام iptables على CentOS 6 أو الإصدارات الأقدم من ذلك. يستخدم CentOS 7 أداة FirewallD بدلاً من ذلك. اتبع هذا البرنامج التعليمي لمعرفة كيفية إعداد FirewallD على CentOS 7.

يمكنك حفظ قواعدك الجديدة على CentOS باستخدام البرمجية النصية لبدء التشغيل لـ ​iptables . انظر الأمر التالي:

سيقوم هذا الأمر بحفظ قواعدك الجديدة لجدار حماية iptables. يمكن العثور على قواعد iptables النشطة حاليًا في ملف /etc/sysconfig/iptables​ .

أوامر Iptables المفيدة

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

  • اتصالات الحلقة المغلقة (Loopback)

أولاً، سنستكشف كيف يمكنك السماح باتصالات الحلقة المغلقة (loopback). يستخدم نظامك واجهة loopback لإرسال الاتصالات إلى نفسه. على سبيل المثال، تخيل أنك قمت بتشغيل هذا الأمر: ​ping localhost​ أو ​ping 127.0.0.1​. سيستخدم خادمك واجهة استرجاع (loopback)، أو lo​, لإرسال حزم ping إلى نفسه بشكل أساسي. وفي أوقات أخرى، قد يستخدمه الخادم إذا تم تكوين خادم التطبيق الخاص بك للاتصال بعنوان 'localhost'.

بغض النظر عن الوضع، يجب عليك التأكد من أن جدار الحماية iptables لا يحظر هذه الاتصالات. لذلك، سيتعين عليك السماح باتصالات الاسترجاع (loopback) لتمكين هذه الوظائف من العمل.

إليك الأوامر التي ستقوم بتشغيلها للسماح بجميع حركات المرور الواردة إلى واجهة الاسترجاع (loopback):

Iptables Firewall 3

  • الاتصالات الواردة القائمة والمرتبطة

نوع آخر من الاتصالات التي قد تحتاج إلى السماح بها هو الاتصال الصادر. للتأكد من أن خادمك يستقبل ويرسل حركات المرور الواردة والصادرة على التوالي، تحتاج إلى السماح بالاتصالات الواردة القائمة والمرتبطة. يتيح ذلك للخادم إرسال حركة مرور العودة إلى الاتصالات الصادرة. استخدم هذا الأمر للسماح بالاتصالات الواردة القائمة وكذلك المرتبطة:

Established and Related Incoming Connections

  • الاتصالات الصادرة القائمة

عادةً ما يرسل الخادم ردودًا على الاتصالات الواردة في شكل حركة مرور صادرة للاتصالات القائمة. للسماح بذلك، استخدم الأمر التالي:

Established Outgoing Connections

  • من الداخلي إلى الخارجي

في بعض الأحيان، قد تحتاج إلى تكوين جدار الحماية الخاص بك لمنح الشبكة الداخلية إمكانية الوصول إلى الشبكة الخارجية. بشكل افتراضي، يجب أن تكون شبكتك الخارجية هي ​eth0​ و ​eth1 هي شبكتك الداخلية. إذا كان الأمر كذلك، فاستخدم هذا الأمر لتمكين الوصول:

Internal to External

  • إسقاط الحزم غير الصالحة

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

Dropping Invalid Packets

قواعد حظر عناوين IP

بعد ذلك، سنلقي نظرة على بعض الأوامر التي يمكنك استخدامها لحظر الاتصالات القادمة من عناوين IP معينة. لتسهيل الأمور، سنستخدم عنوان IP ​15.15.15.51 كمثال في أوامرنا. يمكنك استبدال هذه القيمة بعنوان IP الخاص بك.

في ​-s 15.15.15.51، فإن ​-s​ ترمز إلى المصدر (source). وبالتالي، يحدد الأمر عنوان IP المصدر '15.15.15.51'. وبالمثل، يمكنك تحديد عنوان IP المصدر في أي قاعدة جدار حماية. يتضمن ذلك قاعدة السماح وقاعدة الرفض.

إذا كنت تريد رفض الاتصال، فستستخدم REJECT بدلاً من DROP في الأمر على النحو التالي:

نتيجة لذلك، سيعطي خادمك خطأ 'تم رفض الاتصال' (connection refused) كلما أرسل عنوان IP المحدد طلب اتصال.

  • حظر الاتصالات بواجهة معينة

من الممكن لك حظر جميع طلبات الاتصال القادمة من عنوان IP معين إلى واجهة شبكة معينة. في مثالنا، عنوان IP هو 15.15.15.51​ وواجهة الشبكة هي ​eth0​. استخدم هذا الأمر لحظر الاتصالات:

الأمر الرائع هو أنه يمكنك تحديد واجهة الشبكة في أي قاعدة. هذا يعني أنه يمكن تطبيق أي قاعدة وقصرها على شبكة معينة فقط.

قواعد الخدمة: SSH

SSH ​يصبح مهمًا إذا كنت تستخدم خادمًا سحابيًا. في هذه الحالة، تحتاج إلى السماح باتصالات SSH الواردة على المنفذ 22. يتيح لك تمكين هذه الاتصالات الاتصال بخادمك وإدارته. هنا، سنناقش عددًا من القواعد الشائعة المتعلقة بـ SSH.

  • السماح بجميع اتصالات SSH الواردة

تمكن الأوامر التالية جميع اتصالات SSH الواردة:

في المجموعة أعلاه، تحتاج فقط إلى استخدام الأمر الثاني إذا كانت سياسة ​OUTPUT​ غير مضبوطة على ​ACCEPT​. حيث يسمح بحركة المرور الصادرة لاتصالات SSH المنشأة.

  • السماح باتصالات SSH الواردة من شبكة فرعية

يسمح الأمر السابق بجميع الاتصالات الواردة. يمكنك استخدام الأوامر التالية للسماح فقط بالاتصالات الواردة من عنوان IP أو شبكة فرعية محددة. لنفترض أنك تريد فقط السماح بالاتصالات الواردة من شبكة ​15.15.15.0/24​ الفرعية:

تمامًا كما سبق، تحتاج فقط إلى استخدام الأمر الثاني إذا كانت سياسة ​OUTPUT​ غير مضبوطة على ​ACCEPT​. حيث يسمح بحركة المرور الصادرة لاتصالات SSH المنشأة.

  • السماح باتصالات SSH الصادرة

استخدم هذه الأوامر إذا كانت سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ​ACCEPT​ وتريد تمكين اتصالات SSH. سيسمح هذا لخادمك ببدء اتصالات SSH بخوادم أخرى:

لمزيد من الاستفادة من SSH على خوادمك السحابية، ألقِ نظرة على دروسنا التعليمية حول ​ كيفية استخدام SSH للاتصال بخادم بعيد في Ubuntu ​و كيفية تكوين خادم Linux الخاص بك لاستخدام المصادقة القائمة على مفتاح SSH​.

  • السماح باتصالات Rsync الواردة من شبكة فرعية

Rsync​ هي ميزة يمكنك استخدامها لنقل الملفات من نظام إلى آخر. وهي تعمل على المنفذ 873. لذا إذا كنت تريد السماح باتصالات Rsync الواردة على المنفذ 873 من عنوان IP أو شبكة فرعية محددة، فاستخدم الأوامر التالية:

كما ترى، قمنا بتحديد عنوان IP المصدر بالإضافة إلى منفذ الوجهة. ستستخدم الأمر الثاني فقط إذا كانت سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ​ACCEPT​. حيث يسمح بحركة المرور الصادرة لاتصالات Rsync المنشأة. علاوة على ذلك، يمكنك إلقاء نظرة على ​الدرس التعليمي الخاص بنا حول كيفية استخدام Rsync لمزامنة الأدلة المحلية والبعيدة على VPS​.

قواعد الخدمة: خادم الويب

عادةً ما يتم استقبال اتصالات HTTP على المنفذ 80. وبالمثل، يأتي بروتوكول HTTPS عادةً على المنفذ 443. خوادم الويب مثل ​Apache​ و ​Nginx​ تستمع إلى هذه المنافذ لالتقاط طلبات الاتصال. في بعض الأحيان، قد تجعل الإعدادات الافتراضية خادمك يرفض أو يسقط هذه الطلبات الواردة. لهذا السبب ستحتاج إلى تعيين قواعد جديدة للسماح بمرور حركة المرور.

  • السماح بجميع اتصالات HTTP الواردة

يمكنك السماح بجميع اتصالات HTTP الواردة على المنفذ 80 باستخدام هذه الأوامر:

ستستخدم الأمر الثاني فقط إذا كانت سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ACCEPT​. حيث يسمح بحركة المرور الصادرة لاتصالات HTTP المنشأة.

  • السماح بجميع اتصالات HTTPS الواردة

استخدم هذه الأوامر للسماح بجميع طلبات اتصال HTTPS الواردة على المنفذ 443:

ستستخدم الأمر الثاني فقط إذا كان جدار حماية iptables ​OUTPUT​ لم يتم تعيين سياسته على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات HTTP المنشأة.

  • السماح بجميع الاتصالات الواردة من HTTP و HTTPS

يمكنك استخدام وحدة multiport إذا كنت تريد السماح بحركة المرور من منفذي HTTP و HTTPS معًا. استخدم هذه الأوامر إذا كان الأمر كذلك:

ستستخدم الأمر الثاني فقط إذا كان جدار الحماية ​OUTPUT​ لم يتم تعيين سياسته على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات HTTP و HTTPS المنشأة.

قواعد الخدمة: MySQL

في بعض الأحيان قد يستخدم العميل خادمًا بعيدًا للوصول إلى خادم قاعدة بيانات ​MySQL​ الخاص بك. في هذه الحالة، تحتاج إلى السماح يدويًا بحركة المرور الواردة من المنفذ ذي الصلة. يستمع MySQL لطلبات الاتصال من المنفذ 3306.

  • السماح باتصالات MySQL الواردة من شبكة فرعية

سيتعين عليك تحديد المصدر إذا كنت تريد السماح باتصالات MySQL من شبكة فرعية معينة. في مثالنا، سنسمح بحركة المرور الواردة من 15.15.15.0/24​ الشبكة الفرعية باستخدام هذه الأوامر:

ستستخدم الأمر الثاني فقط إذا كان جدار الحماية ​OUTPUT​ لم يتم تعيين سياسته على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات MySQL المنشأة.

  • تمكين اتصالات MySQL بواجهة شبكة

إذا كنت تريد أيضًا تحديد واجهة الشبكة التي يجب أن تتلقى اتصالات MySQL، فيمكنك استخدام هذه الأوامر:

في هذه الحالة، نحن نسمح بالاتصالات بواجهة شبكة خاصة تسمى eth1​.

ستستخدم الأمر الثاني فقط إذا كان جدار الحماية ​OUTPUT​ لم يتم تعيين سياسته على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات MySQL المنشأة.

يمكنك متابعة ​البرنامج التعليمي الخاص بنا لإعداد MySQL بسهولة على خادمك​.

قواعد الخدمة: PostgreSQL

قد يستخدم عميلك خادمًا بعيدًا للوصول إلى خادم قاعدة بيانات ​PostgreSQL​ الخاص بك. في هذه الحالة، تحتاج إلى السماح بهذه الاتصالات الواردة. ستأتي هذه الاتصالات عبر المنفذ 5432.

  • السماح باتصالات PostgreSQL الواردة من شبكة فرعية

يمكنك استخدام الأوامر التالية للسماح باتصالات PostgreSQL الواردة من شبكة فرعية أو عنوان IP معين. كما ترى، قمنا بتحديد المصدر وهو ​15.15.15.0/24​ الشبكة الفرعية.

ستستخدم الأمر الثاني فقط إذا كان جدار الحماية ​OUTPUT​ لم يتم تعيين سياسته على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات PostgreSQL المنشأة.

  • تمكين اتصالات PostgreSQL بواجهة معينة

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

في هذه الحالة، نحن نسمح بالاتصالات بواجهة شبكة خاصة تسمى eth1​. ستستخدم الأمر الثاني فقط إذا لم تكن سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ​ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات PostgreSQL المنشأة.

اتبع هذا ​البرنامج التعليمي لتثبيت PostgreSQL على خادم Ubuntu الخاص بك​.

قواعد الخدمة: البريد الإلكتروني

قد تحتاج أيضًا إلى تكوين جدار الحماية الخاص بك وفقًا لأي خادم بريد تستخدمه. على سبيل المثال، ​Sendmail​ و ​Postfix​ يمكنه استقبال الاتصالات على عدد من المنافذ المختلفة. يعتمد ذلك على البروتوكول الذي تستخدمه لتسليم البريد. لحظر اتصالات بريد معينة والسماح بها، تحتاج إلى معرفة البروتوكول الذي تستخدمه.

  • السماح باتصالات SMTP الواردة

عادةً ما تأتي اتصالات SMTP على المنفذ 25. على الرغم من أن SMTP يستخدم أيضًا بشكل شائع المنفذ 587 للبريد الصادر. لتمكين خادمك من الاستجابة لهذه الاتصالات، استخدم الأوامر التالية:

ستستخدم الأمر الثاني فقط إذا لم تكن سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات SMTP المنشأة.

  • السماح بجميع اتصالات IMAP الواردة

للسماح لخادمك بالاستجابة لجميع اتصالات IMAP الواردة على المنفذ 143، ما عليك سوى كتابة هذا وتشغيله:​

ستستخدم الأمر الثاني فقط إذا لم تكن سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات IMAP المنشأة.

  • السماح بجميع اتصالات IMAPS الواردة

استخدم هذه الأوامر للسماح لخادمك بتقديم استجابات لاتصالات IMAPS على المنفذ 993:

ستستخدم الأمر الثاني فقط إذا لم تكن سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات IMAPS المنشأة.

  • السماح بجميع اتصالات POP3 الواردة

ستأتي هذه الاتصالات على المنفذ 993. إذا كنت تريد أن يستجيب خادمك لطلبات اتصال IMAPS، فاستخدم الأوامر التالية:

ستستخدم الأمر الثاني فقط إذا لم تكن سياسة جدار الحماية ​OUTPUT​ غير مضبوطة على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات POP3 المنشأة.

  • السماح بجميع اتصالات POP3S الواردة

استخدم هذه الأوامر للسماح لخادمك بإنشاء اتصالات مع طلبات POP3S الواردة على المنفذ 995:

ستستخدم الأمر الثاني فقط إذا كان جدار الحماية ​OUTPUT لم يتم تعيين سياسته على ACCEPT​. وهو يسمح بحركة المرور الصادرة لاتصالات POP3S المنشأة.

  • كيفية حظر بريد SMTP الصادر

بدلاً من السماح بالاتصالات الواردة وتمكين استجابة الخادم، قد ترغب في حظر البريد الصادر تمامًا. يمكنك حظر جميع رسائل بريد SMTP الصادرة على المنفذ 25 باستخدام هذا الأمر:

نتيجة لذلك، سيتم رفض جميع حركة المرور الصادرة على المنفذ 25 بواسطة جدار حماية iptables. يمكنك استخدام نفس بنية الأمر إذا كنت تريد رفض أي خدمة أخرى. كل ما عليك فعله هو استبدال المنفذ 25 برقم المنفذ ذي الصلة.

الخاتمة

يغطي هذا الدليل أوامر جدار حماية iptables الأساسية. وهو يوفر لك الأدوات الأساسية التي تحتاجها لتكوين جدار حماية iptables الخاص بك بفعالية. ضع في اعتبارك أنه لا يوجد حل واحد يناسب الجميع. هذه الأوامر مرنة للغاية. هذا يعني أنه يمكنك استخدامها بأي طريقة تناسبك وتناسب متطلباتك على أفضل وجه.

حوسبة سعيدة!

author

Manpreet Singh

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.