إن جدار الحماية هو جهاز أمني (أجهزة/برامج) يحمي الشبكة عن طريق تصفية حركة المرور وحظر الوصول غير المرغوب فيه/غير المصرح به إلى البيانات الخاصة. يعد وجود جدار حماية مناسب أمرًا مهمًا لحماية خوادمك وبنيتك التحتية. لا يمكنه حظر حركة المرور غير المرغوب فيها فحسب، بل يمكنه أيضًا منع البرامج الضارة من إصابة النظام.
في نظام Linux البيئي، iptables هو جدار حماية شائع يتكامل مع netfilter في نواة Linux. تأتي معظم أنظمة Linux الحديثة مع هذه الأدوات مدمجة مسبقًا. لتحقيق أقصى استفادة من هذه الأنظمة، من الضروري للغاية فهم بنيتها. وإلا، فإن تطوير سياسات جدار حماية موثوقة قد يكون أمرًا شاقًا. وقد يؤدي ذلك إلى إنشاء صيغ معقدة، وأجزاء متداخلة في إطار العمل، وما إلى ذلك.
هذا الدليل سيتعمق في بنية iptables لمساعدة المستخدمين الذين يحتاجون إلى إنشاء سياسات جدار الحماية الخاصة بهم. سنستكشف أيضًا كيف iptables يتكامل مع netfilter وكيف تتلاءم المكونات المختلفة معًا.
Iptables و Netfilter
في Linux، يعتبر iptables جدار الحماية الأكثر شيوعًا. وهو يعمل من خلال التكامل مع خطافات تصفية الحزم في مكدس شبكات نواة Linux. هذه الخطافات الخاصة بالنواة هي ما يُشار إليه مجتمعًا باسم netfilter إطار عمل.
ستقوم كل حزمة واردة/صادرة في النظام بتنشيط هذه الخطافات أثناء تقدمها عبر المكدس. وبالتالي، فإن البرامج المسجلة في هذه الخطافات قادرة على التفاعل مع حركة المرور في نقاط رئيسية. أخيرًا، تتصل وحدات النواة المرتبطة بـ iptables بهذه الخطافات لفرض قواعد جدار الحماية المحددة.
خطافات Netfilter
لكي تتصل البرامج، هناك خمسة خطافات netfilter مختلفة. ومع تقدم الحزم عبر المكدس، تقوم الخطافات بتنشيط وحدات النواة المسجلة معها. يعتمد شرط التنشيط على ظروف مثل: اتجاه الحزمة (واردة/صادرة)، ووجهة الحزمة، وما إذا كان قد تم إسقاط الحزمة/رفضها في نقطة سابقة، وما إلى ذلك.
هذه هي الخطافات التي تمثل نقاطًا مختلفة محددة جيدًا في مكدس الشبكة:
-
NF_IP_PRE_ROUTING: يتم تنشيط هذا الخطاف بواسطة أي حركة مرور واردة. يحدث التنشيط قبل اتخاذ أي قرار توجيه يتعلق بوجهة الحزمة.
-
NF_IP_LOCAL_IN: يتم تنشيط هذا الخطاف بعد توجيه الحزمة الواردة. يجب أيضًا أن تكون الحزمة موجهة إلى النظام المحلي.
-
NF_IP_FORWARD: يتم تنشيط هذا الخطاف أيضًا بعد توجيه الحزمة الواردة. ومع ذلك، فإنه يتم تنشيطه إذا كان سيتم توجيه الحزمة إلى مضيف آخر.
-
NF_IP_LOCAL_OUT: أي حركة مرور محلية صادرة، بمجرد وصولها إلى مكدس الشبكة، تقوم بتنشيط هذا الخطاف.
-
NF_IP_POST_ROUTING: يتم تنشيط هذا الخطاف بواسطة أي حركة مرور صادرة/مُعاد توجيهها بعد حدوث التوجيه وقبل أن تصل الحزمة إلى السلك.
يجب على وحدات النواة التي ترغب في التسجيل في هذه الخطافات تقديم رقم أولوية. تساعد هذه القيمة في تحديد الترتيب الذي سيتم استدعاؤها به بمجرد تنشيط الخطاف. تتيح هذه الآلية لوحدات متعددة (وحدات مختلفة أو نسخ متعددة من نفس الوحدة) الاتصال بكل خطاف بترتيب محدد. ستعيد كل وحدة قرارًا إلى إطار عمل netfilter بعد معالجة الحزم.
الجداول والسلاسل في Iptables
لتنظيم قواعده، يستخدم جدار حماية iptables الجداول. تصنف الجداول القواعد بناءً على نوع القرارات التي تتخذها. على سبيل المثال، إذا كانت القاعدة تتعلق بـ NAT (ترجمة عنوان الشبكة)، فسيتم وضع القاعدة تحت جدول nat . وبالمثل، إذا كانت القاعدة تحدد ما إذا كان سيتم السماح بالحزمة أو رفضها إلى وجهتها، فإنه يُضاف إلى جدول filter .
داخل كل جدول من جداول iptables، يتم تنظيم القواعد بشكل أكبر داخل “سلاسل” منفصلة. في حين أن الجدول يمثل نوع القواعد التي يحتوي عليها، فإن السلاسل تصف خطافات netfilter التي تنشط القواعد. باختصار، تحدد السلاسل وقت تقييم القاعدة.
إليك السلاسل المدمجة لـ iptables. ومن المثير للاهتمام أن أسماء السلاسل تعكس أيضًا اسم الـ netfilter خطافات:
| السلسلة (iptables) | الاستخدام |
| PREROUTING | NF_IP_PRE_ROUTING |
| INPUT | NF_IP_LOCAL_IN |
| FORWARD | NF_IP_FORWARD |
| OUTPUT | NF_IP_LOCAL_OUT |
| POSTROUTING | NF_IP_POST_ROUTING |
باستخدام السلاسل، يمكن للمسؤولين تحديد المرحلة التي سيتم فيها تقييم القاعدة من مراحل تسليم الحزمة. وبما أن كل جدول يحتوي على سلاسل متعددة، فإنه يمكنه أيضًا توسيع تأثيره في نقاط متعددة أثناء المعالجة. بعض القرارات لا تكون منطقية إلا في نقاط معينة من مكدس الشبكة. وبالتالي، لن يحتوي كل جدول على سلسلة مسجلة مع كل خطاف نواة.
إن إطار عمل netfilter لا يوفر سوى 5 خطافات نواة. على هذا النحو، يتم تسجيل السلاسل من جداول متعددة عند كل نقطة من نقاط الخطافات. على سبيل المثال، إذا كانت هناك ثلاث سلاسل تحتوي على PREROUTING سلاسل، فإنها تسجل مع NF_IP_PRE_ROUTING خطاف. يجب أن توفر كل منها أولوية تحدد الترتيب الذي يتم بموجبه استدعاء سلسلة PREROUTING الخاصة بكل جدول. يتم تقييم سلسلة PREROUTING ذات الأولوية الأعلى أولاً، وتليها السلسلة ذات الأولوية الأعلى التالية ثانياً، وهكذا.
جداول iptables
دعونا نتراجع خطوة إلى الوراء ونلقي نظرة على الجداول التي توفرها iptables . كما ذكرنا سابقًا، يمثل كل جدول مجموعات مختلفة من القواعد، المنظمة حسب مجال الاهتمام، لتقييم الحزم.
-
جدول filter
في iptables ، فإن جدول filter هو أحد أكثر الجداول شيوعًا. يُستخدم لتحديد ما إذا كان سيُسمح للحزمة بالاستمرار إلى وجهتها أم لا. في مصطلحات جدار الحماية، تُعرف هذه العملية باسم “تصفية” الحزم.
إنها وظائف جدول filter التي يشير إليها الأشخاص عند مناقشة جدران الحماية (في أغلب الأحيان).
-
جدول nat
يطبق هذا الجدول القواعد التي تنظم NAT. عندما تدخل الحزم إلى مكدس الشبكة، تحدد القواعد الموضحة في هذا الجدول كيفية تعديل عنوان المصدر/الوجهة للحزمة، مما يؤثر على توجيه الحزمة وأي حركة مرور استجابة.
في كثير من الأحيان، يُستخدم جدول nat لتوجيه الحزم إلى شبكات لا يوجد وصول مباشر إليها.
-
جدول mangle
يحتوي هذا الجدول على القواعد التي تعدل ترويسات IP للحزم بطرق مختلفة. على سبيل المثال، يمكنه تعديل قيمة TTL (وقت البقاء) للحزمة عن طريق إطالة/تقصير عدد قفزات الشبكة الصالحة التي يمكن للحزمة تحملها. بالإضافة إلى ذلك، يمكن لجدول mangle تعديل ترويسات IP الأخرى بطريقة مماثلة.
يُسمح لهذا الجدول أيضًا بوضع “علامة” نواة داخلية على الحزمة يمكن للجداول وأدوات الشبكة الأخرى التقاطها لمزيد من المعالجة. لا تلمس هذه العلامة الحزمة الفعلية، بل تضيف العلامة إلى تمثيل النواة للحزمة.
-
جدول raw
إن جدار حماية iptables هو جدار حماية يعتمد على الحالة، مما يعني أنه يتم تقييم الحزم في سياق علاقتها بالحزم السابقة. تتيح ميزة تتبع الاتصال التي تم تطويرها فوق إطار عمل netfilter لـ iptables عرض الحزم كجزء من اتصال أو جلسة مستمرة بدلاً من تدفق من الحزم المنفصلة وغير المترابطة. بشكل عام، يتم تطبيق منطق تتبع الاتصال بعد وقت قصير جدًا من وصول الحزمة إلى واجهة الشبكة.
يأتي جدول raw بوظيفة محددة للغاية. الغرض الوحيد من هذا الجدول هو توفير آلية لتعليم الحزم من أجل إلغاء الاشتراك في تتبع الاتصال.
-
جدول security
يضع جدول security علامات سياق أمان SELinux داخلية على الحزم. وهذا بدوره يؤثر على كيفية تعامل SELinux (أو أي تطبيق آخر يفسر سياقات أمان SELinux) مع الحزم.
يمكن تطبيق علامات SELinux على أساس كل حزمة أو كل اتصال.
السلاسل المطبقة في كل جدول
حتى الآن، تحدثنا عن الجداول والسلاسل بشكل منفصل. حان الوقت لاستعراض السلاسل المتاحة في كل جدول. يوسع هذا الموضوع النقاش حول ترتيب تقييم السلاسل المسجلة في نفس الخطاف. على سبيل المثال، ماذا يحدث إذا كان لثلاثة جداول سلاسل PREROUTING ؟ ما هو ترتيب تقييمها؟
بعد ذلك، ألقِ نظرة على الجدول التالي. وهو يوضح السلاسل المتاحة ضمن كل iptables جدول.
| PREROUTING | INPUT | FORWARD | OUTPUT | POSTROUTING | |
|
(قرار التوجيه) |
✓ | ||||
|
raw |
✓ | ✓ | |||
|
(تم تمكين تتبع الاتصال) |
✓ | ✓ | |||
|
mangle |
✓ | ✓ | ✓ | ✓ | ✓ |
|
nat (DNAT) |
✓ | ✓ | |||
|
(قرار التوجيه) |
✓ | ✓ | |||
|
filter |
✓ | ✓ | ✓ | ||
|
security |
✓ | ✓ | ✓ | ||
|
nat (SNAT) |
✓ | ✓ |
عند قراءته من اليسار إلى اليمين، فإنه يصف الجداول التي تحتوي على السلاسل. على سبيل المثال، فإن جدول raw يحتوي على كل من سلسلتي PREROUTING و OUTPUT . وعند قراءته من الأعلى إلى الأسفل، فإنه يصف الترتيب الذي يتم بموجبه استدعاء كل سلسلة عند تشغيل netfilter المرتبط بها.
لاحظ أن جدول nat قد تم تقسيمه بين عمليات DNAT (تعديل وجهة الحزمة) وعمليات SNAT (تعديل مصدر الحزمة) لتحديد ترتيبها بشكل أكثر وضوحًا. تضمن الجدول أيضًا نقاط تمثيل حيث يتم اتخاذ قرارات التوجيه وحيث يتم تمكين تتبع الاتصال.
تعتمد الخطافات (الأعمدة) التي ستطلقها الحزمة على طبيعة الحزمة (الواردة/الصادرة)، وقرارات التوجيه التي يتم اتخاذها، وما إذا كانت الحزمة تفي بمعايير التصفية.
يمكن لبعض الأحداث تجاوز سلسلة الجدول أثناء المعالجة. على سبيل المثال، سيتم تقييم الحزمة الأولى فقط في الاتصال مقابل قواعد NAT كما هو موضح في جدول nat . وأي حزمة لاحقة في نفس الاتصال سيتم تطبيق نفس قرارات nat عليها دون أي تقييم إضافي. ستطبق الاستجابات لاتصالات NAT تلقائيًا قواعد NAT العكسية للتوجيه الصحيح.
ترتيب عبور السلسلة
بافتراض أن الخادم يعرف قواعد توجيه الحزم وأن قواعد جدار الحماية تسمح بالإرسال، فإن التدفقات التالية تمثل كيفية عبور المسارات المختلفة:
-
الحزم الواردة الموجهة إلى النظام المحلي: PREROUTING >> INPUT
-
الحزم الواردة الموجهة إلى مضيف آخر: PREROUTING >> FORWARD >> POSTROUTING
-
الحزم التي تم إنشاؤها محليًا: OUTPUT >> POSTROUTING
في الختام، ومن خلال دمج جميع المعلومات التي ناقشناها حتى الآن، يمكننا أن نرى أن أي حزمة واردة موجهة إلى النظام المحلي سيتم تقييمها مقابل سلاسل PREROUTING الخاصة بجداول raw, mangle، و nat . بعد ذلك، ستمر عبر سلاسل INPUT الخاصة بجداول mangle, filter, security، و nat قبل أن تصل أخيرًا إلى المقبس المحلي.
قواعد Iptables
إن قواعد جدار الحماية iptables توضع داخل سلسلة معينة في جدول معين. عند استدعاء سلسلة، سيتم تقييم الحزمة المعنية مقابل كل قاعدة في السلسلة. تتكون كل قاعدة من مكونين: مكون المطابقة ومكون الإجراء.
-
المطابقة
يحدد جزء المطابقة من القاعدة الشروط التي يجب أن تفي بها الحزمة قبل تنفيذ الإجراء المحدد (أو “الهدف”) .
يوفر نظام المطابقة مرونة مذهلة. ويمكن أيضًا توسيع وظائفه بمساعدة امتدادات iptables . يمكن وصف القواعد لمطابقة الحزم حسب نوع البروتوكول، وعنوان المصدر/الوجهة، ومنفذ المصدر/الوجهة، وشبكة المصدر/الوجهة، وواجهة الإدخال/الإخراج، والرؤوس، وحالة الاتصال، ومعايير أخرى. يمكن أن تحتوي القاعدة أيضًا على مزيج من هذه الشروط، مما ينتج عنه مجموعات قواعد معقدة للتمييز بين حركة المرور المختلفة.
-
الأهداف
الهدف هو الإجراء المتخذ عندما تفي الحزمة بمعايير مطابقة القاعدة. بشكل عام، تنقسم الأهداف إلى مجموعتين:
-
-
الأهداف النهائية: وهي تنهي عملية التقييم داخل السلسلة وتعيد التحكم إلى خطاف netfilter . وبناءً على القيمة المرجعة، سيسمح الخطاف للحزمة بمواصلة رحلتها أو إسقاطها.
-
الأهداف غير النهائية: يقوم الهدف بإجراء وتستمر عملية التقييم في السلسلة. على الرغم من أن كل سلسلة يجب أن تمر بقرار نهائي حاسم، إلا أنه يمكن حدوث أي عدد من الأهداف غير النهائية مسبقًا.
-
يعتمد توفر كل هدف داخل القواعد على السياق. على سبيل المثال، قد يؤثر نوع السلسلة والجدول على توفر الأهداف. وتشمل العوامل المحتملة الأخرى الامتدادات النشطة في القاعدة وعبارات المطابقة.
السلاسل المعرفة من قبل المستخدم
هناك أيضًا فئة خاصة من الأهداف غير المنتهية: هدف الانتقال. أهداف الانتقال هي إجراءات يتم تنفيذها عندما ينتقل التقييم من سلسلة إلى أخرى لمعالجة إضافية. حتى الآن، تحدثنا عن السلاسل المدمجة المرتبطة ارتباطًا وثيقًا بخطافات netfilter التي تستدعيها. ومع ذلك، فإن iptables يسمح أيضًا للمسؤولين بإنشاء سلاسل مخصصة لهم.
القواعد في السلاسل المعرفة من قبل المستخدم تشبه أيضًا تلك الموجودة في السلاسل المدمجة. الفرق الرئيسي هو أنه لا يمكن الوصول إلى السلاسل المعرفة من قبل المستخدم إلا عن طريق “الانتقال” إليها من قاعدة ما. وذلك لأن السلاسل المعرفة من قبل المستخدم ليست مرتبطة بأي خطافات netfilter .
يمكنك التفكير في السلاسل المعرفة من قبل المستخدم على أنها امتدادات للسلسلة التي استدعتها في الأصل. على سبيل المثال، في السلسلة المعرفة من قبل المستخدم، سيعود التقييم إلى السلسلة المستدعية إذا وصل إلى نهاية قائمة القواعد أو إذا نفذت قاعدة مطابقة هدف RETURN . ومن المثير للاهتمام أن السلسلة المعرفة من قبل المستخدم يمكنها أيضًا “نقل” التقييم إلى سلسلة أخرى معرفة من قبل المستخدم.
تضع هذه الميزة الأساس لتنظيم أفضل والإطار اللازم للتفرع القوي.
تتبع الاتصالات
عند مناقشة جدول raw ومعايير مطابقة حالة الاتصال، ناقشنا نظام تتبع الاتصالات المطبق فوق إطار عمل netfilter. تتيح هذه الميزة لـ iptables عرض الحزم في سياق اتصال مستمر. يوفر نظام تتبع الاتصالات أيضًا لـ iptables الوظائف اللازمة لإجراء عمليات “مبنية على الحالة” (stateful).
بمجرد دخول الحزمة إلى مكدس الشبكة، يتم تطبيق تتبع الاتصال. سلاسل جدول raw وبعض فحوصات السلامة الأساسية هي كل المنطق الذي يدخل في ربط الحزم بالاتصال.
يتحقق النظام من كل حزمة مقابل مجموعة من الاتصالات الحالية. إذا لزم الأمر، سيقوم النظام بتحديث حالة الاتصالات الحالية أو إنشاء اتصالات جديدة. الحزم التي تم تمييزها بهدف NOTRACK في أي من سلاسل جدول raw ستتجاوز إجراءات تتبع الاتصال الإضافية.
-
الحالات المتاحة
الاتصالات التي يتم تتبعها بواسطة نظام تتبع الاتصالات سيتم تعيين أي من الحالات التالية لها:
-
-
NEW : عند وصول حزمة غير مرتبطة باتصال موجود ولكنها ليست غير صالحة كحزمة أولى، يتم إضافة اتصال جديد إلى النظام بهذا الملصق. يحدث هذا لكل من البروتوكولات التي تعتمد على الاتصال (TCP، على سبيل المثال) والبروتوكولات عديمة الاتصال (UDP، على سبيل المثال).
-
ESTABLISHED: يتم تحديث حالة الاتصال من NEW إلى ESTABLISHED عندما يتلقى استجابة صالحة من الاتجاه المعاكس. بالنسبة لاتصالات TCP، فإنه يشير إلى SYN/ACK. بالنسبة لحركة مرور UDP و ICMP، فإنه يشير إلى استجابة حيث يتم تبديل مصدر الحزمة الأصلية ووجهتها.
-
RELATED: الحزم التي ليست جزءًا من اتصال ولكنها مرتبطة باتصال قائم يتم تصنيفها كـ RELATED . يمكن أن يعني ذلك اتصالاً مساعدًا (على سبيل المثال، في اتصال نقل بيانات FTP)، أو استجابات ICMP لمحاولات الاتصال بواسطة بروتوكولات أخرى.
-
INVALID: الحزم التي ليست جزءًا من اتصال قائم، وتعتبر غير مناسبة لفتح اتصال جديد، أو لا يمكن تحديدها، أو غير قابلة للتوجيه وما إلى ذلك، يتم تصنيفها كـ INVALID.
-
UNTRACKED: يمكن تصنيف الحزمة كـ UNTRACKED إذا تم استهدافها في سلسلة جدول raw لتجاوز التتبع.
-
SNAT: يشير إلى حالة افتراضية يتم تعيينها عندما يتم تعديل عنوان المصدر بواسطة عملية NAT. يتم التعامل معها بواسطة نظام تتبع الاتصالات بحيث يتم ترجمة عناوين المصدر في حزم الرد.
-
DNAT: مشابه لـ SNAT، فإنه يشير إلى حالة افتراضية عندما يتم تعديل عنوان الوجهة بواسطة عملية NAT. ويتعامل نظام تتبع الاتصالات معها بحيث يعرف كيفية ترجمة عنوان الوجهة مرة أخرى عند توجيه حزم الرد.
-
تتيح هذه الحالات التي يتتبعها نظام تتبع الاتصالات للمسؤولين صياغة قواعد محددة تستهدف نقاطًا معينة في دورة حياة الاتصال. وهي توفر الوظائف اللازمة لقواعد أكثر شمولاً وأمانًا.
أفكار نهائية
في Linux، فإن إطار عمل netfilter وجدار حماية iptables يعملان كأساس لمعظم جدران الحماية. وتكون خطافات netfilter قريبة بما يكفي من مكدس الشبكة للسماح بالتحكم القوي في الحزم التي يعالجها النظام. ومن خلال الاستفادة من هذه القدرات، فإن جدار حماية iptables يوفر طريقة مرنة لإبلاغ متطلبات السياسة إلى النواة.
يتعمق هذا الدليل في البنية الداخلية لإطار عمل netfilter وجدار حماية iptables. بالإضافة إلى ذلك، فإنه يناقش نظام تتبع الاتصالات. ومن خلال فهم كيفية ترابط هذه الأجزاء معًا، يمكنك الاستفادة منها بشكل أفضل لإنشاء بيئات خوادم أكثر قوة وأمانًا.
أخيرًا، بينما يتناول هذا الدليل آليات العمل الداخلية، راجع هذا الدليل حول تكوين iptables لتطبيقها عمليًا. بالإضافة إلى ذلك، يمكنك رؤية كيف يبسط جدار حماية UFW further simplifies iptables بشكل أكبر. علاوة على ذلك، سيكون من المفيد معرفة كيفية عرض وحذف قواعد جدار حماية iptables.
حوسبة سعيدة!
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.