Portál AbcLinuxu, 10. května 2025 09:39
#konfigurace stavovy firewall iptables
#vycisteni vsech retezcu iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD #vsechno zakazeme iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #####################INPUT############################### #povolime webovy server na eth0 iptables -A INPUT -p TCP -i eth0 --dport 80 -j ACCEPT #povolime prichozi DNS na eth0 iptables -A INPUT -p TCP -i eth0 --dport 53 -j ACCEPT iptables -A INPUT -p UDP -i eth0 --dport 53 -j ACCEPT #povolit servisni pakety ICMP (echo, traceroute) iptables -A INPUT -p ICMP -i eth0 --icmp-type 0 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 3 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 11 -j ACCEPT #povolime vsechny prichozi pakety z eth1 (LAN) iptables -A INPUT -p ALL -i eth1 -j ACCEPT iptables -A INPUT -p ALL -i lo -j ACCEPT #umoznime odchozim pripojenim z tohoto pocitace odpovidat iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p icmp iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p tcp iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p udp #logujeme vsechny ostatni prichozi pakety iptables -A INPUT -j LOG ###########################OUTPUT########### #povolime vystup z IP eth0 //je to bezpecne? iptables -A OUTPUT -p ALL -s 127.0.0.1 ACCEPT //musi zde byt? iptables -A OUTPUT -p ALL -s 1.2.3.4 ACCEPT #################Routovani##################//nevim zda je to spravne iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#konfigurace stavovy firewoll iptables #vycisteni vsech retezcu iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD #vsechno zakazeme iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #####################INPUT############################### #povolime webovy server na eth0 iptables -A INPUT -p TCP -i eth0 --dport 80 -j ACCEPT #povolime prichozi DNS na eth0 iptables -A INPUT -p TCP -i eth0 --dport 53 -j ACCEPT iptables -A INPUT -p UDP -i eth0 --dport 53 -j ACCEPT #povolit servisni pakety ICMP (echo, traceroute) iptables -A INPUT -p ICMP -i eth0 --icmp-type 0 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 3 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 11 -j ACCEPT #povolime vsechny prichozi pakety z eth1 (LAN) iptables -A INPUT -p ALL -i eth1 -j ACCEPT iptables -A INPUT -p ALL -i lo -j ACCEPT #umoznime odchozim pripojenim z tohoto pocitace odpovidat iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p icmp iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p tcp iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p udp #logujeme vsechny ostatni prichozi pakety iptables -A INPUT -j LOG ###########################OUTPUT########### //je to správně? #povolime vystup z IP eth0 iptables -A OUTPUT -p ALL -s 1.2.3.4 ACCEPT iptables -A OUTPUT -p ALL -o lo -j ACCEPT #logujeme vsechny ostatni odchozí pakety iptables -A OUTPUT -j LOG ###########################FORWARD########### //je to správně? #povolime vse z vnitřní sítě iptables -A FORWARD -i eth1 -j ACCEPT #povolime pakety z internetu, které již patří k existujícímu spojení iptables -A FORWARD -i eth0 -o eth1 -m state / --state ESTABLISHED,RELATED -j ACCEPT #################Routovani##################//nevim zda je to spravne iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Děkuji za odpověď Na co port 113?Protože se zdržuje spojení pokud se zahodí port 113 u programů které používají autorizaci.
Proč pouze z eth0 ? na www budeme chtít odevšad ne ? Zrušit -i eth0#povolime webovy server na eth0 iptables -A INPUT -p TCP -i eth0 --dport 80 -j ACCEPT
Skutečně chcete vše z místní sítě povolit ? Předně bych zablokoval sambu a podobné nesmysly porty 137 až 139 a 445#povolime vsechny prichozi pakety z eth1 (LAN) iptables -A INPUT -p ALL -i eth1 -j ACCEPT
Proč to máte třikrát co zjednodušit iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A INPUT -p ALL -i lo -j ACCEPT #umoznime odchozim pripojenim z tohoto pocitace odpovidat iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p icmp iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p tcp iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED -i eth0 -p udp
Zase skutečně povolit všechno ???###########################FORWARD########### //je to správně? #povolime vse z vnitřní sítě iptables -A FORWARD -i eth1 -j ACCEPT
Zase proč to nezjednodušit iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT#povolime pakety z internetu, které již patří k existujícímu spojení iptables -A FORWARD -i eth0 -o eth1 -m state / --state ESTABLISHED,RELATED -j ACCEPT
Doufám že jsem se nesekl někde - proč se neinspirujete těmi příklady ? A něco si nepřečtete - příkladů je na internetu dost a dost.#################Routovani##################//nevim zda je to spravne iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Použil: # MASKARADA /sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to vaše_IP.x.y.z.j
Děkujeme za opravy a inspirující podněty. Dokumentace mame spoustu, avsak nektere poktocile volby nam zatim nejsou uplne jasne. Snazili jsme se spravne reagovat na vsechny vase podnety. S vasi pomoci a dokumentace z Internetu jsme slozili finalni verzi. Dekujeme za pomoc.
Jeste dotaz: Mame filtrovat i OUTPUT?iptables -A OUTPUT -p ALL -s 1.2.3.4 ACCEPTna konci nahravame moduly. Je to nutne?
###############Moduly########################### #nahravame moduly pro FTP, logovani, odmitnuti, omezeni a stavu insmod ip_conntrack_FTP insmod ipt_LOG insmod ipt_REJECT insmod ipt_limit insmod ipt_statepridali jsme ochranu pred falsovanim adres do INPUT i do FORWARD
#ochrana pred falsovani adres (spoofing) #zakaze adresy pro lokalni site iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROPomezili jsme logovani z duvodu ochrany DOS
#logujeme vsechny ostatni prichozi pakety #logovani je nastaveno, tak ze je-li vypusteno vice jak 5 paketu #za 3 sekundy, budou ignorovany. # ochrana pred DOS iptables -A INPUT -m limit --limit 3/second --limit-burst 5 -i ! lo -j LOGZde je finální verze našeho firewallu a routeru pro Fedora Core4
#konfigurace stavovy firewall iptables #vycisteni vsech retezcu iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD #vsechno zakazeme iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #####################INPUT############################### #povolime SSH pro vzdaleny pristup iptables -A INPUT -p TCP --dport 22 -j ACCEPT #povolime webovy server pro vsechny (443 - SSL) iptables -A INPUT -p TCP --dport 80 -j ACCEPT iptables -A INPUT -p TCP --dport 443 -j ACCEPT #povolime port 113 pro programy, ktere pouzivaji autentizaci iptables -A INPUT -p TCP --dport 113 -j ACCEPT #povolime prichozi DNS pro vsechny iptables -A INPUT -p TCP --dport 53 -j ACCEPT iptables -A INPUT -p UDP --dport 53 -j ACCEPT #povolit servisni pakety ICMP (echo, traceroute) iptables -A INPUT -p ICMP -i eth0 --icmp-type 0 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 3 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 11 -j ACCEPT #povolime prichozi pakety z eth1 na port 80 a 443(www), 21(ftp), # 22(SSH), 25(SMTP) iptables -A INPUT -p ALL -i eth1 --dport 80 -j ACCEPT iptables -A INPUT -p ALL -i eth1 --dport 443 -j ACCEPT iptables -A INPUT -p ALL -i eth1 --dport 21 -j ACCEPT iptables -A INPUT -p ALL -i eth1 --dport 22 -j ACCEPT iptables -A INPUT -p ALL -i eth1 --dport 25 -j ACCEPT #povolit rozhrani loopback iptables -A INPUT -p ALL -i lo -j ACCEPT #umoznime odchozim pripojenim z tohoto pocitace odpovidat iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #logujeme vsechny ostatni prichozi pakety #logovani je nastaveno, tak ze je-li vypusteno vice jak 5 paketu #za 3 sekundy, budou ignorovany. # ochrana pred DOS iptables -A INPUT -m limit --limit 3/second --limit-burst 5 -i ! lo -j LOG #ochrana pred falsovani adres (spoofing) #zakaze adresy pro lokalni site iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP ###########################OUTPUT########### #povolime vystup z IP eth0 iptables -A OUTPUT -p ALL -s 1.2.3.4 ACCEPT //OUTPUT nijak neomezuji.? iptables -A OUTPUT -p ALL -o lo -j ACCEPT #logujeme vsechny ostatni odchozí pakety iptables -A OUTPUT -j LOG ###########################FORWARD########### #povolime pakety z vnitrni site na port 80,443(ssl), 21(ftp),22(ssh),25(smtp), autentizace(113) # iptables -A FORWARD -i eth1 --dport 80 -j ACCEPT iptables -A FORWARD -i eth1 --dport 443 -j ACCEPT iptables -A FORWARD -i eth1 --dport 21 -j ACCEPT iptables -A FORWARD -i eth1 --dport 22 -j ACCEPT iptables -A FORWARD -i eth1 --dport 25 -j ACCEPT iptables -A FORWARD -i eth1 --dport 113 -j ACCEPT #povolime pakety z internetu, které již patří k existujícímu spojení iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT #ochrana pred falsovani adres (spoofing) #zakaze adresy pro lokalni site iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP iptables -A FORWARD -i eth0 -s 172.16.0.0/12 -j DROP iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -j DROP #################Routovani################## iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4 ###############Moduly########################### #nahravame moduly pro FTP, logovani, odmitnuti, omezeni a stavu insmod ip_conntrack_FTP insmod ipt_LOG insmod ipt_REJECT insmod ipt_limit insmod ipt_state
#povolime SSH pro vzdaleny pristup iptables -A INPUT -p TCP --dport 22 -j ACCEPT #povolime webovy server pro vsechny (443 - SSL) iptables -A INPUT -p TCP --dport 80 -j ACCEPT iptables -A INPUT -p TCP --dport 443 -j ACCEPT #povolime prichozi pakety z eth1 na port 80 a 443(www), 21(ftp), # 22(SSH), 25(SMTP) zbytečné už je povolen -> iptables -A INPUT -p ALL -i eth1 --dport 80 -j ACCEPT zbytečné už je povolen -> iptables -A INPUT -p ALL -i eth1 --dport 443 -j ACCEPT iptables -A INPUT -p ALL -i eth1 --dport 21 -j ACCEPT zbytečné už je povolen -> iptables -A INPUT -p ALL -i eth1 --dport 22 -j ACCEPT iptables -A INPUT -p ALL -i eth1 --dport 25 -j ACCEPT
Dobré ráno, děkujeme za pomoc
1.Jaký je prosím rozdíl mezi DROP a REJECT? tedy mezi zahodit a odmítnout
#logujeme vsechny ostatni prichozi pakety #logovani je nastaveno, tak ze je-li vypusteno vice jak 5 paketu #za 3 sekundy, budou ignorovany. # ochrana pred DOS iptables -A INPUT -m limit --limit 3/second --limit-burst 5 -i ! lo -j LOG #ochrana pred falsovani adres (spoofing) #zakaze adresy pro lokalni site iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROPvůbec nepříjdou na řadu, pokud na předcházejících řádcích vyhoví nějaké podmíce, což je velmi pravděpodobné.
Dobrý den velmi děkuji za Váši připomínku. Opravený script přikládám
#!/bin/sh # #konfigurace stavovy firewall iptables a router #podle Pana Petricka, Sobane a dalsich... # #Fedora Core 4 # #Server eth0 192.168.161.23 (venkovni sit pripojena na Internet) # eth1 192.168.1.1 (vnitrni sit) # #poznamky:po odskouseni zastavit logovani # nastavit casy pro FTP # test INPUT na eth0 # cesta k iptables iptables=/sbin/iptables #vycisteni vsech retezcu $iptables -F INPUT $iptables -F OUTPUT $iptables -F FORWARD #vsechno zakazeme -P, --policy - Výchozí politika øetìzce, vystup - povolen!!! $iptables -P INPUT DROP $iptables -P OUTPUT ACCEPT $iptables -P FORWARD DROP ################# Obecna ochrana ################## #logovani inputu na eth0 ; potreba doplnit a otestovat, #$iptables -A INPUT -i eth0 -j LOG --log-level debug --log-prefix "FIREWALL:" $iptables -A INPUT -i eth0 -d 192.168.1.2 -j LOG --log-level debug --log-prefix "dovnitr site :" $iptables -A INPUT -i eth0 -d 192.168.1.3 -j LOG --log-level debug --log-prefix "dovnitr site : " $iptables -A INPUT -i eth0 -d 192.168.1.4 -j LOG --log-level debug --log-prefix "dovnitr site : " # Paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim $iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP # Portscan s nastavenym SYN,FIN $iptables -A INPUT -p tcp -i eth0 --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-level debug --log-prefix="Portscan SYN, FIN: " $iptables -A INPUT -p tcp -i eth0 --tcp-flags SYN,FIN SYN,FIN -j DROP #ochrana pred DoS (pakety s priznakem SYN) #pokud bude paketu tcp s priznakem SYN mene nez 5 za sec #navrati se zpatky do INPUTU #jinak se zahodi $iptables -N syn_flood $iptables -A INPUT -i eth0 -p tcp --syn -j syn_flood $iptables -A syn_flood -m limit --limit 1/s --limit-burst 5 -j RETURN $iptables -A syn_flood -j DROP #TOS flagy slouzi k optimalizaci datovych cest. Pro ssh, ftp a telnet #pozadujeme minimalni zpozdeni. Pro ftp-data zase maximalni propostnost #$iptables -t mangle -A PREROUTING -p tcp --sport ssh -j TOS --set-tos Minimize-Delay #$iptables -t mangle -A PREROUTING -p tcp --dport ssh -j TOS --set-tos Minimize-Delay #$iptables -t mangle -A PREROUTING -p tcp --sport ftp -j TOS --set-tos Minimize-Delay #$iptables -t mangle -A PREROUTING -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput #ochrana pred falsovani adres (spoofing) #zakaze adresy pro lokalni site #iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP #iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP #iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP #################Routovani################## # zapneme routovani echo "1" > /proc/sys/net/ipv4/ip_forward $iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.161.23 ####################INPUT############################### #povolime dotazy www na vstup eth0 $iptables -A INPUT -i eth0 -d 192.168.161.23 -p tcp --dport 80 -j ACCEPT $iptables -A INPUT -i eth0 -d 192.168.161.23 -p tcp --dport 443 -j ACCEPT #povolime FTP na vstup eth0 #pro funkci --time musí byt v jadre modul CONFIG_IP_NF_MATCH_TIME #casove omezeni pro FTP od 18.00 - 20.00h #$iptables -A INPUT -i eth0 -s 192.168.161.23 -p tcp --dport 21 -m time --timestart 18:00 --timestop 20:00 -j ACCEPT #odmitneme port 113 pro programy, ktere pouzivaji autentizaci #$iptables -A INPUT -p TCP --dport 113 -j REJECT #povolime prichozi DNS pro vsechny #$iptables -A INPUT -p TCP --dport 53 -j ACCEPT #$iptables -A INPUT -p UDP --dport 53 -j ACCEPT #povolime ping, routet a dalsi z ICMP #omezeni 5 odpovedi ping za 1 sec (ochrana pred DOS) #po odzkouseni asi zakazat #$iptables -A INPUT -p icmp -j ACCEPT #povolit rozhrani loopback $iptables -A INPUT -i lo -j ACCEPT #umoznime odchozim pripojenim z tohoto pocitace odpovidat $iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #povolime vsechno ze vstupu eth1 $iptables -A INPUT -i eth1 -j ACCEPT ###########################FORWARD########### #Pokud paket pøichází z eth1 z IP 192.168.1.2 - 192.168.1.4 # a chce opustit eth0, povol, # nevim presne jak se pise rozmezi adres $iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.2 -j ACCEPT $iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.3 -j ACCEPT $iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.4 -j ACCEPT #povolime pakety z internetu, ktere jiz patri k existujicimu spojeni $iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.