Portál AbcLinuxu, 1. června 2025 09:54


Dotaz: zatuhnutiPC pri pouziti iptables

12.7.2005 18:35 cvrkon
zatuhnutiPC pri pouziti iptables
Přečteno: 201×
Odpovědět | Admin
Zdravim, tak mam dalsi problemecek, nasel jsem si pekne napsanej fw, trochu ho upravil a hodil si ho init.d aby ho nabootoval po spusteni, ale jakmile se to tak stane zacne se mi PC sekat a absolutne mi to nestiha, nevite nekdo kde muze byt chyba? jinak mam Debian 3.1 a bezi to na PII 2x350MHz a 256MB ram
#!/bin/sh
#
# Vase IP adresa a vnejsi rozhrani
INET_IP="217.117.223.76"
INET_IFACE="eth0"

# IP a broadcast adresa a rozhrani vnitrni site
LAN1_IP="192.168.1.254/32"
LAN1_BCAST="192.168.1.255/32"
LAN1_IFACE="eth1"

# Lokalni loopback rozhrani
LO_IFACE="lo"
LO_IP="127.0.0.1/32"

# Cesta k programu iptables
IPTABLES="/sbin/iptables"

# Inicializace databaze modulu
/sbin/depmod -a

# Zavedeme moduly pro nestandardni cile
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE

# Modul pro FTP prenosy
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp

# Zapneme routovani paketu
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# rp_filter na zamezeni IP spoofovani
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
   echo "1" > ${interface}
done

# Implicitni politikou je zahazovat nepovolene pakety
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

#
# Retezec PREROUTING v NAT tabulce
#

# Odchozi HTTP pozadavky (na port 80 s vyjimkou lokalniho serveru) 
# budou presmerovany na lokalniho squida (na portu 3128) ve funkci 
#transparentni proxy cache.
$IPTABLES -t nat -A PREROUTING -p tcp -i ! $INET_IFACE -d ! $INET_IP --dport 80 -j REDIRECT --to-port 3128 

# Presmerujeme port 2222 na port 22 (ssh) stanice uvnitr site 
$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 2222 -j DNAT --to 192.168.1.2:22


#
# Retezec POSTROUTING v NAT tabulce
#

# IP maskarada - SNAT
# NATujeme 
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP


#
# Pridavne retezce pro snazsi kontrolu na rezervovane adresy
#

# Zahazovat a logovat (max. 5 x 3 pakety za hod)
$IPTABLES -N logdrop
$IPTABLES -A logdrop -m limit --limit 5/h --limit-burst 3 -j LOG --log-prefix "Rezervovana adresa: "
$IPTABLES -A logdrop -j DROP


# V tomto retezci se kontroluje, zda prichozi pakety nemaji nesmyslnou IP adresu
$IPTABLES -N IN_FW
$IPTABLES -A IN_FW -s 192.168.0.0/16 -j logdrop # rezervovano podle RFC1918
$IPTABLES -A IN_FW -s 10.0.0.0/8 -j logdrop     #   ---- dtto ----
$IPTABLES -A IN_FW -s 172.16.0.0/12 -j logdrop  #   ---- dtto ----  
$IPTABLES -A IN_FW -s 96.0.0.0/4 -j logdrop     # rezervovano podle IANA
# ... dalsi rezervovane adresy mozno doplnit podle 
#       http://www.iana.com/assignments/ipv4-address-space


# 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 --dport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput



#
# Retezec FORWARD
#

# Navazovani spojeni ala Microsoft -
# Paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A FORWARD -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-prefix="bogus packet: "
$IPTABLES -A FORWARD -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP

# Nechceme rezervovane adresy na internetovem rozhrani
$IPTABLES -A FORWARD -i $INET_IFACE -j IN_FW

# Umoznit presmerovani portu na stanici dovnitr site
$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -p tcp -d 192.168.1.2 --dport ssh -j ACCEPT

# Routing zevnitr site ven neomezujeme
$IPTABLES -A FORWARD -i $LAN1_IFACE -j ACCEPT

# Routing zvenku dovnitr pouze pro navazana spojeni (stavovy firewall)
$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Ostatni pakety budou zahozeny, tak je budeme logovat (12 x 5 pkt/hod)
$IPTABLES -A FORWARD -m limit --limit 12/h -j LOG --log-prefix "forward drop: "


#
# Retezec INPUT
#

# Navazovani spojeni ala Microsoft -
# 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 $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-prefix="bogus packet: "
$IPTABLES -A INPUT -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP

# Nejprve se zbavime nezadoucich adres
$IPTABLES -A INPUT -i $INET_IFACE -j IN_FW

# Pravidla pro povolene sluzby 
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 21 -j ACCEPT  #FTP server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 22 -j ACCEPT  #SSH server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 25 -j ACCEPT  #SMTP server
$IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 53 -j ACCEPT  #DNS server UDP
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 53 -j ACCEPT  #DNS server TCP
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 80 -j ACCEPT  #WWW server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 110 -j ACCEPT #POP3 server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 143 -j ACCEPT #IMAP server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 443 -j ACCEPT #HTTPS server
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 873 -j ACCEPT #rsync server

