تكوين IPTables السهل وأمثلة على Ubuntu 16.04

المقدمة

iptablesهي أداة قوية تُستخدم لتكوين جدار الحماية المدمج لـ Linux-kernel. يأتي مثبتًا مسبقًا على معظم توزيعات Ubuntu ، ولكن إذا كنت تستخدم إصدار Ubuntu مخصصًا أو تعمل داخل حاوية ، فمن المرجح أن تحتاج إلى تثبيته يدويًا.

sudo apt-get install iptables iptables-persistent

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

نصائح

يمكنك استخدام netcatالأمر (على كمبيوتر مختلف عن الخادم الخاص بك) لاختبار أي من المنافذ مفتوحة أو مغلقة.

nc -z -w5 -v SERVER_IP PORT
  • nc هو الأمر netcat.
  • -z فقط أرسل حزمة بدون حمولة.
  • -w5 انتظر حتى 5 ثوان للرد.
  • -v وضع مفصل.
  • استبدل SERVER_IPبعنوان الخادم الخاص بك.
  • استبدل PORTالمنفذ الذي تريد اختباره إذا كان مفتوحًا (على سبيل المثال 22).

على خادمك ، يمكنك استخدام netstatالأمر لمعرفة المنافذ التي تستمع حاليًا للاتصالات.

sudo netstat -tulpn

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

بناء الجملة

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTإضافة قاعدة إلى INPUTالسلسلة ، السلسلة هي مجموعة من القواعد ، والقواعد التي نستخدمها أكثر في هذا الدليل ستكون INPUT، OUTPUTو PREROUTING.
  • -p tcpتعيين tcpكبروتوكول ستنطبق عليه هذه القاعدة ، يمكنك أيضًا استخدام بروتوكولات أخرى مثل udp، icmpأو all.
  • -m tcpاستخدم tcpالوحدة. iptablesيدعم ميزات إضافية عبر الوحدات النمطية ، بعضها يأتي بالفعل مثبتًا مسبقًا مع iptablesالبعض الآخر ، مثل geoipالوحدة النمطية.
  • --dport 22--تشير الأوامر التي تبدأ بـ إلى خيارات إضافية للوحدة النمطية المستخدمة سابقًا ، في هذه الحالة سنخبر tcpالوحدة بأن تنطبق فقط على المنفذ 22.
  • -m geoipاستخدم geoipالوحدة. سيحد من الحزم على أساس كل بلد (مزيد من المعلومات في الخطوة 5).
  • --src-cc PEأخبر geoipالوحدة النمطية بقصر الحزم الواردة على الحزم الواردة من بيرو. لمزيد من رموز البلدان ابحث عنها ISO 3166 country codesعلى الإنترنت.
  • -j ACCEPTو -jحجة تقول iptablesما يجب القيام به إذا كانت العبوة تطابق القيود المحددة في الحجج السابقة. في هذه الحالة ستكون ACCEPTهذه الحزم ، والخيارات الأخرى REJECT، DROPوالمزيد. يمكنك العثور على المزيد من الخيارات من خلال البحث iptables jump targetsعلى الإنترنت.

1. الأساسيات

أدرج جميع القواعد.

sudo iptables -L

قم بإدراج جميع الأوامر التي تم استخدامها لإنشاء القواعد المستخدمة حاليًا ، وهي مفيدة لتحرير القواعد أو حذفها.

sudo iptables -S

لحذف قاعدة معينة ، اختر قاعدة sudo iptables -Sواستبدل -Aبها -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

أدرج جميع القواعد المرقمة في INPUTالسلسلة.

sudo iptables -L INPUT --line-numbers

حذف قاعدة مرقمة.

sudo iptables -D INPUT 2

لمسح جميع القواعد.

sudo iptables -F

تحذير: قد تفقد الاتصال إذا تم الاتصال بواسطة SSH .

امسح القواعد فقط في OUTPUTالسلسلة.

sudo iptables -F OUTPUT

2. إنشاء قواعد أولية

سماح SSHعلى eth0واجهة

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 تطبيق القاعدة على واجهة معينة ، للسماح لأي واجهة بإزالة هذا الأمر.

لتحديد الحزم الواردة إلى IP معين (أي 10.0.3.1/32).

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 يحدد IP / شبكة فرعية للسماح بالاتصالات من.

تعيين قواعد السلسلة الافتراضية.

