[LinuxFocus-icon]
<--  | Strona G³ówna  | Mapa Serwisu  | Indeks  | Szukaj

Nowo¶ci | Archiwum | Linki | O Nas
[an error occurred while processing this directive]
[Photo of the Author]
Mario M. Knopf
<netzmeister/at/neo5k/dot/org>

O Autorze:

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.



T³umaczenie na jêzyk polski:
B.J.F. Stobiecki <bjfs/at\op.pl>

Zawarto¶æ:

 

vsftpd - Wprowadzenie do Bardzo Bezpiecznego FTPd

vsftp

Notka:

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.

_________________ _________________ _________________

 

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]

 

Dyskusja dotycz±ca tego artyku³u

Komentarze do dyskusji:
 Strona talkback 

<--, powrót na stronê g³ówn± tego wydania

Strona prowadzona przez redakcjê LinuxFocus
© Mario M. Knopf, FDL
LinuxFocus.org
t³umaczenie:
de --> -- : Mario M. Knopf <netzmeister/at/neo5k/dot/org>
de --> en: Jürgen Pohl <sept.sapins/at/verizon.net>
en --> pl: B.J.F. Stobiecki <bjfs/at\op.pl>

2004-07-07, generated by lfparser version 2.46