في أضف الأمامي لقد رأينا تكوين IPTables للعمل كجدار حماية. يمكننا الآن معرفة كيفية إنشاء تلك البرامج النصية بحيث يتم تنفيذ القواعد تلقائيًا عند بدء تشغيل النظام ، وكذلك كيف يمكننا إلغاء أو إيقاف هذه القواعد للحظة.
قبل القيام بالبرنامج النصي وإظهار كيف يبدو ، دعنا نتحدث قليلاً عن NAT ومفهوم ما نريد القيام به بهذه المعدات.
NAT وسياق المثال.
عندما نتحدث عن NAT ، يمكننا الخلط بين هذا وبين التوجيه ، لأن كلاهما مسؤول عن توصيل شبكتين مختلفتين ببعضهما البعض. يتمثل الاختلاف الحقيقي في أنه يتم تطبيق التوجيه للانتقال من شبكة محلية إلى أخرى ويمكن لهذه الشبكة الأخرى الاتصال بجهاز توجيه والخروج إلى الإنترنت.
بينما ، عندما نتحدث عن NAT ، فإننا نتحدث عن حزم التوجيه من شبكة محلية أو خاصة إلى شبكة عامة أو الإنترنت. يقوم بذلك عن طريق إخفاء الحزم عن طريق وضع عنوان IP العام الذي ينتقل به إلى الإنترنت. أي لسنا بحاجة إلى جهاز توجيه ، لأن IP العام مملوك مباشرة لحاسوب GNU / Linux.
سنعمل على هذا مع شعار أننا نستخدم لينكس الخاص بنا كموجه / جدار ناري للانتقال إلى الإنترنت من شبكة محلية. ولكن هنا يمكن أن يظهر سيناريوهان.
- أن نظام Linux الخاص بنا يقع بين جهاز توجيه مزود الخدمة والشبكة المحلية.
في هذه الحالة ، ستكون هناك شبكة بين جهاز التوجيه ونظام Linux الخاص بنا ، وستكون هناك شبكة أخرى مختلفة بين Linux والشبكة المحلية. هذا يعني أن جهاز التوجيه الخاص بنا لن يضطر إلى القيام بـ NAT على هذا النحو ، من خلال توجيه حركة مرور بسيط كما هو موضح في أضف الأمامي سيكون ذلك جيدا.
- أن لينكس الخاص بنا لديه واجهة متصلة بالشبكة المحلية ومن خلال الواجهة الأخرى يتلقى مباشرة IP العام الذي يتنقل من خلاله.
هذا يعني أن نظام Linux الخاص بنا يجب أن يعمل NAT حتى تتمكن الحزم من الوصول إلى الإنترنت.
لأغراض هذا المختبر الصغير ، سنقول إن نظام Linux الخاص بنا يتلقى عنوان IP عام بشكل مباشر وبالتالي نكون قادرين على اختبار تأثيرات NAT.
للقيام بـ NAT ، نستخدم بناء الجملة
iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE
حيث eth1 هي الواجهة التي نتلقى فيها عنوان IP العام ، أي حيث ننتقل إلى الإنترنت.
إنشاء سكربت iptables
افترض إذن أن: 172.26.0.0 هو شبكتنا المحلية و 81.2.3.4 هو عنوان IP العام الذي ننتقل من خلاله إلى الإنترنت. (هو IP ثابت). لدي واجهات eth0 (شبكة محلية)
eth1 (شبكة عامة).
يتكون أساسًا من إنشاء برنامج نصي يمكن استدعاؤه من /etc/init.d/firestop (على سبيل المثال). ومن هذا البرنامج النصي يمكننا بدء أو إيقاف أو التحقق من حالة الضبط ، تمامًا كما نفعل مع أي برنامج خفي للنظام.
افترض أن قواعد IPTABLES الخاصة بي هي:
#! / bin / bash # جدار حماية منزلي. # اسم الملف / etc / firewall_on # بواسطة Jlcmux Twitter:Jlcmux # # Basic policy. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #NAT لمشاركة الإنترنت من eth0 إلى eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT - إلى المصدر 81.2.3.4 # # السماح بالاتصالات الواردة التي بدأت بواسطة iptables الخاصة بي - حالة FORWARD -m - الحالة التي تم إنشاؤها ، ذات الصلة - j ACCEPT # # iptables المرخصة لحركة المرور الصادرة - A FORWARD --i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp -dport 443 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
تفسير:
يقوم البرنامج النصي بشكل أساسي بما يلي:
- قم أولاً بتقييد كل التنقلات والاتصالات وحركة المرور. (نُهج جدار الحماية الأساسية)
- ثم قم بإنشاء NAT مع الوجهة eth1. مما يشير إلى أن لدينا IP عام ثابت "81.2.3.4"
- يفتح المنافذ اللازمة لتلقي حزم الاتصالات التي بدأتها.
- يقبل حركة مرور HTTP و HTTPS و DNS الصادرة.
إذا أردنا استخدام معداتنا للتنقل ، فيجب علينا تكرار الخطوط والتغيير إلى الأمام إلى INPUT أو OUTPUT حسب الاقتضاء.
إلغاء البرنامج النصي.
سنقوم الآن بإنشاء برنامج نصي يتجاوز كل ما سبق ويترك الكمبيوتر نظيفًا من كل هذا. (لأغراض الاختبار أو نريد فقط إيقاف تشغيل جدار الحماية).
#! / bin / bash # جدار حماية منزلي. # اسم الملف / etc / firewall_off # بواسطة Jlcmux Twitter:Jlcmux # #Deleting iptables Rules -F # # تطبيق السياسات الافتراضية (جميع حركة المرور مقبولة) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
أتمتة.
الآن يجب علينا إنشاء البرنامج النصي في الداخل /الخ/init.d/ وتبدأ الخدمة تلقائيًا ويمكننا إدارتها بطريقة مريحة أكثر.
#! / bin / bash # جدار حماية منزلي. # اسم الملف /etc/init.d/ firewall # بواسطة Jlcmux Twitter:Jlcmux case $ 1 in start) / etc / firewall_on ؛؛ stop) / etc / firewall_off ؛؛ الحالة) iptables -L ؛؛ *) صدى "بناء جملة خاطئ. صالح = /etc/init.d/ بدء جدار الحماية | إيقاف | الحالة ؛؛ esac
تفسير:
هذا السيناريو الأخير الذي وضعناه /الخ/init.d/ بالاسم جدار الحماية. لذلك إذا أردنا إدارة جدار الحماية يمكننا استخدام الأمر /etc/init.d/ بدء جدار الحماية. وبنفس الطريقة يمكننا إيقافه أو رؤية الدولة.
الآن سنقوم بتحرير الملف /etc/rc.local ونضع شيئًا مثل: /etc/init.d/ بدء جدار الحماية لتبدأ بالنظام.
كذلك. هذا هو الجزء الثاني. آمل أن يجلب لك شيئًا ما. في اليوم التالي نرى الوكيل و IDS.
إذا كنت تستخدم دبيان ، فهناك حزمة في الريبو (iptables-persistent) تفعل ذلك بالضبط ، فهي تتخلص من القواعد الحالية في /etc/iptables/rules.v4 أو v6 اعتمادًا على ما تستخدمه ثم تطبقها عليك عندما ترفع النظام.
من الناحية العملية ، لتنظيف تكوين جدار حماية iptables التقليدي (واستخدام NAT لن يكون كذلك من وجهة نظري) ، في معظم الحالات ، يكفي تدفق قاعدة وإعادة تعيين السياسات الافتراضية إلى "قبول".
لكن من الناحية النظرية ، وعلى حد علمي ، بالإضافة إلى ذلك ، تحتاج أيضًا إلى مسح السلاسل غير الافتراضية وإعادة تعيين العدادات. الإجراءات التي يجب اتخاذها مع الأخذ في الاعتبار أنه بالإضافة إلى "عامل التصفية" توجد جداول أخرى ، (من الضروري قراءة الملف "/ proc / net / ip_tables_names" لهذا الغرض).
بالمناسبة ، تقول الأرثوذكسية أن جدار الحماية يجب أن يكون موجودًا بالفعل قبل الشبكة. لا أعرف كيف يتم تحقيق ذلك في أنظمة Linux الأخرى ، ولكن في نوع Debian ، يمكن تعديل البرنامج النصي ووضعه في الدليل "/etc/network/if-pre-up.d/".
جدار حماية جيد للجميع. 😉
مرحبا المنشور جيد جدا لقد قرأت المجلدين كاملين.
في انتظار التالي 🙂
سؤال من جهلي ، نواصل مع iptables ، ولكن بالنسبة للعديد من إصدارات kernel ، لدينا nftables ، وأنا أختبرها بالفعل ، والأسئلة هي ، هل nftables شيء تجريبي بالنسبة إلى iptables؟ هل سيستمر استخدام iptables لفترة أطول؟
غراسياس.
تتضمن nftables جميع وظائف iptables و ip6tables و arptables و ebtables ، وكلها تستخدم بنية تحتية جديدة في كلٍ من مساحة kernelspace والمستخدمين ، مما يضمن أداءً أفضل ووظائف محسنة. ستحل nftables محل iptables وجميع الأدوات الأخرى المذكورة ولكن ليس في الوقت الحالي ، على الأقل حتى يكون هناك استخدام أكثر انتشارًا لـ nftables على هذا النحو.
منشور جيد جدًا ، أردت قراءة المزيد لأنه تم شرحه جيدًا .. تحياتي شكرًا مساهمة كبيرة
مرحبا! جيد جدا كلا المنشور.
كمساهمة يمكنك إضافة إلى النهاية في هذا الجزء:
"سنقوم الآن بتحرير الملف /etc/rc.local ووضع شيئًا مثل: /etc/init.d/firestop start بحيث يبدأ بالنظام."
أضف هذا إلى rc.local.
إذا [-x /etc/init.d/ firewall] ؛ ثم
/etc/init.d/ بدء جدار الحماية
fi
مما يعني أنه إذا كان "جدار الحماية" لديه أذونات تنفيذ ، فقم بتنفيذها ، إذا لم يكن كذلك.
إذا كنت تريد عدم بدء "جدار الحماية" ، فما عليك سوى إزالة الأذونات.
على سبيل المثال: chmod + x /etc/init.d/ firewall
لتشغيله عند كل بدء تشغيل أو ...
chmod -x /etc/init.d/ جدار الحماية
لتعطيله تمامًا.
تحيات!