# Sluzbu AUTH neni dobre filtrovat pomoci DROP, protoze to muze
# vest k prodlevam pri navazovani nekterych spojeni. Proto jej
# sice zamitneme, ale tak, aby nedoslo k nezadoucim prodlevam.
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 113 -m limit --limit 12/h -j LOG
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 113 -j REJECT --reject-with tcp-reset #AUTH server

# Propoustime pouze ICMP ping
$IPTABLES -A INPUT -i $INET_IFACE -p ICMP --icmp-type echo-request -j ACCEPT

# Loopback neni radno omezovat
$IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT

# Stejne jako pakety z lokalni site, jsou-li urceny pro nas
$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_IP -j ACCEPT
$IPTABLES -A INPUT -i $LAN1_IFACE -d $INET_IP -j ACCEPT

# Broadcasty na lokalnim rozhrani jsou take nase
$IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_BCAST -j ACCEPT

# MS klienti maji chybu v implementaci DHCP
$IPTABLES -A INPUT -i $LAN1_IFACE -p udp --dport 67 -j ACCEPT

# Pakety od navazanych spojeni jsou v poradku
$IPTABLES -A INPUT -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT

# Vsechno ostatni je zakazano - tedy logujeme, maxim. 12x5 pkt/hod 
$IPTABLES -A INPUT -m limit --limit 12/h -j LOG --log-prefix "INPUT drop: "

#
# Retezec OUTPUT
#

# 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 OUTPUT -o $INET_IFACE -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput

# Povolime odchozi pakety, ktere maji nase IP adresy
$IPTABLES -A OUTPUT -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -s $LAN1_IP -j ACCEPT
$IPTABLES -A OUTPUT -s $INET_IP -j ACCEPT

# Povolime DHCP broadcasty na LAN rozhrani
$IPTABLES -A OUTPUT -o $LAN1_IFACE -p UDP --dport 68 --sport 67 -j ACCEPT

# Ostatni pakety logujeme (nemely by byt zadne takove)
$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT drop: "

diky za rady - cvrkon
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.7.2005 19:14 #Tom
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Odpovědět | | Sbalit | Link | Blokovat | Admin
Už mě párkrát nazlobilo, že jsem si ustřihnul přístup na zařízení lo. Zkuste dát níže uvedené pravidlo někam hodně nahoru:
# Loopback neni radno omezovat
$IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT
Jen si teď nejsem jist, jesli před, nebo za:
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
12.7.2005 19:30 cvrkon | skóre: 5
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
no asi spis pred... ale diky za tip, zkusim to i kdyz mi to prijde nesmyslne jestli je to ve scripti vice v popredi nebo ne :)
12.7.2005 20:03 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Prakticky shodné nastavení mi běhalo pro memší firmu s 1Mbitem a asi 30 počítači na P100 jako hodinky více než 3 roky. (První rok tam byla slabší linka). Spíš bych zkotroloval logy, jestli se neloguje příliš šrotu. Nebo jestli to nepřetěžuje jiný server, který vám beží na tom routru. Já jsem měl na ty ostatní servry (ftp, wwww atd) mašinu uvnitř sítě.
12.7.2005 20:56 cvrkon | skóre: 5
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
no me na tom bezi jeste DNS, apache, mail, mysql - proste vse por provoz webserveru, ale vsechno je oK do ty doby nez zapnu todle
12.7.2005 21:30 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Projel jsem to diffem a narazil jsem na jeden zajímavý rozdíl. Skoro si připadám že vaše je správně, ale co kdyby. moje
# rp_filter na zamezeni IP spoofovani
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
   echo "1" ${interface}
done
vaše
# rp_filter na zamezeni IP spoofovani
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
   echo "1" > ${interface}
done
12.7.2005 22:00 #Tom
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
echo "1" ${interface} je blbost, je to stejné, jako kdyby tam nic nebylo.
12.7.2005 22:09 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
První varianta neudělá nic (tedy kromě toho, že něco vypíše na terminál). Pokud ovšem nezapnete RP filter, žádný zásadní problém tím nevznikne (spíše naopak).
13.7.2005 00:55 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Odpovědět | | Sbalit | Link | Blokovat | Admin
IP adresa se síťovou maskou 255.255.255.255 je IMNSHO blbost (je to v LAN1_IP, LAN1_BCAST), maximální smysluplný počet jedničkových bitů v masce je 30.

Loopback interface má, pokud se nepletu, IP 127.0.0.1/8

