تأمين شبكتك باستخدام Iptables - Proxy - NAT - IDS: الجزء الأول

في المنشور السابق، رأينا كيفية تهيئة IPTables ليعمل كجدار حماية. الآن سنتعرف على كيفية إنشاء برامج نصية لتشغيل القواعد تلقائيًا عند بدء تشغيل النظام، وكيفية حذف هذه القواعد أو إيقافها مؤقتًا.

قبل القيام بالبرنامج النصي وإظهار كيف يبدو ، دعنا نتحدث قليلاً عن NAT ومفهوم ما نريد القيام به بهذه المعدات.

NAT وسياق المثال.

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

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

نات

سنعمل على هذا مع شعار أننا نستخدم لينكس الخاص بنا كموجه / جدار ناري للانتقال إلى الإنترنت من شبكة محلية. ولكن هنا يمكن أن يظهر سيناريوهان.

  • أن نظام Linux الخاص بنا يقع بين جهاز توجيه مزود الخدمة والشبكة المحلية.

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

  • أن لينكس الخاص بنا لديه واجهة متصلة بالشبكة المحلية ومن خلال الواجهة الأخرى يتلقى مباشرة IP العام الذي يتنقل من خلاله.

هذا يعني أن نظام Linux الخاص بنا يجب أن يعمل NAT حتى تتمكن الحزم من الوصول إلى الإنترنت.

لأغراض هذا المختبر الصغير ، سنقول إن نظام Linux الخاص بنا يتلقى عنوان IP عام بشكل مباشر وبالتالي نكون قادرين على اختبار تأثيرات NAT.

للقيام بـ NAT ، نستخدم بناء الجملة

 iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE

حيث eth1 هي الواجهة التي نتلقى فيها عنوان IP العام ، أي حيث ننتقل إلى الإنترنت.

يتم استخدام MASQUERADE عندما يكون عنوان IP عامًا ولكن يمكن أن يتغير بمرور الوقت (ديناميكي). خلاف ذلك يمكننا استخدام SNAT –to-source 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
دعونا لا ننسى إعطاء أذونات التنفيذ

تفسير:

يقوم البرنامج النصي بشكل أساسي بما يلي:

  1. قم أولاً بتقييد كل التنقلات والاتصالات وحركة المرور. (نُهج جدار الحماية الأساسية)
  2. ثم قم بإنشاء NAT مع الوجهة eth1. مما يشير إلى أن لدينا IP عام ثابت "81.2.3.4"
  3. يفتح المنافذ اللازمة لتلقي حزم الاتصالات التي بدأتها.
  4. يقبل حركة مرور HTTP و HTTPS و DNS الصادرة.
القواعد مخصصة لحركة FORWARD لأننا نستخدم Linux الخاص بنا كموجه ، لذلك يتم استخدام السياسات لحركة المرور التي تمر عبر Linux ، أي أنها تعمل كوسيط. هذا يعني أن نظام Linux الخاص بنا لا يمكنه التنقل أو تلقي أي بيانات مباشرة. إنه ينطبق فقط على أجهزة الكمبيوتر المتصلة به ، ولكن ليس بنفسه

إذا أردنا استخدام معداتنا للتنقل ، فيجب علينا تكرار الخطوط والتغيير إلى الأمام إلى 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

أتمتة.

الآن نحتاج إلى إنشاء البرنامج النصي داخل /etc/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

تفسير:

نضع هذا البرنامج النصي الأخير في المسار /etc/init.d/ باسم "firewall" . بعد ذلك، إذا أردنا إدارة جدار الحماية، يمكننا استخدام الأمر /etc/init.d/firewall start. كما يمكننا إيقافه أو التحقق من حالته بنفس الطريقة.

الآن سنقوم بتحرير ملف /etc/rc.local وإضافة شيء مثل: /etc/init.d/firewall start بحيث يبدأ مع النظام.

كذلك. هذا هو الجزء الثاني. آمل أن يجلب لك شيئًا ما. في اليوم التالي نرى الوكيل و IDS.


أضف كمصدر مفضل في جوجل