Portál AbcLinuxu, 26. dubna 2024 02:16


Dotaz: povolit pouze pop3 přes maškarádu

26.2.2005 08:46 phax7 | skóre: 34 | blog: PhaX_blog
povolit pouze pop3 přes maškarádu
Přečteno: 200×
Odpovědět | Admin
Dobrý den,

Mám Linuxový stroj a chci přes něj pro vnitřní síť povolit pouze POP3 protokol (a pak SMTP, ale předpokládám, že jen změním porty.)

Zde uvádím (snad) relevantní část z mého rc.firewall skriptu
IPTABLES=/usr/sbin/iptables

$IPTABLES -X
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F POSTROUTING -t nat
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

ETH_NET=eth0 # sitovka do netu
ETH_LAN=eth1 # sitovka do vnitrni site

IP_NET=1.2.3.4 # moje verejna IP

$IPTABLES -t nat -A PREROUTING -i $ETH_NET -s 192.168.0.0/16 -j DROP
$IPTABLES -t nat -A PREROUTING -i $ETH_NET -s 172.16.0.0/12 -j DROP
$IPTABLES -t nat -A PREROUTING -i $ETH_NET -s 10.0.0.0/8 -j DROP

$IPTABLES -A INPUT -i lo -j ACCEPT

$IPTABLES -A INPUT -i $ETH_NET -m state --state ESTABLISHED,RELATED -j ACCEPT


$IPTABLES -A FORWARD -i $ETH_LAN -o $ETH_NET -p tcp --dport 110 -m state --state ESTABLISHED,RELATED -j ACCEPT  
$IPTABLES -A FORWARD -i $ETH_LAN -o $ETH_NET -p tcp --dport 110 -j ACCEPT

$IPTABLES -A FORWARD -i $ETH_LAN -o $ETH_NET -p udp --dport 110 -m state --state ESTABLISHED,RELATED -j ACCEPT  
$IPTABLES -A FORWARD -i $ETH_LAN -o $ETH_NET -p udp --dport 110 -j ACCEPT



$IPTABLES -A INPUT -i $ETH_LAN -p tcp --dport 3128  -j ACCEPT
$IPTABLES -A INPUT -i $ETH_LAN -p udp --dport 3128  -j ACCEPT



$IPTABLES -A POSTROUTING -t nat -s 192.168.1.0/255.255.255.0 -o $ETH_NET -j MASQUERADE

Nevím kde mám chybu - z vnitřní síťe je povolený squid proxy (kurzíva) a to funguje v pořádku. Taky mám možná trochu zmatek v udp paketech, nevím kde je mám povolit a kdy nemusím

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

Odpovědi

26.2.2005 09:21 ZAH
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslímže jsou chybně pravidla pro forward nemužňuješ navazovat nová spojení. Dle mne chybí state NEW.
26.2.2005 09:25 phax7 | skóre: 34 | blog: PhaX_blog
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
$IPTABLES -A FORWARD -i $ETH_LAN -o $ETH_NET -p udp --dport 110 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT  
Přidal jsem tam to NEW a stále to bohužel nefunguje.

Jestli je to podstatné tak ve vnitřní síťi je Win XP a na poštu Thunderbird.

Díky za odpověd
26.2.2005 09:45 ZAH
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Tak od začátku. Zavést modul pro maškarádu a pro jistotu i ty ostatní co kdybych za chvíli zkoušel něco jiného.
# Inicializace databaze modulu
/sbin/depmod -a
# Zavedeme moduly pro nestandardni cile
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
povolit routování
# Zapneme routovani paketu
echo "1" > /proc/sys/net/ipv4/ip_forward
Pro první pokusy povolit vše Potom nasadit omezení a prohlížet log.
 # Implicitni politikou je zahazovat nepovolene pakety
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWRD ACCEPT
Povolit maškarádu
# IP maskarada - SNAT
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP
Vyzkoušet a ozvat se. Jinak squid je proxy server a ten potřebuje pouze přístup k netu nikoliv routování.
26.2.2005 10:53 Michal Kubeček
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Implicitní politikou je zahazovat nepovolené pakety, proto nastavujete řetězcům FORWARD a INPUT politiku na ACCEPT? :-)
26.2.2005 10:07 ttt
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Ten stavovy firewall mi prijde zbytecny, kdyz to v nasledujicim prikazu vsechno poustis. Taky si myslim, ze je treba povolit zdrojovy port namisto ciloveho. Treba nejak takto:

$IPTABLES -A FORWARD -i $ETH_LAN -p tcp --sport 110 -j ACCEPT
26.2.2005 10:12 ttt
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
ted vidim, ze spravne by spis melo byt: -i $ETH_NET
26.2.2005 10:51 Michal Kubeček
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Proboha, jen to ne, jedině snad jako odstrašující příklad. To je klasická chyba, kdy začátečník v domnění, že povoluje odpovědi na svá POP3 (HTTP, SMTP, …) spojení, povolí jakoukoli TCP komunikaci do vnitřní sítě, použije-li útočník zdrojový port 110 (80, 25, …). Právě sem patří stavové pravidlo. Takže např.:

iptables -P FORWARD DROP
iptables -F FORWARD
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $ETH_LAN -o $ETH_NET -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --dport 113 -j REJECT
26.2.2005 11:40 ttt
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Ano, souhlasim co jsem napsal je blbost, ale napadla mi doplnujici otazka. Muze povoleny forward nejakym zpusobem ohrozit sit za NATem? Pokud ano, tak jakym.
26.2.2005 12:16 phax7 | skóre: 34 | blog: PhaX_blog
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Díky za vaše rady, ale stále asi někde dělám chybu, zavádím teď takovéto pravidla:
IPTABLES=/usr/sbin/iptables

/sbin/depmod -a
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE

ETH_NET=eth0 # sitovka do netu
ETH_LAN=eth1 # sitovka do vnitrni site

IP_NET=1.2.3.4 # moje verejna IP


$IPTABLES -X
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F POSTROUTING -t nat
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $ETH_LAN -o $ETH_NET -p tcp --dport 110 -j ACCEPT

$IPTABLES -A INPUT -i lo -j ACCEPT

$IPTABLES -A INPUT -i $ETH_LAN -j ACCEPT

$IPTABLES -A INPUT -i $ETH_NET -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -i $ETH_NET -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT

$IPTABLES -A INPUT -i $ETH_NET -p udp -d $IP_NET --dport 9176 -j ACCEPT
$IPTABLES -A INPUT -i $ETH_NET -p tcp -d $IP_NET --dport 9176 -j ACCEPT
A přijímání pošty stále nefunguje, když změním policy u FORWARD na accept, tak funguje.

Díky
26.2.2005 12:19 phax7 | skóre: 34 | blog: PhaX_blog
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
A ještě:
cat /proc/sys/net/ipv4/ip_forward
1
26.2.2005 12:37 ttt
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Zkus vypustit '-o $ETH_NET' v chainu FORWARD, toto se deje pred NATem, a nejsem si jist zda paket tusi kterym rozhranim pujde ven.
26.2.2005 12:47 phax7 | skóre: 34 | blog: PhaX_blog
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Vypustil jsem to:
$IPTABLES -A FORWARD -i $ETH_LAN -p tcp --dport 110 -j ACCEPT
Ale stále to nefunguje...

Dík
26.2.2005 12:48 Michal Kubeček
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
To samozřejmě ví, na konci se přepisuje zdrojová adresa, která na to nemá vliv.
26.2.2005 12:52 Michal Kubeček
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Pokud přidáte ještě ten překlad adres, nevidím důvod, proč by to nemělo fungovat. Zkuste tcpdump na vnitřním a vnějším rozhraní, případně zapnout logování všech zahozených paketů, abyste zjistil, kde to mizí. Nebude to nějaký trapný problém typu nefunkčních DNS dotazů?
26.2.2005 13:06 phax7 | skóre: 34 | blog: PhaX_blog
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Ano, přidal jsem ten překlad a už to funguje:
$IPTABLES -t nat -A POSTROUTING -o $ETH_NET -j SNAT --to $IP_NET
Díky moc všem za pomoc!

Kdybyste někdo věděli o nějaké hezké knížce o iptables (nejradši česky, pak anglicky) rád bych si ji koupil.

Mějte se
26.2.2005 11:01 Michal Kubeček
Rozbalit Rozbalit vše Re: povolit pouze pop3 přes maškarádu
Odpovědět | | Sbalit | Link | Blokovat | Admin
UDP komunikaci povolte jen tam, kde ji potřebujete povolit. POP3 ani HTTP proxy to rozhodně nejsou. Z běžně používaných služeb vás bude zajímat asi jen DNS (pozor, tam je to TCP i UDP) a NTP.

Pokud to máte opravdu takto, squid vám na vnitřním rozhraní nemá šanci fungovat, protože propustíte pouze SYN paket (ESTABLISHED pouštíte jen zvenku). O dalších chybách (v tučné části vždy druhé pravidlo zahrnuje všechno co první, takže první je zbytečné) už se tu mluvilo.

A jedna metodická poznámka: názvy tabulek naznačují, k čemu slouží. Tedy filter k filtraci paketů, nat k překladu adres a mangle k dalším manipulacím s pakety (které nespadají pod NAT). Filtrovat v tabulce nat můžete sice v zásadě také, ale není to příliš šťastné.

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.