Nicméně předpokládám, že tohle nebude řešení problému
Quando omni flunkus moritati
13.7.2005 01:38 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Blbost to není, dokonce existují situace, kdy adresa s prefixem 32 má velmi dobrý smysl i na ethernetu. Tady ovšem vzhledem k použití je to '/32' na konci zbytečně navíc, ale na funkci nemá vliv (ostatně ani na interní reprezentaci těch pravidel).
13.7.2005 02:19 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Mohl bych se zaptat, kdy má smysl prefix 32? Docela by mě to zajímalo.
Quando omni flunkus moritati
13.7.2005 08:11 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Třeba když jsou ty počítače ve skutečnosti jenom dva a z nějakých důvodů nechcete nebo nemůžete adresy volit tak, aby byly ve stejném (relativně malém) rozsahu. Takže pak jednoduše provedete něco na způsob
  # na A
  ip addr add 1.1.1.1 dev eth0
  ip route add 2.2.2.2 dev eth0

  # na B
  ip addr add 2.2.2.2 dev eth0
  ip route add 1.1.1.1 dev eth0
13.7.2005 08:22 Rozik | skóre: 14
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Ja treba pouzivam /32 pri pripojovani pres NFS - je tedy pravda, ze tam se to musi rozepsat cele a ne ve zkracene forme... Nechci, aby se tam pripojoval kazdy... Obzvlaste, kdyz nemenite ID roota :)
-- Zadny uceny z nebe nespad --
13.7.2005 13:16 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Jasně. Díky.
Quando omni flunkus moritati
13.7.2005 08:30 Rozik | skóre: 14
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, doporucil bych ti se podivat na http://www.abclinuxu.cz/forum/show/75281. Resil jsem tam chod tohoto sameho scriptu. Je tam oproti tve situaci sice par zmen... Najdes tam plno uzitecnych rad.
-- Zadny uceny z nebe nespad --
13.7.2005 10:30 cvrkon | skóre: 5
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
diky za rady a inspiraci, juknu se na to a nejak se s tim zkusim poprat.... i kdyz je mi to zahada, daval sem to jednomu kolegovi a tomu to slape bez problemu, no uvidime

diky
13.7.2005 13:02 cvrkon | skóre: 5
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Tak problem vyresen :), chyba byla v nastaveni (hlavne rozsahu)

Predtim:
# IP a broadcast adresa a rozhrani vnitrni site
LAN1_IP="192.168.1.254/32"
LAN1_BCAST="192.168.0.255/32"
LAN1_IFACE="eth1"

# Lokalni loopback rozhrani
LO_IFACE="lo"
LO_IP="127.0.0.1/32"
Nyni:
# IP a broadcast adresa a rozhrani vnitrni site
LAN1_IP="192.168.1.254/24"
LAN1_BCAST="192.168.1.255/24"
LAN1_IFACE="eth1"

# Lokalni loopback rozhrani
LO_IFACE="lo"
LO_IP="127.0.0.1/8"
a jen jeste k tomuto: standartne je nastaveno toto:
# Odchozi HTTP pozadavky (na port 80 s vyjimkou lokalniho serveru) 
# budou presmerovany na lokalniho squida (na portu 3128) ve funkci 
#transparentni proxy cache.
$IPTABLES -t nat -A PREROUTING -p tcp -i ! $INET_IFACE -d ! $INET_IP --dport 80 -j REDIRECT --to-port 3128
pak se ale bohuzel z mistni site nepripojim (i kdyz mam zadanao ze musim pres proxy) takze sem to upravil na(odebral sem redirect na 3128):
# Odchozi HTTP pozadavky (na port 80 s vyjimkou lokalniho serveru) 
# budou presmerovany na lokalniho squida (na portu 3128) ve funkci 
#transparentni proxy cache.
$IPTABLES -t nat -A PREROUTING -p tcp -i ! $INET_IFACE -d ! $INET_IP --dport 80 -j
v pohode vse bezi jen mi to vypise ze argument -j (ten posledni) neexistuje, tak nevim.... a k tomu jeste dotazek, je lespi kdyz pouziji squid a proxy na tu 3128 nebo ne? jinak mam lajnu 512kbs a na net sdilim 4PC

diky moc, fakt ste mi pomohli a ja si vsimnul kde je chyba
13.7.2005 15:08 Rozik | skóre: 14
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Pouzij jen POSTROUTING a na PREROUTING zakrizkuj... Kvuli 4 PC to nema cenu presmerovavat na squida.
-- Zadny uceny z nebe nespad --
dmnc_net avatar 4.2.2010 11:09 dmnc_net | skóre: 12 | blog: dmnc
Rozbalit Rozbalit vše Re: zatuhnutiPC pri pouziti iptables
Odpovědět | | Sbalit | Link | Blokovat | Admin
kdo by referoval ke skriptu firewallu, tak POZOR, obrovsky pool 96.0.0.0/4 uz nejakou dobu neni rezervovany (http://www.iana.com/assignments/ipv4-address-space) a nektere rozsahy jsou dokonce pouzity na uzemi CR.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.