vsftpd - Wprowadzenie do Bardzo Bezpiecznego FTPd

ArticleCategory:

System Administration

AuthorImage:[Ein Bild von Dir]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage

original in de Mario M. Knopf

de to en Jürgen Pohl

en to pl B.J.F. Stobiecki

AboutTheAuthor:

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.

Abstract:

Ten artyku� jest wprowadzeniem do "Very Secure FTP Daemon" (Bardzo Bezpieczny Daemon FTP). Zaczn� od og�lnego opisu FTP i vsftpd. Nast�pnie spojrzymy na instalacj�, konfiguracj� i opcje startowe vsftpd. Zako�czymy kr�tkim testem funkcji.

ArticleIllustration:[Das Titelbild des Artikels]

vsftp

ArticleBody:[The main part of the article]

Wprowadzenie

Przeznaczeniem protoko�u File Transfer Protocol (Protok� Przesy�ania Plik�w) jest niezale�ne od platformy przenoszenie danych przez internet, bazuje on na architekturze klient/serwer. RFC 959[1] nakazuje FTP by� podzielonym na dwa r�ne kana�y; jeden dla danych (port TCP 20), a drugi dla kontroli (port TCP 21). Na kanale kontrolnym obie strony (serwer i klient) wymieniaj� komendy dla inicjowania przesy�u danych. Po��czenie FTP sk�ada si� z czterech krok�w:

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.

vsftpd

vsftpd stanowi serwer dla system�w zbie�nych z UNIX, dzia�a na takich platformach jak Linux, *BSD, Solaris, HP-UX, IRIX. Wspiera wiele cech, kt�re s� zwykle pomijane w innych serwerach FTP. Niekt�re z nich to:

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.

Instalacja

Instalacja vsftpd jest do�� prosta, gdy� wiele pakiet�w RPM mo�e by� znalezionych w ka�dej z g��wnych dystrybucji (bazuj�cych na dystrybucji Red Hat, mo�na si� posi�kowa� DEB na dystrybucji wywodz�cych si� od Debian, b�d� konwertowa� je za pomoc� pakietu alien; przyp. t�um.), w wielu przypadkach jest on zainstalowany domy�lnie. W przeciwnym razie mo�na skorzysta� ze �r�de� znajduj�cych si� na [6] i zainstalowa� program r�cznie.

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

Przed tym sprawdzamy czy istnieje u�ytkownik "nobody" i katalog "/usr/share/empty", i tworzymy go, je�li nie istnieje. Je�li zamierzamy udost�pnia� dane u�ytkownikom anonimowym, u�ytkownik "ftp" z katalogiem domowym "/var/ftp" jest wymagany. Osi�gniemy to nast�puj�cymi poleceniami:

neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp

Z powod�w bezpiecze�stwa katalog "/vat/ftp" nie powinien nale�e� do u�ytkownika "ftp", ani nie powinni�my mie� do niego uprawnie� do zapisu. Nast�puj�cymi dwoma poleceniami mo�emy zmieni� w�a�ciciela i odebra� uprawnienia do zapisu od innych u�ytkownik�w:

neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp

Po spe�nieniu tych wymog�w mo�emy zainstalowa� vsftpd:

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

Poniewa� przyk�ad pliku konfiguracyjnego nie zosta� w tym miejscu skopiowany - co u�atwi nam wprowadzenie - potrzebujemy kolejnego wpisu:

neo5k@phobos> cp vsftpd.conf /etc

Konfiguracja

Plik konfiguracyjny znajduje si� na "/etc/vsftpd.conf. Jak u wi�kszo�ci plik�w konfiguracyjnych komentarze s� oznaczane znakiem hash (#).

# Komentarz

Przyk�adowa konfiguracja wygl�da�aby tak:

# 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

Uruchamianie us�ugi FTP

vsftpd mo�e operowa� w trzech r�nych sposobach. Przez inetd, xinetd, b�d� samodzielnym (standalone).

inetd

Je�li us�uga FTP ma dzia�a� z inetd to otwieramy plik konfiguracyjny "/etc/inetd.conf" przez edytor:

neo5k@phobos> vi /etc/inetd.conf

Szukamy linijek odnosz�cych si� do us�ug FTP i usuwamy znacznik komentuj�cy przed wpisem vsftpd. Je�li nie ma takiego wpisu to mo�emy go wprowadzi�. Nast�pnie restartujemy inetd. Wpis powinien wygl�da� m.w. tak:
# ftp   stream   tcp   nowait   root   /usr/sbin/tcpd   in.ftpd
ftp   stream   tcp   nowait   root   /usr/sbin/tcpd   vsftpd

xinetd

Poleca si� uruchamianie vsftpd przez xinetd, kt�re jest bardziej aktualne ni� inetd. Niekt�re z uaktualnie� to rejestrowanie i kontrola dost�pu, przywi�zywanie us�ugi do odpowiedniego interfejsu sieciowego itp.. Bardzo dobrym wprowadzeniem do xinetd mo�na znale�� pod [7]. Po modyfikacji konieczny jest restart xinetd. Konfiguracja dla xinetd mog�aby wygl�da� tak:
# 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
}
    

Operowanie w trybie Standalone

Istnieje tak�e mo�liwo�� pracy vsftpd w trybie samodzielnym (standalone). Do tego otwieramy zn�w plik "/etc/vsftpd.conf i wprowadzamy nast�puj�ce zmiany:

# # Samodzielna operacja? YES/NO
listen=YES

Po tym wpisie serwer mo�e by� uruchomiony w ten spos�b:

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

W trybie samodzielnym musimy, oczywi�cie, uwa�a�, aby vsftpd nie by� uruchamiany z inetd b�d� xinetd.

Test Dzia�ania

Po pomy�lnej instalacji i konfiguracji mo�emy po raz pierwszy uzyska� dost�p do naszego serwera FTP.
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>

Wnioski

Jak zauwa�yli�my vsftpf nie jest trudny w instalacji b�d� konfiguracji. Oferuje on wiele cech i wysoki stopie� bezpiecze�stwa.

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�.

Linki

[1] ftp://ftp.rfc-editor.org/in-notes/rfc959.txt [RFC 959 - File Transfer Protocol]
[2] ftp://ftp.rfc-editor.org/in-notes/rfc2228.txt [RFC 2228 - FTP Security Extensions]
[3] linuxfocus.org: article225, January2002 [chroot]
[4] http://vsftpd.beasts.org/DESIGN [Security vsftpd]
[5] http://www.wu-ftpd.org/ [WU-FTPD]
[6] http://www.vsftpd.beasts.org/ [Home of vsftpd]
[7] linuxfocus.org: article 175, November2000 [xinetd]