Vsftpd w Slackware
Serwer o nazwie Vsftp jest uważany za bezpieczny i dlatego postanowiłem go zainstalować. Uruchamianie demona jest możliwe na dwa sposoby. W pierwszym bezpośrednim należy dopisać do /etc/rc.d/rc.local linię o treści /usr/sbin/vsftpd &, co uruchomi go przy starcie.
W drugim uruchomienie następuje za pomoca demona inetd. W jego pliku konfiguracyjnym /etc/inetd.conf należy odhaszować linię o treści ftp stream tcp nowait root /usr/sbin/tcpd proftpd. Następnie należy przeładować demona poleceniem /etc/rc.d/rc.inetd restart.
Jeżeli mamy firewalla to musimy odblokować porty 20, 21 tcp i udp, dla input, output i forward oraz załadować do niego moduł ftp.
1) W katalogu domowym mam usera vsftp o grupie vsftp, dla którego nie mam przypisanej żadnej powłoki i dla którego założyłem hasło. W pliku /etc/shells należy dopisać linię o treści /bin/false. Ftp ma być tylko dla mnie na login i hasło, a więc nie mam konta dla anonimowych użytkowników. Plik konfiguracyjny /etc/vsftpd.conf może mieć postać:
#serwer anonimowy
anonymous_enable=NO
#praca w tle
background=YES
#dostęp do powłoki
check_shell=NO
#praca tylko w obrębie katalogu /home/vsftp
chroot_local_user=YES
#połączenie na porcie
connect_from_port_20=YES
#na jak długo może stanąć transfer danych
data_connection_timeout=120
#plik z tekstem powitalnym
dirmessage_enable=YES
#czas jak długo użytkownik może być nieaktywny
idle_session_timeout=600
#uruchamianie z inetd=NO, bezpośrednie=YES
listen=NO
#port, na którym serwer nasłuchuje
listen_port=21
#pozwolenie na logowanie się dla lokalnych userów
local_enable=YES
#chown dla plików
local_umask=022
#zezwolenie na rekursje
ls_recurse_enable=YES
#maksymalna liczba klientów połaczonych
max_clients=30
#maksymalna liczba klientów z jednego numeru IP
max_per_ip=6
#pliki na serwerze należą do usera vsftp
nopriv_user=vsftp
#pusty katalog dla chroota
secure_chroot_dir=/usr/share/empty
#NO=lista uprawnionych lub YES=lista zabronionych
userlist_deny=NO
#czy jest lista dostępu dla userów
userlist_enable=YES
#ściezka do listy dostępu dla userów
userlist_file=/etc/vsftpd_userlist
#zezwalam na zapis w katalogu /home/vsftp
write_enable=YES
#logowanie włączone
xferlog_enable=YES
#plik logu
xferlog_file=/var/log/vsftpd.log
#format logu
xferlog_std_format=YES
Jeżeli utworzyliśmy dużą liczbę użytkowników, ale logować wolno się tylko jednemu lub kilku, to prościej będzie, aby plik /etc/vsftpd_userlist zawierał userów, którzy mogą się logowac do swoich kont. Są oni umieszczeni jeden pod drugim. Na przykład plik ma postać:
vsftp
#andrzej
#ewa
Na konto vsftp dostajemy się po wydaniu polecenia ftp://vsftp@nazwa.domenowa_lub_IP.
2) Jeżeli serwer jest np. zasobem szkolnym, to musi być skonfigurowany jako anonimowy (/home/ftp) i dla kont wszystkich userów w systemie (/home/andrzej, /home/ewa...). Plik konfiguracyjny może mieć postać:
#pozwalanie na tworzenie nowych katalogów
anon_mkdir_write_enable=NO
#pozwolenie na modyfikowanie, nadpisywanie, skasowanie i zmienie nazwy
anon_other_write_enable=NO
#zezwalanie na upload plików
anon_upload_enable=NO
#pobieranie plików o prawach do odczytu
anon_world_readable_only=YES
#serwer anonimowy
anonymous_enable=YES
#praca w tle
background=YES
#dostęp do powłoki
check_shell=NO
#praca tylko w obrębie katalogu /home/ftp
chroot_local_user=YES
#połączenie na porcie
connect_from_port_20=YES
#timeout dla danych
data_connection_timeout=120
#plik z tekstem powitalnym
dirmessage_enable=YES
#user anonimowego ftp
ftp_username=ftp
#czas jak długo użytkownik może być nieaktywny
idle_session_timeout=600
#uruchamianie z inetd=NO, bezpośrednie=YES
listen=NO
#port, na którym serwer nasłuchuje
listen_port=21
#pozwolenie na logowanie się dla lokalnych userów
local_enable=YES
#chown dla plików
anon_umask=022
#zezwolenie na rekursje
ls_recurse_enable=YES
#maksymalna liczba klientów połączonych
max_clients=30
#maksymalna liczba klientów z jednego numeru IP
max_per_ip=6
#logowanie bez hasła
no_anon_password=NO
#pliki na serwerze należą do usera ftp
nopriv_user=ftp
#pusty katalog dla chroota
secure_chroot_dir=/usr/share/empty
#NO=lista uprawnionych lub YES=lista zabronionych
userlist_deny=NO
#czy jest lista dostępu dla userów
userlist_enable=YES
#ściezka do listy dostępu dla userów
userlist_file=/etc/vsftpd_userlist
#logowanie włączone
xferlog_enable=YES
#plik logu
xferlog_file=/var/log/vsftpd.log
#format logu
xferlog_std_format=YES
W takim przypadku na konta userów dostajemy sie po wydaniu polecenia ftp://user@nazwa.domenowa_lub_IP (loginu i hasła), a na konto anonimowe (/home/ftp) po wpisaniu ftp://nazwa.domenowa_lub_IP
Mój serwer jest za firewallem i tryb aktywny połączenia nie działał (porty 20, 21). Musiałem więc przestawić serwer do pracy pasywnej, która wymaga portów 21 i np. 10000:10500. Dopisałem więc do pliku vsftpd.conf następujące wpisy:
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10500
Dodatkowo do firewalla w sekcji INPUT musiałem dopisać:
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 10000:10500 -j ACCEPT
do góry 2006.02.15