[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