original in de Mario M. Knopf
de to en Jürgen Pohl
en to pl B.J.F. Stobiecki
Mario lubi się zajmować Linuksem, sieciami i innymi tematami związanymi z bezpieczeństwem. W wolnych chwilach zajmuje się dwiema witrynami: neo5k.org i linuxwallpapers.de.
FTP używa protokołu TCP (Transmission Control Protocol) jako kanału transmisji, co zapewnia przyjście danych dla odbiorcy. W związku z tym nie ma potrzeby, aby FTP zajmował się kwestią utraty pakietów, bądź kontroli błędów podczas przesyłu. Mówiąc prosto TCP upewnia się, że każdy pakiet przyjdzie tylko raz - bez błędów i we właściwej kolejności.
Przesyłanie danych dzieli się na trzy różne typy, gdzie zakończenie trybu stream (strumieniowy) oznacza się markerem EOF (koniec pliku), zaś dwa pozostałe oznacza się przez EOR (koniec rekordu).
Dodatkowo są dwa tryby przesyłu:
Tryb ASCII jest używany do przesyłania plików tekstowych, zaś tryb binarny jest używany do przesyłania programów i podobnych danych. Użytkownik nie musi wybierać ręcznie trybu, gdyż obecne klienty FTP rozpoznają typ pliku, który ma być przesyłany.
Ponieważ uwierzytelnianie użytkownika i hasła nie jest szyfrowane to należy zwrócić uwagę, iż jest to potencjalne zagrożenie bezpieczeństwa. Jest to powód do zastanowienia się nad bezpieczeństwem FTP. Z tego powodu w październiku 1997 roku opublikowano RFC 2228[2], które opisywało ulepszenie bezpieczeństwa dla protokołu FTP.
Nazwa vsftpd oznacza "bardzo bezpieczny FTPd", co stanowi jeden z głównych założeń jego twórcy, Chrisa Evansa. Od samego początku tworzenia i projektowanie tego serwera wysokie bezpieczeństwo stanowiło główny człon działania.
Jednym z przykładów jest fakt, iż vsftpd operuje w trybie chroot, co oznacza, że program (w tym przypadku vsftpd) ma przydzielony nowy katalog root. Dzięki temu nie może on uzyskać dostępu do programów znajdujących się na zewnątrz tego katalogu - jest tak jakby 'zamknięty'. W przypadku włamania się na taki serwer, potencjalny agresor byłby odizolowany od reszty systemu i nie pozwoliłoby to na rozszerzenie wymiaru szkód. Więcej informacji na temat chroot znajduje się w artykule pod odnośnikiem [3]. Artykuł[4] jest zalecany dla tych, którzy są zainteresowani mechanizmem bezpieczeństwa vsftpd
Z wieloma cechami, które są wymagane dla bezpieczeństwa usługi serwerów FTP, vsftpd znacznie się wybija nad innymi serwerami. WU-FTPD[5] może być tutaj wymienione jako negatywny przykład z powodu wielu luk w jego bezpieczeństwie wykrytych na przedziale wielu lat.
Po zdobyciu źródeł i odpakowaniu tar, przechodzimy do utworzonego katalogu i uruchamiamy make. Oto przykład wymaganych poleceń:
neo5k@phobos> tar xzvf
vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make
neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp
neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp
neo5k@phobos> make install
Strony man i nasz program powinien być teraz skopiowane do właściwego miejsca w systemie danych. W przypadku nieprzewidzianych komplikacji ręczne kopiowanie plików może załatwić sprawę.neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8
neo5k@phobos> cp vsftpd.conf /etc
# Komentarz
# Zezwolić na anonimowy dostęp ?
YES/NO [tak/nie]
anonymous_enable=NO
# Zezwolić na anonimowy upload? YES/NO
anon_upload_enable=NO
# Zezwolić na anonimowe tworzenie katalogów?
YES/NO
anon_mkdir_write_enable=NO
# Zezwolić anonimowym użytkownikom na inne operacje zapisu
- jak zmiana nazwy i kasowanie? YES/NO
anon_other_write_enable=NO
# Zezwalać na zalogowanie się użytkownikom lokalnym? YES/NO
local_enable=YES
# Czy użytkownicy lokalnie powinni być 'zamknięci' w swoich katalogach?
YES/NO
chroot_local_user=YES
# Najwyższa dozwolona przepustowość w bitach na sekundę
dla użytkowników lokalnych. Domyślnie = 0 (bez ograniczeń)
local_max_rate=7200
# Ogólne zezwolenie na zapis? YES/NO
write_enable=YES
# Włączyć wiadomości katalogowe ? YES/NO
dirmessage_enable=YES
# Baner witający zalogowanego użytkownika.
ftpd_banner="Welcome to neo5k's FTP service."
# Włączyć monitoring? YES/NO
xferlog_enable=YES
# Monitorowanie wszystkich działalności FTP? YES/NO
# Ostrożnie! To może tworzyć ogromną ilość danych.
log_ftp_protocol=NO
# Potwierdzaj łączenie wyłącznie na port 20 (ftp data)
. YES/NO
connect_from_port_20=YES
# Czas po którym bezczynne sesje są rozłączane
idle_session_timeout=600
# Timeout dla danych
data_connection_timeout=120
# Dostęp przez Pluggable Authentication Modules
(PAM)
pam_service_name=vsftpd
# Samodzielna operacja? YES/NO - w zależności od trybu operacji
(inetd, xinetd, Standalone)
# Serwis FTP autora jest uruchamiany z xinetd, dlatego tutaj jest
NO.
listen=NO
neo5k@phobos> vi /etc/inetd.conf
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
# vsftp daemon. service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 192.168.1.3 banner_fail = /etc/vsftpd.busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST nice = 10 }
# # Samodzielna operacja? YES/NO
listen=YES
neo5k@phobos> /usr/sbin/vsftpd &
Jeśli ścieżka wyszukiwania została prawidłowo wpisana to następujące polecenie uruchomi serwer:neo5k@phobos> vsftpd &
Kolejnym wpisem możemy sprawdzić, czy ścieżka wyszukiwania została poprawnie wprowadzona:neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin
neo5k@phobos> ftp phobos Connected to phobos 220 "Welcome to neo5k's FTP service." Name (phobos:neo5k): testuser 331 Please specify the password. Password: 230 Login successful Remote system type is UNIX. Using binary mode to transfer files. ftp> ls -l 229 Entering Extended Passive Mode 150 Here comes the directory listing drwxr-xr-x 11 500 100 400 May 07 16:22 docs drwxr-xr-x 9 500 100 464 Feb 01 23:05 hlds drwxr-xr-x 39 500 100 4168 May 10 09:15 projects 226 Directory send OK. ftp>
Oczywiście, to wprowadzenie ukazuje jedynie ułamek środowiska danego przez vsftpd, gdyż ten serwer FTP daje nam wiele możliwości konfiguracyjnych. Zainteresowani głębszą analizą vsftpd powinni odwiedzić stronę projektu[6] i przejrzeć szczegółową dokumentację.