Kam kaluar ca kohë duke menduar për dy gjëra në lidhje me iptables: shumica e atyre që janë duke kërkuar për këto mësime janë fillestarë dhe së dyti, shumë prej tyre tashmë janë duke kërkuar diçka mjaft të thjeshtë dhe të përpunuar tashmë.
Ky shembull është për një server në internet, por lehtë mund të shtoni më shumë rregulla dhe ta përshtatni atë me nevojat tuaja.
Kur shihni "x" të ndryshojë për ip-et tuaja
#!/bin/bash
# Ne pastrojmë tabelat e iptables -F iptables -X # Ne pastrojmë iptables NAT -t nat -F iptables -t nat -X # tavolinë mangle për gjëra të tilla si PPPoE, PPP dhe ATM iptables -t manipulim -F iptables -t manipulim -X # Politikat Unë mendoj se kjo është mënyra më e mirë për fillestarët dhe # ende nuk është e keqe, unë do të shpjegoj prodhimin (daljen) të gjitha sepse ato janë lidhje dalëse #, input ne hedhim gjithçka, dhe asnjë server nuk duhet të përcjellë. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P P FORRPARA RRONI #Intranet LAN intranet = eth0 # Ekstranet ato ekstranet = eth1 # Mbaj gjendjen. Gjithçka që është e lidhur (e vendosur) tashmë është lënë kështu: iptables -A INPUT -m shtet - shteti I THEMELUAR, I LIDHUR -j PRANIMI # Pajisja me lak. iptables -A INPUT -i lo -j PRANO # http, https, ne nuk e specifikojmë ndërfaqen sepse # duam që të jetë për të gjitha iptables -A INPUT -p tcp --dport 80 -j PRANO iptables -A INPUT -p tcp - dport 443 -j PRANO # ssh vetëm në brendësi dhe nga kjo gamë e iptables të ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet - dport 7659 -j PRANO # monitorimin për shembull nëse ata kanë zabbix ose disa iptables të tjera të shërbimit snmp -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping edhe varet nga ju iptabels -A INPUT -p icmp -s 192.168. xx / 24 - i $ intranet -j Pranoj #mysql me postgres është porti 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j PRANO #sendmail bueeeh nëse dëshiron të dërgosh ca postë #iptables -A OUTPUT -p tcp --dport 25 -j PRANOJ # Anti-FSHUFTIM 09/07/2014 # SERVER_IP = "190.xxx" # IP i serverit - ip i vërtetë i serverit tuaj LAN_RANGE = "192.168.xx / 21 "# Gama LAN e rrjetit tuaj ose vlan # Ip tuaj që nuk duhet të hyjnë kurrë në ekstranet,është të përdorim pak nga # logjika nëse kemi një ndërfaqe thjesht WAN ajo kurrë nuk duhet të futë trafik të tipit # LAN përmes asaj ndërfaqeje 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 "# Veprimi i paracaktuar - që duhet të kryhet kur ndonjë rregull përputhet ACTION =" DROP "# Pako me të njëjtën ip të serverit tim përmes iptables wan -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Paketa me Gama LAN për pakësimin, unë e vë atë kështu në rast se keni # ndonjë rrjet të veçantë, por ky është i tepërt me rregullin e mëposhtëm # lak "për" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Të gjitha Rrjetet SPOOF nuk lejohen nga wan për ip in $ SPOOF_IPS bëjnë iptable -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION bërë
Si gjithmonë i pres komentet tuaja, qëndroni të lidhur në këtë blog, Faleminderit
Më ndihmon të vazhdoj të mësoj pak më shumë falënderime të kopjuara.
je i mirepritur, i gëzuar që të ndihmoj
Më vjen vërtet keq, por kam dy pyetje (dhe një si dhuratë 😉):
A do të arrini me këtë konfigurim që të keni Apache të ekzekutuar dhe të mbyllni pjesën tjetër përveç SSH?
# Ne pastrojmë tavolina
iptabilet -F
iptabilet -X
Ne pastrojmë NAT
iptables -t nat -F
iptabilet -t nat -X
iptables -A INPUT -p tcp –dport 80 -j PRANIMI
ssh vetëm brenda dhe nga kjo gamë e IP-ve
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j PRANIMI
Pyetja e dytë: A është 7659 porti i përdorur në SSH në këtë shembull?
Dhe e treta dhe e fundit: në cilën skedar duhet të ruhet kjo konfigurim?
Faleminderit shumë për tutorialin, është turp që ju jeni një fillestar kaq i ri dhe nuk mund ta përfitoni mirë atë.
ky është rregulli që ju nevojitet për http nga apache
iptables -A INPUT -p tcp –dport 80 -j PRANIMI
por gjithashtu duhet të deklaroni politikat e parazgjedhura të rënies (është në skenar)
iptables -P HIKJA E HYRJES
iptabelët -Pranimi i daljes
iptables -P P FORRPARA PRORPARA
dhe kjo sepse nëse je i largët, do të të flakë larg.
iptables -NI INPUT -m shtet-shtet i themeluar, i lidhur -j PRANIMI
nëse 7659 është porti i asaj ssh në shembull, si parazgjedhje është 22, megjithëse ju rekomandoj të ndryshoni në një port "jo të njohur"
Njeri, nuk e di, ashtu siç dëshiron ... firewall.sh dhe e vendos në rc.local (sh firewall.sh) në mënyrë që të funksionojë automatikisht, kjo varet nga sistemi operativ që ke, ka skedarë ku mund të vendosësh rregullat direkt.
Eii shumë mirë skenari juaj, duke e analizuar atë .... A e dini se si mund t'i refuzoj të gjitha kërkesat e përdoruesve të mi në një faqe në internet të veçantë?. por kjo faqe në internet ka shumë servera.
Unë rekomandoj mundësi të tjera:
1) Ju mund të krijoni një zonë false në dns tuaj ...
2) Ju mund të vendosni një proxy me acl
Megjithatë
Për iptables ju mund ta pëlqeni këtë ... nuk është gjithmonë opsioni më i mirë (ka më shumë mënyra)
iptables -A INPUT -s blog.desdelinux.ne -j DROP
iptables -A OUTPUT -d blog.desdelinux.net -j DROP
Më thuaj nëse funksionoi
Faleminderit për përgjigjen, gjithçka u pastrua. Po pyesja për portin sepse isha i befasuar kur përdori 7659, pasi që portet private fillojnë në 49152, dhe kjo mund të ndërhyjë në ndonjë shërbim apo diçka tjetër.
Përsëri, faleminderit për gjithçka, është bukur!
Përshëndetje.
BrodyDalle, si mund të kontaktoj me ty? Shumë interesante skenari juaj.
soulofmarionet_1@hotmail.com
Rreshti para fundit "iptables-A OUTPUT -o $ extranet -s $ ip -j $ ACTION" është të parandaloni mashtrimin e makinës suaj? Apo është e mundur që disa pako të helmuar të hyjnë dhe të mund të dalin me atë burim të helmuar dhe kjo është arsyeja pse rregulli përfshihet edhe me OUTPUT?
Faleminderit shumë për sqarimin !!!
ky është skenari im i iptables, është shumë i plotë:
# franes.iptables.ajros
# doc.iptables.airoso: iptables për trashëgiminë dhe për nft
#
# portet e firewall-it
###############################
#! / bin / bash
#
# pastroni ekranin
################################
qartë
# lini një vijë të zbrazët
humbas
eksport po = »» jo = »jehonë»
# variablat që mund të ndryshoni për të lejuar hyrjen
######################### variablat për të modifikuar me $ po ose $ jo
eksport hayexcepciones = »$ jo»
# ka përjashtime: $ po për të lejuar mbajtës të jashtëzakonshëm dhe $ jo për të çaktivizuar
eksport hayping = »$ jo»
# hayping: $ po për të lejuar mospagimet e palëve të treta dhe $ jo për të mohuar
eksport haylogserver = »$ jo»
# haylogeosserver: $ po për të qenë në gjendje të regjistrojmë tcp $ jo për të mos qenë në gjendje të regjistrohemi tcp
######
################################################ varia për të ndryshuar duke shtuar "," ose me vargje ":"
përjashtimet e eksportit = »baldras.wesnoth.org»
# përjashtime lejojnë hostë të vetëm ose të shumëfishtë nga firewall ose pa vlerë
eksportues logserver = hidhni, ipp, diktoni, ssh
# Portet e serverit tcp që regjistrohen kur hyjnë paketat
eksportues i eksportit të ri = 0/0
# redserver: rrjeti për portet e serverit preferon rrjetin lokal ose disa ip
klienti i eksportit i kuq = 0/0
#clientnet: rrjeti për portet e klientit preferohet nga të gjitha rrjetet
eksport servidortcp = hidhni, ipp, diktoni, 6771
# servidortcp: portet e specifikuara të serverit tcp
eksport serverudp = hidhni
#udpserver: portet e specifikuara të serverit udp
eksport klientudp = domen, bootpc, bootps, ntp, 20000: 45000
#udp klient: portet e specifikuara të klientit udp
eksport klienttcp = domen, http, https, ipp, git, dikt, 14999: 15002
# klient tcp: portet e specifikuara të klientit tcp
############################################################ ########################
################################## fund të ndryshoreve për të modifikuar
firewall eksport = $ 1 variabla = $ 2
nëse ["$ variablat" = "$ NULL"]; pastaj burimi /etc/f-iptables/default.cfg;
tjetër burim / etc / f-iptables / $ 2; fi
############################################################DDDD -
############################################################################ ##############################################
firewall eksport = $ 1 variabla eksporti = $ 2
#################################################
nëse ["$ firewall" = "i shkëputur"]; pastaj bëj jehonë FIREWALL NDESHKENUAR;
eksport aktivizues i serverit = »$ jo» aktivizues klient = »$ jo» i lagësht = »$ jo»;
elif ["$ firewall" = "klienti"]; pastaj jehonë KLIENTI FIREWALL;
eksport aktivizues i serverit = »$ jo» aktivizues klient = »» i lagësht = »$ jo»;
elif ["$ firewall" = "server"]; pastaj jehonë SERVERI I ZJARRIT;
eksport aktivizues i serverit = »» aktivizues i klientit = »$ jo» lagur = »$ jo»;
elif ["$ firewall" = "klienti dhe serveri"]; pastaj jehonë KLIENTI DHE SERVERI I FIREWALLIT;
eksport aktivizo server = »»; eksport aktiv aktiv klient = "»; eksport i lagësht = "$ jo";
elif ["$ firewall" = "lejues"]; pastaj bëj jehonë FIREWALL LEJUES;
eksport aktivizues i serverit = »$ jo» aktivizues klient = »$ jo» i lagësht = »»;
tjetër
$ kontroll sudo echo iptables-trashëgimi:
$ kontroll sudo iptables-legacy -v -L INPUT
$ kontroll sudo iptables-trashëgimi -v -L OUTPUT
$ kontroll sudo echo iptables-nft:
$ kontroll sudo iptables-nft -v -L INPUT
$ kontrolloni sudo iptables-nft -v -L NDARJE
jehona _____ parametra____ $ 0 $ 1 $ 2
jehona "hedhur pa parametra është të renditësh iptables".
echo "Parametri i parë (aktivizo iptables): i shkëputur ose klienti ose serveri ose klienti dhe serveri ose lejues."
echo "Parametri i dytë: (opsional): skedari i paracaktuar .cfg zgjedh /etc/f-iptables/default.cfg"
echo "Cilësimet e ndryshueshme:" $ (ls / etc / f-iptables /)
dalja 0; fi
##################
humbas
echo Hedh $ 0 të shkyçur ose klient ose server, klient ose server dhe server lejues ose variabla ose pa përdorur parametrin për të listuar iptables.
echo Skedari $ 0 përmban disa variabla të redaktueshëm brenda.
####################################
####################################
echo vendosjen e ndryshoreve iptables
echo ndryshojnë aktivizuar
humbas
############################## rregullat e iptables
echo Vendosja e iptables-trashëgimisë
sudo / usr / sbin / iptables-legacy -t filtri -F
sudo / usr / sbin / iptables-legacy -t nat -F
sudo / usr / sbin / iptables-legacy -t mangle -F
filtri sudo / usr / sbin / ip6tables-legacy -t -F
sudo / usr / sbin / ip6tables-trashëgimi -t nat -F
sudo / usr / sbin / ip6tables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-trashëgimi -A INPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-trashëgimi -A PWRPARA -j RRONI
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 –dporton $ logserver -j LOG> / dev / null
$ hayeexcepts sudo / usr / sbin / iptables-legacy -A INPUT -s $ përjashtime -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport -dport $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dporton $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –sport $ $ klientudp -m shtet - shtet i vendosur -s $ klientnet -d $ klientnet -j PRANIM>> dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sporte $ klienttcp -m shtet - shtet i vendosur - s $ klientnet -d $ klientnet -j PRANIMI> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp-type-icmp-përgjigje -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
$ hayeexcepts sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ përjashtime -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport -sport $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport - sporte $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –dporton $ klientudp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dporton $ klienttcp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A OUTPUT -p icmp-type-ipmp-kërkesë -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / iptables-trashëgimi -A PWRPARA -j RRONI
jehonë iptables-trashëgimi e aktivizuar
humbas
echo Vendosja e iptables-nft
filtri sudo / usr / sbin / iptables-nft -t -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t mangle -F
filtri 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 PWRPARA -j RRONI
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 –dporton $ logserver -j LOG> / dev / null
$ hayeexcepts sudo / usr / sbin / iptables-nft -A INPUT -s $ përjashtime -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dporton $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dporton $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sport $ $ klientudp -m shtet - shtet i vendosur - s $ klientnet -d $ klient
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sporte $ klienttcp -m shtet - shtet i vendosur - s $ klientnet -d $ klient
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp-echo-përgjigje e tipit ipmp -j PRANIM> / 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 PRANIMI> / dev / null
$ hayeexcepts sudo / usr / sbin / iptables-nft -A OUTPUT -d $ përjashtime -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport - sporte $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ aktivizo serverin sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport - sporte $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dporton $ klientudp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –dporton $ klienttcp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A OUTPUT -p icmp-tip i ik-kërkesë-j ACCEPT -j Pranoj> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
sudo / usr / sbin / iptables-nft -A PWRPARA -j RRONI
jehonë iptables-nft të aktivizuara
humbas
$ sudo i lagësht / usr / sbin / iptables-trashëgimi -F> / dev / null
$ sudo i lagësht / usr / sbin / iptables-trashëgimi -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j PRANIMI> / dev / null
$ sudo i lagësht / usr / sbin / iptables-trashëgimi -A INPUT -m shtet-shtet i vendosur -j PRANIM> / dev / null
$ sudo i lagësht / usr / sbin / iptables-trashëgimi -A INPUT -j DROP> / dev / null
$ sudo i lagësht / usr / sbin / iptables-trashëgimi -A OUTPUT -j PRANIM> / dev / null
$ sudo i lagësht / usr / sbin / iptables-trashëgimi -A PWRPARA -j DROP> / dev / null
$ sudo i lagësht / usr / sbin / iptables-nft -F> / dev / null
$ sudo i lagësht / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j PRANIMI> / dev / null
$ sudo i lagësht / usr / sbin / iptables-nft -A INPUT -m shtet-shtet i vendosur -j PRANIM> / dev / null
$ sudo i lagësht / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ sudo i lagësht / usr / sbin / iptables-nft -A OUTPUT -j PRANIM> / dev / null
$ sudo i lagësht / usr / sbin / iptables-nft -A PWRPARA -j DROP> / dev / null
##############################
jehonë ju keni hedhur $ 0 $ 1 $ 2
# del nga skenari
dalja 0
Si do të vendosja një rregull nëse ky firewall do ta përdorte atë për portën time dhe do të kishte një kallamar brenda LAN-it ???