أمن Linux / متوسط: حدود الخدمة والسياسة ودورة الحياة / الدرس 9
نمذجة سياسة الشبكة دون تطبيق قواعد جدار
تحديد الاتجاه ونطاق الطرف وترتيب القواعد والافتراض بسجلات حزم خاملة.
في هذه الصفحة
أهداف الدرس
- فصل نموذج القاعدة المحلي عن إنفاذ خطافات وسلاسل nftables.
- اختبار الحركة المشروعة والبدائل المرفوضة دون إرسال حزم.
البدء بالاتصال المطلوب
قد لا يحتاج عامل التقارير أي وصول شبكي، أو قد يحتاج وجهة تسليم معتمدة محددة. عرف دور المصدر والاتجاه والبروتوكول والطرف وغرض العمل قبل القواعد. قد يعبر دخول المضيف وحركة الحاويات الممررة والخروج المحلي مسارات معالجة مختلفة. لا يستبدل إذن التطبيق حد الشبكة، ولا يثبت منفذ مفتوح خدمة سليمة أو مخولة. يستخدم المساق قواميس حزم مختلقة وعناوين توثيق فقط. لا ينشئ مقبسا أو يجري DNS أو اتصالا أو مسحا أو التقاطا أو استعلام جدار أو تغيير قواعد.
استخدام نموذج قواعد مرتبة صغير عمدا
يقيم البرنامج الأول مطابقات البروتوكول والمنفذ الدقيقة بالترتيب، ثم يستخدم قرارا افتراضيا معلنا. يقبل حالة تسليم HTTPS خيالية ويرفض SSH وحالة غير مطابقة. ليس صيغة nftables أو محاكاة netfilter. يعتمد السلوك الفعلي على عائلة العنوان والسلاسل الأساسية والخطافات والأولويات والسياسات والحالة وسلاسل أخرى؛ فلا يمثل accept في موضع قرارا نهائيا عاما لكل القواعد. وضح هذه الحدود، ولا تفترض أن حلقة Python تختار أول مطابق تتحقق من جدار فعلي.
rules = [("TCP", 443, "allow"), ("TCP", 22, "deny")]
def decide(protocol, port):
for expected_protocol, expected_port, verdict in rules:
if (protocol, port) == (expected_protocol, expected_port):
return verdict
return "deny"
assert decide("TCP", 443) == "allow"
assert decide("TCP", 22) == "deny"
assert decide("UDP", 443) == "deny"
print("three fictional ordered-rule decisions checked")
three fictional ordered-rule decisions checked
يقارن البرنامج الكامل سلاسل وأعدادا دون إرسال أو تثبيت قاعدة. المنفذ 443 اختيار عقد تدريبي، ولا يفحص TLS أو هوية الوجهة أو إذن التطبيق أو الجدار الفعلي.
إدراج الطرف والاتجاه بدلا من المنفذ وحده
قد تمنح قاعدة تسمح بكل وجهة على منفذ واحد اتصالا أكثر مما يحتاجه العمل. يفحص البرنامج الثاني اتجاها ووجهة مختلقين محددين مع البروتوكول والمنفذ. يظل شرطا تدريبيا، لا ضبط خروج يدرك DNS أو سياسة هوية. قد تتغير عناوين الأطراف الحقيقية أو تستخدم وكلاء أو تعتمد بنية أخرى معتمدة. وثق هذه التبعيات بدلا من سماح شامل غير مفسر. عنوان التوثيق ليس هدفا حقيقيا؛ ولا يثبت تطابقه في الذاكرة مسارا أو وصولا أو تشفيرا.
def approved_delivery(packet):
return (packet["direction"], packet["protocol"], packet["destination"], packet["port"]) == ("out", "TCP", "192.0.2.20", 443)
base = {"direction":"out", "protocol":"TCP", "destination":"192.0.2.20", "port":443}
assert approved_delivery(base) is True
assert approved_delivery({**base, "direction":"in"}) is False
assert approved_delivery({**base, "destination":"192.0.2.21"}) is False
print("declared direction and destination narrow the model")
declared direction and destination narrow the model
يقيم البرنامج الكامل ثلاثة قواميس. العنوان مثال محجوز لا يتصل به، ولا يفحص IP أو مساحة شبكة أو مسارا أو حالة جدار أو خدمة خارجية.
مراجعة الحالة والعائلات والمسارات البديلة
قد تغير تغطية IPv4 و IPv6 ومعالجة التدفقات القائمة والمقابس المحلية والتمرير والحاويات والقواعد التي تولدها أدوات الإدارة الحد الفعال. قد لا تمثل سلسلة ظاهرة واحدة المسار كله. لا تعطل IPv6 أو تمح القواعد أو توسع وصول الإدارة كإصلاح عام. استخدم بنية مراجعة وخطة تحقق مؤقتة معتمدة تحفظ مسار الإدارة والتعافي المطلوب. لا يطبق الدرس إعداد شبكة؛ بل يحدد الافتراضات التي تحسمها المراجعة الفعلية قبل ادعاء حجب نمط حركة أو السماح به.
فحص الاستدلال منفصلا عن النشر
اختر حالات قبول ورفض ذات معنى والسلوك الافتراضي وتعارض ترتيب القواعد والعائلات أو الاتجاهات البديلة المناسبة. سجل القرارات المتوقعة والملاحظات المعتمدة الفعلية دون توليد حركة لهذا المساق. يثبت نجاح شرط محلي خاصيته وحدها. لم ينفذ تحليل nftables أو ترتيب قواعد محملة أو توجيه أو هوية تطبيق أو استجابة بعيدة. حدد المرجع ونطاق النموذج بدقة، حتى لا يعامل التمرين كتقييم جدار المضيف أو مجموعة قواعد عامة جاهزة للتطبيق.
الأخطاء الشائعة وإصلاحها
يسمى سماح المنفذ إذن تطبيق
- لماذا يحدث؟
- يتوسع النقل للهوية والعمل.
- كيف تصلحه؟
- راجع الوجهة والبروتوكول والهوية والنطاق مستقلة.
- كيف تتجنب تكراره؟
- اربط كل طبقة بادعائها.
تثبت سلسلة كل المسارات
- لماذا يحدث؟
- تهمل الخطافات والأولوية والعائلات والتوليد.
- كيف تصلحه؟
- راجع المسار المعني كاملا.
- كيف تتجنب تكراره؟
- وضح دليل التحميل والبنية.
يسمى حكم Python اختبار جدار
- لماذا يحدث؟
- يخلط النموذج والإنفاذ.
- كيف تصلحه؟
- وضح عدم تشغيل قواعد أو حركة.
- كيف تتجنب تكراره؟
- خطط تحقق منصة معزولا معتمدا فقط.
اختبر فهمك
1. يسمح النموذج TCP443 لأي مضيف. لماذا يزيد الحاجة؟
اعرض الحل المشروح
قد يحتاج وجهة تسليم واحدة لا اتصال خروج اعتباطيا. حدد الطرف والاتجاه وتبعيات العنوان المتغير. لا يثبت المنفذ تشفيرا أو إذنا ولا ينفذ المساق تسليما أو جدارا.
2. هل يثبت accept المبسط قبول الحزمة فعليا في كل المسار؟
اعرض الحل المشروح
لا. قد تؤثر خطافات وسلاسل وسياسات ومسارات وعائلات أخرى. الحلقة ليست مفسر netfilter عمدا. احفظ القرار المحدد وأبق الإنفاذ غير متحقق حتى دليل مصرح به مستقل.
أهم ما تعلمته
- تحتاج السياسة اتجاها وطرفا وبروتوكولا وغرضا.
- النموذج المرتب المبسط ليس قواعد نواة.
- تحتاج المسارات المحملة دليلا مصرحا به مستقلا.