Jak funguje iptables

xmms

  • ***
  • 151
    • Zobrazit profil
    • E-mail
Jak funguje iptables
« kdy: 12. 12. 2010, 18:49:36 »
Snažím se naučit iptables, zkouším to podle návodu, ale nedělá to, co jsem očekával. Mám OPENsuse 11.3, na portu 21 mi běží vsftpd a chci ho zablokovat rejectem, abych při pokusu o připojení dostal chybovou hlášku:

Kód: [Vybrat]
moje:~ # iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

moje:~ # ftp 127.0.0.1 21
ftp: connect: Connection refused

Connection refused je sice v pořádku, ale mezi tím je asi dvousekundová prodleva. Přitom když zadám připojení na jiný neexistující port, objeví se Connection refused ihned bez čekání. Proč je tam ta prodleva a kde je nastavená? Já jsem ji tam nedával.

Zde mám jiné nastavení a očekával bych, že zablokuju všechno kromě ftp a ftp bude fungovat. Ale nefunguje:

Kód: [Vybrat]
moje:~ # iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
moje:~ # ftp 127.0.0.1 21
ftp: connect: Connection timed out

Zde se objeví Connection timed out a trvá to asi 20 sekund. Opravdu si s tím nevím rady, co dělám špatně? Jsem iptables začátečník.

vsftpd je funkční a s vypnutým firewallem funguje
jde mi ted prozatím jen o k připojení k němu, přenos souborů ted neřeším
Předem dík.

Kód: [Vybrat]
moje:~ # iptables -P INPUT ACCEPT
moje:~ # iptables -P FORWARD ACCEPT
moje:~ # iptables -P OUTPUT ACCEPT
moje:~ # iptables -F
moje:~ # iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
moje:~ # ftp 127.0.0.1 21
Connected to 127.0.0.1.
220 (vsFTPd 2.2.2)
Name (127.0.0.1:dan): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
« Poslední změna: 12. 12. 2010, 18:57:59 od xmms »


Fantomas

Re: Jak funguje iptables
« Odpověď #1 kdy: 12. 12. 2010, 21:55:15 »
Prvne zkus tohle:
http://www.root.cz/clanky/vse-o-iptables-uvod/
 a pak teprve zkousej forum. Vetsinou vsichni, kteri znaji odpoved, se vse naucili z takovych a podobnych clanku.

mrk

Re: Jak funguje iptables
« Odpověď #2 kdy: 12. 12. 2010, 22:11:29 »
v prvom pripade mi padlo do oka "--reject-with icmp-port-unreachable". Ked som namiesto toho skusil "--reject-with tcp-reset" alebo aj "--reject-with icmp-host-prohibited", tak sa spojenie zrusilo hned, bez cakania. Zrejme ftp klient chape port-unreachable ako "skus to znova", preto to zdrzanie.

Co sa tyka druheho problemu, ftp potrebuje standardne 2 porty, druhy z nich je myslim lubovolny.   Skuste radsej pasivne ftp pomocou "ftp -p".

Kit

Re: Jak funguje iptables
« Odpověď #3 kdy: 12. 12. 2010, 22:23:06 »
Je chvályhodné, že se snažíš naučit konfiguraci firewallu. Zkusil jsi už nějaké nadstavby? Jsou to vlastně jen skripty, které potřebná pravidla vytvoří samy. Zkusil jsi už SuSEfirewall2, fwbuilder nebo Shorewall? Někdy je zajímavé se podívat, jak to dělají jiní.

Nedoporučuji používat "iptables -P INPUT ACCEPT". Je lepší zablokovat všechny služby a pak povolit jen ty, které skutečně chci. Totéž s FORWARD.

A ta prodleva s REJECTem? Podle mne je tam schválně. Je jen málo případů, kdy je potřeba REJECT bez prodlevy.

V ostatních případech doporučuji mrknout se do logů.

xmms

  • ***
  • 151
    • Zobrazit profil
    • E-mail
Re: Jak funguje iptables
« Odpověď #4 kdy: 11. 01. 2011, 22:31:39 »
Dá se nějak udělat REDIRECT na localhostu?
zkoušel jsem toto:

Kód: [Vybrat]
iptables -t nat -A PREROUTING -i lo -p tcp --dport 5555 -j REDIRECT --to 2000
# netcat -l -vv -p 2000
listening on [any] 2000 ...
netcat -vv 127.0.0.1 5555
localhost.localdomain [127.0.0.1] 5555 (personal-agent) : Connection refused

Nefunguje to. Mám netcat naslouchající na portu 2000. Já se chci připojovat na port 5555 a iptables mě má přesměrovat na 2000. Ale nepřesměruje. Zkoušel jsem to na zařízení eth0 a tam to funguje.

S tím localhostem je to vůbec takové divné. Třeba bych se chtěl připojit z adresy 127.0.0.8 na adresu 127.0.0.1, ale nepřišel jsem na to, jak to udělat. Když dám cílovou adresu 127.0.0.8 (třeba telnetem), nastaví se automaticky i zdrojová na 127.0.0.8.