كيف يعمل جدار الحماية Iptables

المقدمة

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

الـ Iptables هو جدار ناري قياسي مضمن في معظم توزيعات لينكس تلقائيًا. إنه واجهة سطر الأوامر إلى خطافات الـ netfilter على مستوى النواة التي يمكنها التلاعب بكومة الشبكة في لينكس. يعمل عن طريق مطابقة كل حزمة تعبر عن الواجهة الشبكية مقابل مجموعة من القواعد لتقرير ما يجب القيام به.

في هذا الدليل، ستستعرض كيفية عمل Iptables. للمزيد من التفاصيل، يمكنك قراءة تفصيل عميق في بنية Iptables و Netfilter.

كيف يعمل Iptables

أولاً، دعنا نستعرض بعض المصطلحات ونناقش كيفية عمل iptables.

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

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

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

تُنظم هذه القواعد في مجموعات تُعرف باسم السلاسل. السلسلة هي مجموعة من القواعد التي يتم فحص الحزمة ضدها بتتابع. عندما تتطابق الحزمة مع إحدى القواعد، فإنها تنفذ الإجراء المرتبط بها وتتجاوز القواعد المتبقية في السلسلة.

A user can create chains as needed. There are three chains defined by default. They are:

  • INPUT: هذه السلسلة تتعامل مع جميع الحزم التي توجه إلى خادمك.
  • OUTPUT: هذه السلسلة تحتوي على قواعد لحركة المرور التي تم إنشاؤها بواسطة خادمك.
  • FORWARD: تُستخدم هذه السلسلة للتعامل مع حركة المرور المتجهة إلى خوادم أخرى لم يتم إنشاؤها على خادمك. هذه السلسلة هي طريقة لتكوين خادمك لتوجيه الطلبات إلى آلات أخرى.

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

يمكن لـ Iptables أيضًا تتبع الاتصالات. وهذا يعني أنه يمكنك إنشاء قواعد تحدد ما يحدث لحزمة بناءً على علاقتها بالحزم السابقة. القدرة هي “تتبع الحالة”، “تتبع الاتصال”، أو تكوين “آلية الحالة”.

IPv4 مقابل IPv6

يحافظ جدار الحماية netfilter الذي يتم تضمينه في نواة Linux على فصل حركة المرور بين IPv4 و IPv6 تمامًا. أدوات Iptables المستخدمة لتلاعب الجداول التي تحتوي على مجموعات قواعد الحماية متميزة أيضًا. إذا كنت قد قمت بتمكين IPv6 على الخادم الخاص بك، سيتعين عليك تكوين كلتا الجداول لمعالجة حركة المرور على خادمك.

ملحوظة: Nftables، الذي يعد خلفًا لـ Iptables، يدمج معالجة IPv4 و IPv6 بشكل أكثر ارتباطًا. يمكن استخدام أمر iptables-translate لنقل قواعد Iptables إلى Nftables.

الأمر العادي iptables يُستخدم للتلاعب بالجدول الذي يحتوي على القواعد التي تحكم حركة مرور IPv4. بالنسبة لحركة المرور IPv6، يُستخدم أمر مرافق يُدعى ip6tables. أي قواعد تُعينها باستخدام iptables ستؤثر فقط على الحزم التي تستخدم عناوين IPv4، ولكن الصياغة بين هذين الأمرين متماثلة. سيقوم أمر iptables بتحديد القواعد التي تنطبق على حركة المرور IPv4، بينما سيقوم أمر ip6tables بتحديد القواعد التي تنطبق على حركة المرور IPv6. لا تنسَ استخدام عناوين IPv6 الخاصة بالخادم الخاص بك لصياغة قواعد ip6tables.

أمور يجب أن تكون في اعتبارك

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

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

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

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

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

الختام

في هذه النقطة، أنت جاهز لتنفيذ جدار الحماية الخاص بك. لهذا، يجب عليك قراءة كيفية إعداد جدار حماية باستخدام Nftables على أوبونتو 22.04. أو، لنهج أعلى مستوى، كيفية إعداد جدار حماية باستخدام UFW على أوبونتو 22.04. إذا كنت تفضل تشغيل جدار الحماية كطبقة خدمة مُدارة، يمكنك أيضًا تجربة جدران السحاب الخاصة بـ DigitalOcean.

Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works