Jakiś czas temu złorzyło się, że stawiałem znajomemu serwer na Debianie 4.0 Etch. Wczoraj chciał on skożystać ze swojego konta ftp, jednak wystąpiły komplikacje i zgłosił się oczywiście do mnie. Problem polegał na tym, że jego klient ftp nie mogł pobrać zawartości katalogu. Próba zalogowania się za pomocą “ftp” zakończyła się następującym rezultatem:
| 230 User jacek logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 229 Entering Extended Passive Mode (|||3125|) 500 Illegal EPRT command 500 Illegal PORT command 421 Service not available, remote server timed out. Connection closed |
Na pierwszy rzut oka widać, że port połączenia pasywnego jest za niski. W związku z tym należy wychaszować w konfigu ProFTPd (/etc/proftpd/proftpd.conf) następującą linijkę:
| # PassivePorts 49152 65534 |
Oznacza ona, że połączenia pasywne powinny być nawiązywane na portach od 49152 do 65534.
Jednak to nie wszystko, ponieważ firewall okazał się zbyt szczelny, a samo puszczenie ruchu na porcie 21 domyślnie wykożystywanym przez ftp nie wystarczy. Za pomocą następującego polecenia należy dodać do iptables regułę:
| iptables -A INPUT -p tcp -m tcp –dport 49152:65534 –syn -j ACCEPT |
Wpis ten zezwoli na na ruch po wskazanych portach, przy czym będą one zamknięte.
Dokonanie tych dwuch krótkich modyfikacji w konfiguracji systemu sprawiło, że kolega może się cieszyć własnym ftp na swoim serwerze :)