المقدمة
iptables هو جدار ناري برمجي لتوزيعات Linux. يوفر هذا الدليل بنمط ورقة غش مرجع سريع لأوامر iptables التي ستنشئ قواعد جدار ناري مفيدة في السيناريوهات اليومية الشائعة. يتضمن ذلك أمثلة iptables على السماح والحظر لخدمات مختلفة عبر المنافذ وواجهات الشبكة وعناوين IP المصدر.
كيفية استخدام هذا الدليل
- معظم القواعد الموجودة هنا يفترض أن iptables الخاص بك مضبوط على إسقاط حركة المرور الواردة، من خلال السياسة الافتراضية للإدخال، وتريد السماح بحركة المرور الواردة بشكل انتقائي
- استخدم الأقسام التالية التي تنطبق على ما تحاول تحقيقه. معظم الأقسام ليست مبنية على أي من الأقسام الأخرى، لذا يمكنك استخدام الأمثلة أدناه بشكل مستقل
- استخدم قائمة المحتويات على الجانب الأيمن من هذه الصفحة (عند عرض عريض للصفحة) أو وظيفة البحث في متصفحك للعثور على الأقسام التي تحتاج إليها
- انسخ والصق الأمثلة المعطاة في سطر الأوامر، مستبدلا القيم المميزة بالخاصة بك
خذ في الاعتبار أن ترتيب القواعد لديك مهم. تستخدم جميع هذه الأوامر iptables الخيار -A لإضافة القاعدة الجديدة إلى نهاية السلسلة. إذا كنت تريد وضعه في مكان آخر في السلسلة، يمكنك استخدام الخيار -I الذي يتيح لك تحديد موضع القاعدة الجديدة (أو وضعها في بداية السلسلة بعدم تحديد رقم قاعدة).
ملاحظة: عند العمل مع جدران الحماية، تأكد من عدم قفل نفسك خارج خادمك الخاص من خلال حجب حركة مرور SSH (المنفذ 22، افتراضيًا). إذا فقدت الوصول بسبب إعدادات جدار الحماية الخاص بك، قد تحتاج إلى الاتصال به عبر وحدة تحكم قائمة على الويب لإصلاح الوصول الخاص بك. إذا كنت تستخدم DigitalOcean، يمكنك قراءة توثيق منتجنا لوحدة التحكم في الاسترداد للمزيد من المعلومات. بمجرد الاتصال عبر الوحدة، يمكنك تغيير قواعد جدار الحماية الخاصة بك للسماح بالوصول عبر SSH (أو السماح بجميع حركة المرور). إذا سمحت قواعد جدار الحماية المحفوظة بالوصول عبر SSH، فإن طريقة أخرى هي إعادة تشغيل الخادم الخاص بك.
تذكر أنه يمكنك التحقق من مجموعة قواعد iptables الحالية باستخدام sudo iptables -S
و sudo iptables -L
.
لنلقِ نظرة على أوامر iptables!
حفظ القواعد
قواعد iptables هي مؤقتة، مما يعني أنه يجب حفظها يدويًا لتحافظ على استمرارها بعد إعادة التشغيل.
على Ubuntu، أحد الطرق لحفظ قواعد iptables هو استخدام حزمة iptables-persistent
. قم بتثبيتها باستخدام apt بهذه الطريقة:
أثناء التثبيت، سيُطلَب منك حفظ قواعد جدار الحماية الحالية الخاصة بك.
إذا قمت بتحديث قواعد جدار الحماية الخاصة بك وترغب في حفظ التغييرات، قم بتشغيل هذا الأمر:
قد تحتوي توزيعات Linux الأخرى على طرق بديلة لجعل التغييرات الخاصة بك في iptables دائمة. يرجى الرجوع إلى الوثائق ذات الصلة للحصول على مزيد من المعلومات.
قائمة وحذف القواعد
إذا كنت ترغب في معرفة كيفية عرض وحذف قواعد iptables، تحقق من هذا البرنامج التعليمي: كيفية عرض وحذف قواعد جدار الحماية في Iptables.
قواعد مفيدة بشكل عام
تتضمن هذه القسم مجموعة متنوعة من أوامر iptables التي ستنشئ قواعد مفيدة بشكل عام على معظم الخوادم.
السماح بالاتصالات الداخلية
واجهة الـ الحلقية، المعروفة أيضًا باسم lo
، هي ما يستخدمه الكمبيوتر لتوجيه اتصالات الشبكة إلى نفسه. على سبيل المثال، إذا قمت بتشغيل ping localhost
أو ping 127.0.0.1
، سيرد الخادم على نفسه باستخدام الحلقية. كما يتم استخدام واجهة الحلقية إذا قمت بتكوين خادم التطبيق للاتصال بخادم قاعدة البيانات باستخدام عنوان localhost
. ولذلك، سترغب في التأكد من أن جدار الحماية الخاص بك يسمح بهذه الاتصالات.
لقبول كافة حركة المرور على واجهة الحلقية الخاصة بك، قم بتشغيل هذه الأوامر:
السماح بالاتصالات الواردة المُنشأة والمتصلة
نظرًا لأن حركة المرور في الشبكة عادة ما تحتاج إلى أن تكون ذهابًا وإيابًا – واردة وصادرة – لتعمل بشكل صحيح، فمن المعتاد إنشاء قاعدة جدار حماية تسمح بحركة المرور الواردة المُنشأة والمتصلة، بحيث يتيح الخادم حركة المرور العائدة للاتصالات الصادرة التي بدأها الخادم نفسه. ستقوم هذه الأمر بالسماح بذلك:
السماح بالاتصالات الصادرة المُنشأة
قد ترغب في السماح بحركة المرور الصادرة من جميع الاتصالات المنشأة، والتي عادة ما تكون ردًا على اتصالات واردة شرعية. ستسمح هذه الأمر بذلك:
السماح للشبكة الداخلية بالوصول إلى الشبكة الخارجية
بافتراض أن eth0
هو الشبكة الخارجية الخاصة بك، و eth1
هو الشبكة الداخلية الخاصة بك، سيتيح هذا لشبكتك الداخلية الوصول إلى الشبكة الخارجية:
إسقاط الحزم غير الصالحة
تحتوي بعض حزم حركة المرور على علامة كـ غير صالحة. في بعض الأحيان قد يكون من المفيد تسجيل هذا النوع من الحزم ولكن في كثير من الأحيان من الجيد إسقاطها. قم بذلك باستخدام هذا الأمر:
حظر عنوان IP
لحظر اتصالات الشبكة القادمة من عنوان IP محدد، مثل 203.0.113.51
على سبيل المثال، قم بتشغيل هذا الأمر:
في هذا المثال، تحدد -s 203.0.113.51
عنوان IP المصدر كـ “203.0.113.51”. يمكن تحديد عنوان IP المصدر في أي قاعدة جدار نارية، بما في ذلك قاعدة السماح.
إذا كنت ترغب في رفض الاتصال بدلاً من ذلك، والذي سيستجيب لطلب الاتصال بخطأ “الاتصال مرفوض”، قم بتبديل “DROP” بـ “REJECT” بهذه الطريقة:
حظر الاتصالات بواجهة الشبكة
لحظر الاتصالات من عنوان IP محدد، على سبيل المثال 203.0.113.51
، إلى واجهة شبكة محددة، على سبيل المثال eth0
، استخدم هذا الأمر:
هذا هو نفس المثال السابق، مع إضافة -i eth0
. يمكن تحديد واجهة الشبكة في أي قاعدة جدار ناري، وهو طريقة رائعة لتحديد القاعدة لشبكة معينة.
الخدمة: SSH
إذا كنت تستخدم خادمًا بدون وحدة تحكم محلية، فمن المحتمل أنك ترغب في السماح باتصالات SSH الواردة (المنفذ 22) حتى تتمكن من الاتصال بخادمك وإدارته. تغطي هذه القسم كيفية تكوين جدار الحماية الخاص بك بقواعد مختلفة تتعلق بـ SSH.
السماح بجميع اتصالات SSH الواردة
للسماح بجميع اتصالات SSH الواردة، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات SSH المُنشأة، ليس ضروريًا إلا إذا لم يتم تعيين سياسة OUTPUT
إلى ACCEPT
.
السماح باتصالات SSH الواردة من عنوان IP أو شبكة فرعية محددة
للسماح باتصالات SSH الواردة من عنوان IP محدد أو شبكة فرعية، حدد المصدر. على سبيل المثال، إذا كنت ترغب في السماح بالشبكة الفرعية بأكملها 203.0.113.0/24
، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات SSH المُنشأة، ليس ضروريًا إلا إذا لم يتم تعيين سياسة OUTPUT
إلى ACCEPT
.
السماح باتصالات SSH الصادرة
إذا كانت سياسة الناتج من جدار الحماية الخاص بك غير مضبوطة على القبول، وترغب في السماح باتصالات SSH الصادرة – أي قيام خادمك ببدء اتصال SSH بخادم آخر – يمكنك تشغيل هذه الأوامر:
السماح بالدخول الوارد Rsync من عنوان IP أو الشبكة الفرعية المحددة
يمكن استخدام Rsync، الذي يعمل على المنفذ 873، لنقل الملفات من كمبيوتر إلى آخر.
للسماح بالاتصالات الواردة لـ rsync من عنوان IP محدد أو الشبكة الفرعية، حدد عنوان IP المصدر ومنفذ الوجهة. على سبيل المثال، إذا كنت ترغب في السماح لشبكة 203.0.113.0/24 بإمكانية rsync إلى خادمك، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات rsync المنشأة، ليس ضروريًا إلا إذا كانت سياسة الناتج غير مضبوطة على القبول.
الخدمة: خادم الويب
خوادم الويب، مثل Apache و Nginx، عادة ما تستمع للطلبات على المنفذ 80 و 443 لاتصالات HTTP و HTTPS على التوالي. إذا كانت السياسة الافتراضية لحركة المرور الواردة مضبوطة على الإسقاط أو الرفض، سترغب في إنشاء قواعد تسمح لخادمك بالاستجابة لهذه الطلبات.
السماح بجميع طلبات HTTP الواردة
للسماح بجميع الاتصالات الواردة HTTP (المنفذ 80)، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات HTTP المنشأة، ضروري فقط إذا لم يتم ضبط سياسة OUTPUT
على ACCEPT
.
السماح بجميع طلبات HTTPS الواردة
للسماح بجميع الاتصالات الواردة HTTPS (المنفذ 443)، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات HTTP المنشأة، ضروري فقط إذا لم يتم ضبط سياسة OUTPUT
على ACCEPT
.
السماح بجميع طلبات HTTP و HTTPS الواردة
إذا كنت ترغب في السماح بكل من حركة مرور HTTP و HTTPS، يمكنك استخدام وحدة multiport لإنشاء قاعدة تسمح بكلا المنافذ. للسماح بجميع الاتصالات الواردة HTTP و HTTPS (المنفذ 443)، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات HTTP و HTTPS المُنشأة، ضروري فقط إذا لم يتم تعيين سياسة ACCEPT
للـ OUTPUT
.
الخدمة: MySQL
يستمع MySQL لاتصالات العميل على المنفذ 3306. إذا كانت قاعدة بيانات MySQL الخاصة بك تُستخدم من قبل عميل على خادم بعيد، فيجب التأكد من السماح لهذه المرور.
السماح بالوصول إلى MySQL من عنوان IP أو شبكة محددة
للسماح باتصالات MySQL الواردة من عنوان IP محدد أو شبكة فرعية، حدد المصدر. على سبيل المثال، إذا كنت ترغب في السماح للشبكة الفرعية 203.0.113.0/24
بأكملها، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات MySQL المُنشأة، ضروري فقط إذا لم يتم تعيين سياسة ACCEPT
للـ OUTPUT
.
السماح بالوصول إلى MySQL من واجهة الشبكة المحددة
للسماح باتصالات MySQL إلى واجهة شبكة محددة – على سبيل المثال، إذا كان لديك واجهة شبكة خاصة eth1
، استخدم هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات MySQL المنشأة، ضروري فقط إذا لم يتم تعيين سياسة OUTPUT
إلى ACCEPT
.
الخدمة: PostgreSQL
تستمع PostgreSQL إلى اتصالات العميل على البورت 5432. إذا كانت خادم قاعدة بيانات PostgreSQL الخاص بك يتم استخدامه من قبل عميل على خادم بعيد، يجب عليك التأكد من السماح بهذا المرور.
PostgreSQL من عنوان IP محدد أو شبكة فرعية
للسماح باتصالات PostgreSQL الواردة من عنوان IP محدد أو شبكة فرعية محددة، حدد المصدر. على سبيل المثال، إذا كنت تريد السماح بالشبكة الفرعية 203.0.113.0/24
بأكملها، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات PostgreSQL المنشأة، ضروري فقط إذا لم يتم تعيين سياسة OUTPUT
إلى ACCEPT
.
السماح ل PostgreSQL بواجهة الشبكة المحددة
للسماح باتصالات PostgreSQL إلى واجهة الشبكة المحددة – على سبيل المثال إذا كان لديك واجهة شبكة خاصة eth1
، استخدم هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات PostgreSQL المنشأة، لا يلزم إذا لم يتم تعيين سياسة OUTPUT
إلى ACCEPT
.
الخدمة: البريد
خوادم البريد، مثل Sendmail و Postfix، تستمع على مجموعة متنوعة من المنافذ اعتمادًا على البروتوكولات المستخدمة لتسليم البريد. إذا كنت تقوم بتشغيل خادم بريد، قم بتحديد البروتوكولات التي تستخدمها والسماح بأنواع المرور المناسبة. سنوضح أيضًا كيفية إنشاء قاعدة لحظر البريد SMTP الصادر.
حظر البريد الصادر SMTP
إذا كان الخادم الخاص بك لا يجب أن يرسل بريدًا صادرًا، قد ترغب في منع هذا النوع من المرور. لحظر البريد الصادر SMTP، الذي يستخدم المنفذ 25، قم بتشغيل هذا الأمر:
يقوم هذا بتكوين iptables لرفض جميع حركة المرور الصادرة على منفذ 25. إذا كنت بحاجة إلى رفض خدمة مختلفة حسب رقم منفذها، بدلاً من المنفذ 25، قم بتعويض هذا الرقم برقم المنفذ في الأعلى.
السماح بجميع حركة المرور الواردة لبروتوكول SMTP
للسماح لخادمك بالاستجابة لاتصالات SMTP على المنفذ 25، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات SMTP المنشأة، ضروري فقط إذا لم يتم تعيين سياسة الـ OUTPUT على ACCEPT.
السماح بجميع حركة المرور الواردة لبروتوكول IMAP
للسماح لخادمك بالاستجابة لاتصالات IMAP على المنفذ 143، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات IMAP المنشأة، ضروري فقط إذا لم يتم تعيين سياسة الـ OUTPUT على ACCEPT.
السماح بجميع حركة المرور الواردة لبروتوكول IMAPS
للسماح لخادمك بالرد على اتصالات IMAPS، المنفذ 993، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات IMAPS المُنشأة، ليس ضروريًا إلا إذا كانت سياسة OUTPUT
لم تُعين على ACCEPT
.
السماح بجميع اتصالات POP3 الواردة
للسماح لخادمك بالرد على اتصالات POP3، المنفذ 110، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات POP3 المُنشأة، ليس ضروريًا إلا إذا كانت سياسة OUTPUT
لم تُعين على ACCEPT
.
السماح بجميع اتصالات POP3S الواردة
للسماح لخادمك بالرد على اتصالات POP3S، المنفذ 995، قم بتشغيل هذه الأوامر:
الأمر الثاني، الذي يسمح بحركة المرور الصادرة لاتصالات POP3S المُنشأة، ليس ضروريًا إلا إذا كانت سياسة OUTPUT
لم تُعين على ACCEPT
.
الختام
تغطي ذلك العديد من الأوامر التي يتم استخدامها بشكل شائع عند تكوين جدار حماية iptables. بالطبع، iptables هي أداة مرنة للغاية، لذا لا تتردد في مزج الأوامر مع خيارات مختلفة لتتناسب مع احتياجاتك الخاصة إذا لم يتم تغطيتها هنا.
إذا كنت تبحث عن مساعدة في تحديد كيفية تهيئة جدار حمايتك، تفقد هذا البرنامج التعليمي: كيفية اختيار سياسة جدار حماية فعالة لتأمين خوادمك.