Би хэсэг хугацаанд iptables-ийн талаар хоёр зүйлийн талаар бодож байсан: эдгээр хичээлийг хайж байгаа хүмүүсийн ихэнх нь анхан шатны мэдлэгтэй хүмүүс байдаг, хоёрдугаарт, ихэнх нь нэлээд энгийн бөгөөд аль хэдийн боловсруулсан зүйлийг хайж эхэлсэн байдаг.
Энэ жишээ нь вэб серверт зориулагдсан болно, гэхдээ та илүү олон дүрмийг хялбархан нэмж, хэрэгцээндээ нийцүүлэх боломжтой.
Таны ip-ийн хувьд "x" өөрчлөгдөж байгааг харахад
#!/bin/bash
# Бид iptables хүснэгтүүдийг цэвэрлэв -F iptables -X # PPPoE, PPP, ATM iptables -t mangle -F iptables -t mangle -X зэрэг NAT хүснэгтүүдийг -t nat -F iptables -t nat -X # mangle хүснэгтийг цэвэрлэнэ. # Бодлогууд Энэ нь эхлэгчдэд зориулсан хамгийн сайн арга гэж бодож байгаа бөгөөд # одоо ч гэсэн муу биш, гаралт (гаралт) -ыг тайлбарлаж өгье, учир нь тэдгээр нь гадагшаа холбогддог #, оролт нь бид бүх зүйлийг хаядаг, ямар ч сервер дамжуулах ёсгүй. iptables -P INPUT DROP iptables -P OUTPUT CRETPT 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 Iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh зөвхөн дотооддоо болон ip-ийн iptables-ийн хүрээнээс -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # хяналт, жишээлбэл, zabbix эсвэл Зарим бусад snmp үйлчилгээний iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, энэ нь танд хамаарна iptables -A INPUT -p icmp -s 192.168.xx / 24 - postgres бүхий i $ intranet -j ACCEPT #mysql бол порт 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 ХҮЛЭЭХ # 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 / XNUMX "# Default action - аливаа дүрэм ACTION =" DROP "# wan iptables-ээр дамжуулан миний серверийн ижил ip-тэй пакетууд таарах үед хийгдэх болно -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # LAN LAN хүрээ бүхий wan-д зориулсан пакетууд, хэрэв танд # тодорхой сүлжээ байгаа бол ийм байдлаар оруулав, гэхдээ энэ нь дараах # дүрмээр ашиггүй байна. iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Бүх SPOOF Сүлжээнүүдийг ip-ээр оруулахыг зөвшөөрдөггүй $ SPOOF_IPS нь iptables хийдэг -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION хийгдсэн
Үргэлж би таны сэтгэгдлийг хүлээж байна, энэ блог дээр байгаарай, баярлалаа
12 сэтгэгдэл, үлдээгээрэй
Энэ нь надад хуулбарласан ачаар жаахан илүү их зүйлийг сурч мэдэхэд тусална.
тусламж авах болсондоо баяртай байна
Би үнэхээр уучлаарай, гэхдээ надад хоёр асуулт байна (бас нэгийг нь бэлэг болгоно):
Apache-г ажиллуулж SSH-ээс бусад нь хаагдахаар та энэ тохиргоогоор ирэх үү?
# Бид ширээгээ цэвэрлэдэг
iptables -F
iptables -X
Бид NAT-ийг цэвэрлэдэг
iptables -t nat -F
iptables -t nat -X
iptables -A INPUT -p tcp –dport 80 -j ХҮЛЭЭН АВАХ
ssh нь зөвхөн дотооддоо болон энэ хүрээний ip-ээс
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j ХҮЛЭЭН АВАХ
Хоёрдахь асуулт: Энэ жишээнд SSH-д ашигладаг 7659 порт байна уу?
Гуравдугаарт, сүүлд нь: Энэ тохиргоог аль файлд хадгалах ёстой вэ?
Хичээлдээ маш их баярлалаа, та ийм шинэхэн хүн тул давуу талыг сайн ашиглаж чадахгүй байгаа нь ичмээр юм.
Энэ бол apache-ээс http-д хэрэгтэй дүрэм юм
iptables -A INPUT -p tcp –dport 80 -j ХҮЛЭЭН АВАХ
гэхдээ та мөн уналтын анхдагч бодлогыг зарлах хэрэгтэй (энэ нь скриптэд байгаа)
iptables -P INPUT DROP
iptables -P ГАРАЛТ ХҮЛЭЭН АВЧ БАЙНА
iptables -P FORWARD DROP
Хэрэв та алс хол байгаа бол энэ нь таныг хаях болно.
iptables -A INPUT -m state -state ТОГТВОРТОЙ, ХОЛБООТОЙ -j ХҮЛЭЭН АВНА
Хэрэв 7659 нь тухайн жишээн дээрх ssh-ийн порт бол анхдагчаар 22 байна, гэхдээ би танд "сайн мэдэхгүй" портыг өөрчлөхийг зөвлөж байна.
Эрэгтэй хүн, би мэдэхгүй байна, таны хүссэнээр ... firewall.sh, та үүнийг rc.local (sh firewall.sh) дотор байрлуулснаар автоматаар ажиллах болно, энэ нь танд ямар үйлдлийн систем байгаагаас хамаарна. та дүрмийг шууд байрлуулж болно.
Хөөе, таны скрипт маш сайн шүү дээ, дүн шинжилгээ хийж байна.… Би өөрийн хэрэглэгчидээс тодорхой вэбсайтад тавьсан бүх хүсэлтийг хэрхэн үгүйсгэж болохыг та мэдэх үү?…. гэхдээ энэ вэбсайтад маш олон серверүүд байдаг.
Би бусад сонголтуудыг санал болгож байна.
1) Та dns дээрээ хуурамч бүс үүсгэж болно ...
2) Та прокси-г acl-тай хамт байрлуулж болно
нүглийн хориг
Iptables-ийн хувьд та үүнийг дуртай байж болно ... энэ нь үргэлж хамгийн сайн сонголт биш (илүү олон арга байдаг)
iptables -A INPUT -s blog.fromlinux.ne -j DROP
iptables -A OUTPUT -d blog.fromlinux.net -j DROP
Хэрэв энэ нь ажилласан бол надад хэлээрэй
Хариултанд баярлалаа, бүх зүйл арилав. Би хувийн боомтууд 7659-ээс эхэлдэг тул зарим үйлчилгээнд саад учруулж болзошгүй тул 49152-ийг ашиглахад гайхсан тул би боомтын талаар асууж байсан.
Дахин хэлэхэд бүх зүйлд баярлалаа, сайхан байна!
Сайн байцгаана уу.
BrodyDalle, би тантай яаж холбогдох боломжтой вэ? Таны зохиол маш сонирхолтой байна.
soulofmarionet_1@hotmail.com
Өмнөх сүүлчийн мөр "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" гэсэн мөр нь өөрийн машиныг хууран мэхлэхээс урьдчилан сэргийлэх үүднээс байна уу? Эсвэл тэр хордсон эх үүсвэртэй хамт зарим нэг хордсон пакет орж гарч болох уу, тиймээс дүрмийг мөн OUTPUT-т оруулсан байгаа юу?
Тодруулга өгсөнд маш их баярлалаа !!!
Энэ бол миний өөрийн iptables скрипт, бүрэн гүйцэд хийгдсэн:
# франц.хуудас.airoso
# doc.iptables.airoso: iptables for legacy and nft
#
# галт ханын портууд
##############################
#! / bin / bash
#
# дэлгэцийг цэвэрлэ
################################### /# эхэнд /f-iptables/default.cfg |||||
Тодорхой байна
# хоосон мөр үлдээнэ үү
Echo
экспорт тийм = »» үгүй = »цуурайтах»
# хандалтыг зөвшөөрөхийн тулд өөрчлөх боломжтой хувьсагчууд
############################### хувьсагчууд
export hayexcepciones = »$ no»
# үл хамаарах зүйлүүд байна: $ yes онцгой хостуудыг зөвшөөрөх ба $ no-ийг идэвхгүй болгох
экспортын хадлангийн ажил = "$ no"
# хадлан: Гуравдагч этгээдийн пинг хийхийг зөвшөөрөхийн тулд $ Тийм, үгүйсгэхгүй
экспортлох haylogserver = »$ no»
# haylogeosserver: $ yes tcp-г нэвтрүүлэх боломжтой байх
######
####################### "," эсвэл ":" мужуудаар нэмж өөрчлөх хувьсагчууд.
экспортын үл хамаарах зүйлс = »baldras.wesnoth.org»
# үл хамаарах зүйл нь ганц эсвэл олон хостыг галт хананаас авахыг зөвшөөрдөг эсвэл үнэ цэнэгүй байдаг
export logserver = хаях, ipp, dict, ssh
Пакет орж ирэхэд бүртгэлд ордог # tcp серверийн портууд
экспортын redserver = 0/0
# redserver: серверийн портуудын сүлжээ нь илүү тохиромжтой локал сүлжээ эсвэл хэд хэдэн ips
экспортын үйлчлүүлэгч улаан = 0/0
#clientnet: клиент портуудын сүлжээ
export servidortcp = хаях, ipp, dict, 6771
# servidortcp: заасан tcp серверийн портууд
экспорт serverudp = хаях
#udpserver: заасан udp серверийн портууд
export clientudp = домэйн, bootpc, bootps, ntp, 20000: 45000
#udp клиент: заасан udp клиент портууд
export clienttcp = домэйн, http, https, ipp, git, dict, 14999: 15002
# tcp клиент: заасан tcp клиент портууд
#####################################################################
################################### өөрчлөх хувьсагчдын төгсгөл
экспортлох галт хана = $ 1 хувьсагч = $ 2
хэрэв ["$ variables" = "$ NULL"]; дараа нь эх үүсвэр /etc/f-iptables/default.cfg;
else source / etc / f-iptables / $ 2; fi
################################# эсвэл хувьсагчуудыг .cfg файлаар дарж бичих болно
##################################################### ##############################################
экспортын галт хана = $ 1 экспортын хувьсагч = $ 2
######################################################################
хэрэв ["$ firewall" = "салгагдсан"]; дараа нь цуурай ГАЛЫН ХАНАГ ХЭЛСЭН;
export activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "client"]; дараа нь FIREWALL CLIENT гэсэн цуурайтай болно;
export activateserver = »$ no» activateclient = »» нойтон = »$ no»;
elif ["$ firewall" = "server"]; дараа нь FIREWALL SERVER-ийг цуурайтуулна;
export activateserver = »» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "клиент ба сервер"]; дараа нь цуурайтах ГАЛ ХАНААНЫ ҮЙЛЧИЛГЭЭ, СЕРВЕР;
экспорт идэвхжүүлэх серверийг экспортлох = »»; export activateclient = »»; экспортын нойтон = »$ no»;
elif ["$ firewall" = "зөвшөөрөгдөх"]; дараа нь цуурайтах PERMISSIVE FIREWALL;
export activateserver = »$ no» activateclient = »$ no» нойтон = »»;
бас
$ check sudo echo iptables-legacy:
$ check sudo iptables-legacy -v -L INPUT
$ check sudo iptables-legacy -v -L OUTPUT
$ check sudo echo iptables-nft:
$ check sudo iptables-nft -v -L INPUT
$ check sudo iptables-nft -v -L OUTPUT
цуурай _____ параметрүүд____ $ 0 $ 1 $ 2
echo "параметргүйгээр дамжуулах нь iptables жагсаалтад оруулах явдал юм."
echo "Эхний параметр (iptables-ийг идэвхжүүлэх): салгагдсан эсвэл клиент эсвэл сервер эсвэл клиент ба сервер эсвэл зөвшөөрөгдсөн."
echo "Хоёрдахь параметр: (заавал биш): анхдагч .cfg файл нь /etc/f-iptables/default.cfg-ийг сонгоно"
echo "Хувьсах тохиргоо:" $ (ls / etc / f-iptables /)
гарах 0; fi
##################
Echo
echo $ 0 холболтыг салгасан эсвэл клиент эсвэл сервер эсвэл клиент ба сервер эсвэл зөвшөөрөгдөх буюу хувьсагчдыг хаях эсвэл iptables жагсаахад параметр ашиглахгүйгээр шиддэг.
echo $ 0 файл дотор засах боломжтой хувьсагчуудыг агуулсан болно.
################################### дээрх хувьсагчууд идэвхжсэн
####################################
iptables хувьсагчуудыг тохируулах
цуурай идэвхжүүлсэн хувьсагчууд
Echo
############################## iptables дүрмүүд
echo Setting iptables-legacy
sudo / usr / sbin / iptables-legacy -t шүүлтүүр -F
sudo / usr / sbin / iptables-legacy -t nat -F
sudo / usr / sbin / iptables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -t шүүлтүүр -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 multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A INPUT -s $ exceptions -j ACCEPT> / dev / null
$ sudo server / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ server sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –sports $ clientudp -m state -state -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m state-state set -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
$ hayexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ exceptions -j ACCEPT> / dev / null
$ activate sudo server / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null серверийг идэвхжүүлэх.
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A OUTPUT -p icmp –icmp төрлийн 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 идэвхжсэн
Echo
echo Setting iptables-nft
sudo / usr / sbin / iptables-nft -t шүүлтүүр -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle -F
sudo / usr / sbin / ip6tables-nft -t шүүлтүүр -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 OUTPUT -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 multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ exceptions -j ACCEPT> / dev / null
$ sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null серверийг идэвхжүүлэх.
$ server sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sports $ clientudp -m state -state -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state-state set -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 $ exceptions -j ACCEPT> / dev / null
$ sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null серверийг идэвхжүүлэх.
$ server sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –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 OUTPUT -j DROP
sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
echo iptables-nft идэвхжсэн
Echo
$ нойтон sudo / usr / sbin / iptables-legacy -F> / dev / null
$ нойтон sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ нойтон sudo / usr / sbin / iptables-legacy -A INPUT -m төлөв-төлөв байгуулагдсан -j ACCEPT> / dev / null
$ нойтон sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ нойтон sudo / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
$ нойтон sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ нойтон sudo / usr / sbin / iptables-nft -F> / dev / null
$ нойтон sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ нойтон sudo / usr / sbin / iptables-nft -A INPUT -m төлөв-төлөв байгуулагдсан -j ACCEPT> / dev / null
$ нойтон sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ нойтон sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
$ нойтон sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
#############################
та $ 0 $ 1 $ 2 хаясан цуурай
# скриптээс гарав
гарах 0
Хэрэв энэ галт хана үүнийг миний гарцанд ашиглаж, LAN дотор далайн амьтан байвал би яаж дүрмийг тохируулах вэ ???