تحذير: قبل المتابعة ، تأكد من أنك قمت بتطبيق قواعد SSH الصحيحة إذا كنت تعمل على خادم بعيد .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP يرفض جميع الحزم الواردة (أي لن يتمكن أحد من الاتصال بخوادمك قيد التشغيل مثل Apache و SQL وما إلى ذلك).
  • -P FORWARD DROP يرفض جميع الحزم المعاد توجيهها (أي عندما تستخدم نظامك كموجه).
  • -P OUTPUT ACCEPTيسمح لجميع الحزم الصادرة (أي عند تنفيذ HTTPطلب).

السماح لجميع حركة المرور على واجهة الاسترجاع ( مستحسن ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. جعل القواعد ثابتة

احفظ iptablesالقواعد الحالية .

sudo netfilter-persistent save
sudo netfilter-persistent reload

إذا كنت تعمل داخل حاوية ، netfilter-persistentفمن المرجح ألا يعمل الأمر ، لذلك تحتاج إلى إعادة تكوين iptables-persistentالحزمة.

sudo dpkg-reconfigure iptables-persistent

4. السماح بالاتصالات الصادرة

السماح باستعلامات DNS.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

استخدام stateوحدة للسماح RELATEDو ESTABLISHEDالحزم الصادرة.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

السماح للمنافذ المطلوبة ؛ في هذه الحالة ، HTTPالموانئ.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

المزيد من المنافذ التي قد ترغب في استخدامها.

  • FTP: برنامج التعاون الفني في المنفذ 21
  • HTTPS: TCP في المنفذ 443
  • DHCP: UDP في المنفذ 67
  • NTP: UDP في المنفذ 123

ملاحظة: إذا كنت تريد السماح apt-getفقد يكون من الضروري السماح FTPوHTTPS .

اسمح لحركة المرور المرتجعة فقط بالاتصالات RELATEDبالفعل ESTABLISHED( يُنصح بذلك لأنه يلزم أحيانًا الاتصال ثنائي الاتجاه).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
قواعد مفيدة أخرى

السماح بطلبات ping من الخارج.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

إعادة توجيه حركة المرور على eth0المنفذ 2200إلى 10.0.3.21:22(مفيد إذا كنت تريد فضح خادم SSH قيد التشغيل داخل الحاوية).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

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

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

أعد توجيه جميع الطلبات على المنفذ 443إلى المنفذ 4430(مفيد إذا كنت ترغب في الربط بالمنفذ 443بدون root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 واجهة الشبكة.
  • -m geoip وحدة كتلة البلد (انظر الخطوة 5).

تحذير: لا تستخدم lo، سيتجاهل نظام التشغيل جميع الحزم المعاد توجيهها إلى واجهة الاسترجاع .

5. السماح أو منع البلدان بأكملها

تثبيت 5.1 xtables-addons

يمكنك تثبيت xtables-addonsالوحدة النمطية باستخدام طرق مختلفة ، لا تتردد في استخدام طريقة التثبيت التي تناسبك.

  • التثبيت باستخدام apt-get.

    sudo apt-get install xtables-addons-common
    
  • التثبيت باستخدام module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • التثبيت من المصدر.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

بناء قاعدة بيانات "البلدان".

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

إعادة تشغيل النظام الخاص بك.

sudo reboot

بعد xtables-addonsالتثبيت بنجاح ، وبعد إعادة التشغيل الأولى ، depmodلن يعمل تشغيل حظر البلد وإلا فلن يعمل بشكل صحيح (هذا مطلوب للمرة الأولى فقط).

sudo depmod 

أنشئ برنامجًا نصيًا /etc/cron.monthly/geoip-updaterلتحديث geoipقاعدة البيانات شهريًا.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

جعل /etc/cron.monthly/geoip-updaterالملف القابل للتنفيذ.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 أمثلة على القواعد

ملاحظة: إذا كنت تتلقى iptables: No chain/target/match by that nameخطأ عند محاولة تطبيق geoipقاعدة ، فمن المحتمل أنه xtables-addonsلم يتم تثبيت بشكل صحيح. جرب طريقة تثبيت أخرى.

حظر جميع الحزم الواردة من الصين وهونغ كونغ وروسيا وكوريا.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

السماح بالحزم الواردة على المنفذ 80من كل مكان باستثناء البلدان المذكورة أعلاه.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

السماح بالحزم الواردة على ens3الواجهة على المنفذ 22فقط من بيرو (لا تتردد في اختيار رمز البلد الذي تريد قبول الحزم منه ، على سبيل المثال ، USللولايات المتحدة).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

السماح بالحزم الواردة على المنفذ 443فقط من بيرو.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT


Leave a Comment

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

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

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد