Blog jak widać już nie jest aktualizowany. I raczej nie będzie. Wisi sobie ot tak, ze względów historycznych :)

Zabezpieczenie dostępu do ftp przy pomocy iptables

Krzysztof Rygielski | 2009-05-21 16:47 | Kategorie: Linux

Niedawno byÅ‚em Å›wiadkiem wÅ‚amania na kilka kont ftp. Skutkiem byÅ‚o umieszczenie zÅ‚oÅ›liwego kodu w plikach *.js i ramek iframe w plikach *.html. Po posprzÄ…taniu tego baÅ‚aganu postanowiÅ‚em podjąć kroki, aby lepiej zabezpieczyć dostÄ™p po ftp, który z pewnych przyczyn nadal musi być używany, pomimo swoich wad.

Postanowiłem użyć iptables aby zablokować dostęp do ftp dla wszystkich, poza wybranymi hostami. W tym celu usunąłem z reguł iptables (nie wiem czemu wszystko tam było tak poustawiane domyślnie...) następujący wpis:

$ iptables --list --line-numbers
Chain INPUT (policy DROP)
...
10 ACCEPT  tcp  --  anywhere        anywhere      tcp dpt:ftp
...

przy pomocy komendy:

$ iptables -D INPUT 10

gdzie 10 to numer linii, w której znajduje siÄ™ wspomniana reguÅ‚a, na każdej maszynie może być w innym miejscu. JeÅ›li takowej nie ma, można pominąć ten krok :-)

NastÄ™pnie należaÅ‚o dodać reguÅ‚y dla adresów IP, którym zezwalamy na poÅ‚Ä…czenie ftp:

$ iptables -A INPUT -p tcp --dport 21 -s 10.1.1.4 -j ACCEPT

gdzie zamiast 10.1.1.4 wpisujemy adres ip hosta. Komendę powtarzamy dla każdego kolejnego adresu.

Na koÅ„cu należy zablokować dostÄ™p wszystkim innym próbujÄ…cym siÄ™ poÅ‚Ä…czyć z portem 21:

$ iptables -A INPUT -p tcp --dport 21 -j DROP

Powyższa reguÅ‚a zawsze musi być dodana jako ostatnia. W przeciwnym wypadku hosty, dla których reguÅ‚y dostÄ™pu do portu 21 zostaÅ‚y wpisane niżej, nie bÄ™dÄ… w stanie nawiÄ…zać poÅ‚Ä…czenia.

Na koniec jeszcze jedna uwaga. Po wprowadzeniu powyższych reguÅ‚ nie miaÅ‚em wprawdzie problemów z poÅ‚Ä…czeniem, chociaż byÅ‚o ono strasznie powolne. W dodatku inna osoba, używajÄ…ca Total Commandera, nie byÅ‚a w stanie nawiÄ…zać poÅ‚Ä…czenia, bez wzglÄ™du na to, czy tryb PASSIVE byÅ‚ wÅ‚Ä…czony czy nie. Po chwili poszukiwaÅ„ znalazÅ‚em informacjÄ™, że należy zaÅ‚adować moduÅ‚ ip_conntrack_ftp komendÄ…:

$ modprobe ip_conntrack_ftp

Moje połączenia nabrały normalnej prędkości, a i Total Commander zaczął się łączyć bez problemu.