كنت أفكر في شيئين حول iptables لفترة من الوقت: معظم أولئك الذين يبحثون عن هذه الدروس هم مبتدئون وثانيًا ، كثير منهم يبحثون بالفعل عن شيء بسيط إلى حد ما ومفصل بالفعل.
هذا المثال لخادم الويب، ولكن يمكنك بسهولة إضافة المزيد من القواعد وتكييفها مع احتياجاتك.
عندما ترى تغيير "x" لملكية الفكرية الخاصة بك
#!/bin/bash
# نقوم بتنظيف جداول iptables -F iptables -X # نقوم بتنظيف NAT iptables -t nat -F iptables -t nat -X # mangle table لأشياء مثل PPPoE و PPP و ATM iptables -t mangle -F iptables -t mangle -X # Policies أعتقد أن هذه هي أفضل طريقة للمبتدئين و # لا تزال ليست سيئة ، سأشرح الإخراج (الإخراج) جميعًا لأنها اتصالات صادرة # ، ومدخلات نتجاهل كل شيء ، ولا يجب إعادة توجيه أي خادم. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Keep state. يتم ترك كل شيء متصل بالفعل (تم إنشاؤه) على النحو التالي: iptables -A INPUT -m state - State ESTABLISHED، RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http، https ، لا نحدد الواجهة لأن # نريدها أن تكون كلها iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh داخليًا فقط ومن هذا النطاق لـ iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # المراقبة على سبيل المثال إذا كان لديهم zabbix أو غيره snmp service iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp ، ping جيدًا الأمر متروك لك iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql with postgres is port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh إذا كنت تريد إرسال بعض البريد #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - عنوان wan ip الحقيقي لخادمك LAN_RANGE = "192.168.xx / 21" # نطاق LAN من شبكتك أو شبكة vlan # Ip التي يجب ألا تدخل الشبكة الخارجية أبدًا ،هو استخدام القليل من # منطق إذا كان لدينا واجهة WAN بحتة ، فلا يجب أبدًا إدخال حركة مرور من نوع LAN من خلال تلك الواجهة SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 / 16 "# الإجراء الافتراضي - يتم تنفيذه عندما تتطابق أي قاعدة مع ACTION =" DROP "# Packets بنفس عنوان IP لخادمي من خلال wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Packets with the LAN Range for the wan ، أضعها على هذا النحو في حال كان لديك # أي شبكة معينة ، لكن هذا زائد عن الحاجة مع قاعدة # التالية داخل الحلقة " لـ "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## لا تسمح شبكة WAN لجميع شبكات SPOOF للملكية الفكرية في $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ تم تنفيذ الإجراء
كما هو الحال دائمًا ، أنتظر تعليقاتكم ، ترقبوا هذه المدونة ، شكرًا لك
يساعدني على مواصلة التعلم أكثر بقليل من نسخ الشكر.
على الرحب والسعة ، يسعدني تقديم المساعدة
أنا آسف حقًا ، لكن لدي سؤالان (وآخر كهدية 😉):
هل ستصل بهذا التكوين لتشغيل Apache وإغلاق الباقي باستثناء SSH؟
# نحن ننظف الطاولات
يبتابليس-F
يبتابليس-X
نقوم بتنظيف NAT
iptables - نات - F.
iptables -t nat -x.x
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
ssh داخليًا فقط ومن هذا النطاق من IP
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet -dport 7659 -j ACCEPT
السؤال الثاني: هل 7659 هو المنفذ المستخدم في SSH في هذا المثال؟
والثالث والأخير: في أي ملف يجب حفظ هذا التكوين؟
شكرًا جزيلاً لك على البرنامج التعليمي ، فمن العار أنك مبتدئ ولا يمكنك الاستفادة منه جيدًا.
هذه هي القاعدة التي تحتاجها لـ http من اباتشي
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
ولكنك تحتاج أيضًا إلى إعلان إسقاط السياسات الافتراضية (في النص البرمجي)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P إسقاط للأمام
وهذا لأنك إذا كنت بعيدًا ، فسوف يرميك بعيدًا.
iptables -A INPUT -m state -state ESTABLISHED، RELATED -J ACCEPT
إذا كان 7659 هو منفذ ssh هذا في المثال ، فهو 22 افتراضيًا ، على الرغم من أنني أوصيك بالتغيير إلى منفذ "غير معروف جيدًا"
رجل لا أعرف ، كما تريد ... firewall.sh وقمت بوضعه في rc.local (sh firewall.sh) بحيث يتم تشغيله تلقائيًا ، ويعتمد ذلك على نظام التشغيل لديك ، وهناك ملفات يمكنك من خلالها وضع القواعد مباشرةً.
مرحبًا ، البرنامج النصي الخاص بك جيد جدًا ، يتم تحليله…. هل تعرف كيف يمكنني رفض جميع الطلبات من المستخدمين إلى موقع ويب معين؟…. لكن هذا الموقع يحتوي على الكثير من الخوادم….
أوصي بخيارات أخرى:
1) يمكنك إنشاء منطقة وهمية في نظام أسماء النطاقات الخاص بك ...
2) يمكنك وضع وكيل مع ACL
خطيئة الحظر
بالنسبة إلى iptables ، يمكنك الإعجاب بهذا ... ليس دائمًا الخيار الأفضل (هناك طرق أخرى)
مدونة iptables -A INPUT -s.desdelinux.ne -j قطرة
مدونة iptables -A OUTPUT -d.desdelinux.net -j دروب
قل لي إذا كان يعمل
شكرا على الإجابة ، كل شيء واضح. كنت أسأل عن المنفذ لأنني فوجئت باستخدام 7659 ، حيث تبدأ المنافذ الخاصة في 49152 ، ويمكن أن تتداخل مع بعض الخدمات أو شيء من هذا القبيل.
مرة أخرى ، شكرًا على كل شيء ، هذا لطيف!
تحية.
بروديال كيف يمكنني التواصل معك؟ نصك مثير جدا للاهتمام.
Soulofmarionet_1@hotmail.com
ما قبل السطر الأخير "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" هو منع جهازك الخاص من الانتحال؟ أو هل من الممكن أن تدخل بعض العبوات المسمومة ويمكن أن تغادر مع هذا المصدر المسموم ولهذا السبب تم تضمين القاعدة أيضًا في الإخراج؟
شكرا جزيلا للتوضيح!!!
هذا هو سكربت iptables الخاص بي ، وهو مكتمل جدًا:
# franes.iptables.airy
# doc.iptables.airoso: iptables للإرث و nft
#
# منافذ جدار الحماية
###########################
#! / بن / باش
#
# امسح الشاشة
############################### بداية /etc/f-iptables/default.cfg |||||
واضح
# اترك سطرًا فارغًا
صدى
تصدير نعم = »» لا = »إيقاف الصدى»
# المتغيرات التي يمكنك تغييرها للسماح بالوصول
###################### يمكن تعديل المتغيرات باستخدام $ yes أو $ no
تصدير hayexcepciones = »لا دولار»
# هناك استثناءات: $ yes للسماح بمضيفين استثنائيين و $ no للتعطيل
تصدير hayping = »$ no»
# hayping: $ yes للسماح بأصوات طرف ثالث و $ no للرفض
تصدير haylogserver = »$ no»
# haylogeosserver: $ نعم لتتمكن من تسجيل tcp $ no حتى لا تتمكن من تسجيل برنامج tcp
######
###################### تعديل المتغيرات بإضافة "،" أو بنطاقات ":"
استثناءات التصدير = »baldras.wesnoth.org»
# استثناءات تسمح لمضيف واحد أو عدة مضيفين من جدار الحماية أو بدون قيمة
تصدير خادم السجل = تجاهل ، ipp ، ديكت ، ssh
# منافذ خادم tcp التي يتم تسجيلها عند دخول الحزم
تصدير redserver = 0/0
# redserver: الشبكة لمنافذ الخادم أفضل شبكة محلية أو عدة IPS
تصدير العميل الأحمر = 0/0
#clientnet: أفضل شبكة لمنافذ العميل على جميع الشبكات
تصدير servidortcp = تجاهل ، ipp ، dict ، 6771
# servidortcp: منافذ خادم TCP المحدد
خادم التصديرudp = تجاهل
#udpserver: منافذ خادم udp المحددة
تصدير clientudp = المجال ، bootpc ، bootps ، ntp ، 20000: 45000
#udp client: منافذ عميل udp المحددة
تصدير clienttcp = المجال ، http ، https ، ipp ، git ، dt ، 14999: 15002
# tcp client: منافذ عميل tcp المحددة
############################## نهاية /etc/f-iptables/default.cfg |||||
################################ نهاية المتغيرات المراد تعديلها
جدار حماية التصدير = متغيرات $ 1 = $ 2
إذا ["$ variables" = "$ NULL"] ؛ ثم المصدر /etc/f-iptables/default.cfg ؛
else source / etc / f-iptables / $ 2 ؛ فاي
################################ أو ستكتب فوق المتغيرات بملف .cfg
################################################## ###########################################
جدار حماية التصدير = متغيرات تصدير $ 1 = $ 2
########################################## متغيرات النظام التلقائية
إذا ["$ firewall" = "غير متصل"] ؛ ثم صدى الجدار الناري مفصول ؛
تصدير activateserver = »$ no» activateclient = »$ no» wet = »$ no»؛
elif ["$ firewall" = "client"] ؛ ثم صدى FIREWALL CLIENT ؛
تصدير Activateserver = »$ no» activateclient = »» رطب = »$ no»؛
elif ["$ firewall" = "الخادم"] ؛ ثم صدى FIREWALL SERVER ؛
تصدير activateserver = »» activateclient = »$ no» رطب = »$ no»؛
elif ["$ firewall" = "العميل والخادم"]؛ ثم صدى FIREWALL CLIENT AND SERVER ؛
تصدير تنشيط الخادم = »» ؛ تصدير activateclient = »» ؛ تصدير رطب = »لا دولار» ؛
elif ["$ firewall" = "permissive"]؛ ثم صدى الجدار الناري الدائم ؛
تصدير activateserver = »$ no» activateclient = »$ no» wet = »»؛
آخر
check sudo echo iptables-legacy:
تحقق من sudo iptables-legacy -v -L INPUT
check sudo iptables-legacy -v -L OUTPUT
check sudo echo iptables-nft:
تحقق من sudo iptables-nft -v -L INPUT
تحقق من sudo iptables-nft -v -L OUTPUT
صدى _____ معلمات __ $ 0 $ 1 $ 2
صدى "cast without parameters is to list iptables."
صدى "المعلمة الأولى (تمكين iptables): مفصول أو عميل أو خادم أو عميل وخادم أو مسموح به."
صدى "المعامل الثاني: (اختياري): يختار الملف default.cfg /etc/f-iptables/default.cfg"
صدى "الإعدادات المتغيرة:" $ (ls / etc / f-iptables /)
خروج 0 ؛ فاي
##################
صدى
echo يلقي $ 0 غير متصل أو عميل أو خادم أو عميل وخادم أو متسامح أو متغيرات أو بدون استخدام معلمة لسرد iptables.
echo يحتوي الملف $ 0 على بعض المتغيرات القابلة للتحرير بالداخل.
################################# تم تفعيل المتغيرات المذكورة أعلاه
###############################
صدى ضبط متغيرات iptables
المتغيرات المنشطة بالصدى
صدى
############################# قواعد iptables
echo إعداد iptables-legacy
sudo / usr / sbin / iptables-legacy -t filter -F
sudo / usr / sbin / iptables-legacy -t nat -F
sudo / usr / sbin / iptables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -t filter -F
sudo / usr / sbin / ip6tables-legacy -t nat -F
sudo / usr / sbin / ip6tables-legacy -t mangle-F.
sudo / usr / sbin / ip6tables-legacy -A INPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A FORWARD -j DROP
sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ haylogserver sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multort –dports $ logserver -j LOG> / dev / null
استثناءات $ haye sudo / usr / sbin / iptables-legacy -A INPUT -s $ استثناءات -j ACCEPT> / dev / null
تنشيط خادم sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multort –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
تنشيط الخادم sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multort –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multort –sports $ clientudp -m state-state-مؤسس -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multort –sports $ clienttcp -m state-state-مؤسس -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
استثناءات $ hay sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ استثناءات -j ACCEPT> / dev / null
تنشيط خادم sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multort –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
تنشيط الخادم sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multort –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multort –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multort –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP
تمكين echo iptables-legacy
صدى
ضبط الصدى iptables-nft
sudo / usr / sbin / iptables-nft -t filter -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle-F.
sudo / usr / sbin / ip6tables-nft -t filter-F.
sudo / usr / sbin / ip6tables-nft -t nat-F.
sudo / usr / sbin / ip6tables-nft -t mangle-F.
sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
sudo / usr / sbin / ip6tables-nft -A الإخراج -j DROP
sudo / usr / sbin / ip6tables-nft -A FORWARD -j DROP
sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multort –dports $ logserver -j LOG> / dev / null
استثناءات $ haye sudo / usr / sbin / iptables-nft -A INPUT -s $ استثناءات -j ACCEPT> / dev / null
تنشيط الخادم sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multort –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
تنشيط الخادم sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multort –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multort –sports $ clientudp -m state-state-Based -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multort –sports $ clienttcp -m state-state-selected -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ هناك استثناءات sudo / usr / sbin / iptables-nft -A OUTPUT -d $ استثناءات -j ACCEPT> / dev / null
تنشيط الخادم sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multort –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
تنشيط الخادم sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multort –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multort –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multort –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A الإخراج -j DROP
sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
تمكين صدى iptables-nft
صدى
$ wet sudo / usr / sbin / iptables-legacy -F> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -m state- الحالة التي تم إنشاؤها -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -F> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -m state- الحالة التي تم إنشاؤها -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
###########################
صدى لقد رميت $ 0 $ 1 $ 2
# يخرج من البرنامج النصي
خروج 0
كيف يمكنني وضع قاعدة إذا استخدمها جدار الحماية هذا لبوابي وكان لديه حبار داخل الشبكة المحلية ؟؟؟