|
Strona 1 z 3
1. Czym jest vsftpd ?
"vsftpd - probably the most secure and fastest FTP server
for UNIX-like systems"
Jest to prawdopodobnie najbezpieczniejszy i najszybszy
UNIX'owy serwer FTP. Jego zaletami są m.in. prostota konfiguracji (bardzo szybko
możemy postawić bardzo wydajny i bezpieczny serwer FTP), szybkość (transfer jest
o wiele większy niż w przypadku innych serwerów ftp). Dodatkowo warto wspomnieć,
że w jego kodzie nie znaleziono "błędów krytycznych". Używany jest m.in. na
serwerach ftp.redhat.com, ftp.openbsd.org, ftp.suse.com, ftp.ximian.com,
ftp.kde.org, ftp.debian.org, ftp.gnome.org, ftp.gnu.org i inne, co potwierdza
tezę, że vsftpd jest zaufanym i dojrzałym narzędziem. Sama nazwa mówi za siebie
- "vs" jest skrótem od Very Secure. Jeżli chcesz mieć bezpieczny, wydajny i
stabilny serwer FTP, powiniene. spróbować vsftpd. Opisana tu instalacja i
konfiguracja tyczy się systemu FreeBSD, ale jest bardzo podobna w przypadku
innych UNIX'owych systemów.
2. Instalacja
Proponowałbym zaopatrzenie się w najnowszą wersję źródeł demona, którą
powinieneś znaleźć na
stronie http://vsftpd.beasts.org/. Możesz także użyć do jego instalacji portów, wydajemy więc
poniższe polecenia:
# cd /usr/ports/ftp/vsftpd
# make build && make install && make clean
Gdy vsftpd zainstalował się bez żadnych problemów, to możemy teraz przejść do jego konfiguracji,
przed tym jednak sprawdź jeszcze czy nie masz już uruchomionego jakiegoś innego
serwera FTP, jeżeli tak - wyłącz go.
Wypadało by też utworzyć nowego użytkownika oraz grupę, aby serwer nie był uruchamiany z poziomu root'a (ze względu na bezpieczeństwo). Wydajemy więc następujące polecenia:
# pw groupadd -g 75 -n ftp
# pw useradd -u 75 -g ftp -c "FTP Service" -d /home/ftp -m -s /sbin/nologin -n ftp
Będziemy też potrzebować pustego katalogu, do którego użytkownik `ftp` nie będzie miał prawa dostępu. Do czego on się przyda opiszę poniżej. Niech tym katalogiem będzie /var/chroot/vsftpd.
Aby utworzyć ten katalog wydajemy następujące polecenie:
# mkdir /var/chroot/vsftpd/
Po wykonaniu powyższych czynności możemy przejść do konfiguracji, która jak już opisałem
wcześniej jest bardzo prosta.
3. Konfiguracja
Format, w jakim są zapisywane opcje konfiguracyjne wygląda następująco:
opcja=wartość
Zauważ, że nie ma spacji pomiędzy znakiem `=`, a nazwą opcji oraz wartości. Takiej koncepcji należy się trzymać przy konfigurowaniu vsftpd.
Aby wszystko w naszym systemie było w miarę uporządkowane, proponuję już na początku utworzyć katalog `vsftpd`, w którym
będą znajdować się wszystkie potrzebne nam pliki konfiguracyjne (tj. userlisty, bannery) o tym w dalszej
części artykułu. Na razie zajmiemy się konfiguracją. Edytujmy więc plik vsftpd.conf.
(np. edytorem VI):
# mkdir /usr/local/etc/vsftpd
# vi /usr/local/etc/vsftpd.conf
Rozdział ten podzieliłem na 2 podrozdziały, w których opiszę kolejno serwer do zastosowań "domowych" oraz serwer dla anonimowych użytkowników".
3.1. Podstawowa konfiguracja
Poniżej został przedstawiony plik zawierający podstawową konfigurację vsftpd, ze względów bezpieczeństwa serwera zabronimy użytkownikom poruszania się po całym systemie. Inaczej mówiąc ograniczymy
możliwość poruszania się do jego katalogu domowego. Oto przykładowa zawartość takiego pliku:
--- vsftpd.conf ---
# Ustawiamy tutaj, z poziomu jakiego użytkownika ma być uruchamiany nasz serwer:
nopriv_user=ftp
# Uruchomienie serwera w trybie standalone. Jeśli chcemy aby nasz vsftpd był
# uruchamiany w trybie inetd, rezygnujemy z tej opcji, ponieważ domyślnie jest
# ona ustawiona na "NO": l
isten=YES
# Definiujemy, tutaj na jakim porcie ma nasłuchiwać serwer (domyślnie jest to port 21):
listen_port=21
# Zabronienie logowania anonimowych użytkowników:
anonymous_enable=NO
# Zezwolenie logowania dla lokalnych użytkowników
local_enable=YES
# Pozwolenie do zapisu we własnym katalogu
write_enable=YES
# Umask (022 jest używany przez większość serwerów ftp)
local_umask=022
# Włączenie logowania
xferlog_enable=YES
# Ścieżka do pliku z logami
xferlog_file=/var/log/xferlog.log
# Logi w formacie xferlog (jest wykorzystywany m.in. przez wu-ftpd)
xferlog_std_format=YES
# Maksymalna liczba połączonych użytkowników
max_clients=5
# Maksymalna liczba użytkowników mogących się połączyć z tego samego adresu IP
max_per_ip=2
# Banner, który będzie wyświetlany przy każdym połączeniu z serwerem
ftpd_banner=Prywatny serwer FTP - Powered by: vsftpd
# Userzy nie mogą wychodzić poza swój katalog domowy
chroot_local_user=YES
# Ustawiamy katalog dla chroot'a:
secure_chroot_dir=/var/chroot/vsftpd
# Lista użytkowników, którzy mogą wychodzić poza swój katalog domowy,
# musisz utworzyć ten plik.
# np: touch /var/chroot/vsftpd/vsftpd.chroot_list
# Dodanie użytkownika odbywa się poprzez dopisanie nazwy usera do tego pliku.
# np: echo "tomek" >> /var/chroot/vsftpd/vsftpd.chroot_list
chroot_list_enable=YES
chroot_list_file=/var/chroot/vsftpd/vsftpd.chroot_list
|
--- end of vsftpd.conf ---
Zapisujemy ustawienia (ESC + :wq). Jeśli to nam na razie wystarczy, przechodzimy do kolejnego rozdziału dotyczącego uruchamiania vsftpd.
Jeśli chcemy utworzyć drugi serwer, który będzie przeznaczony tylko i wyłącznie dla anonimowych użytkowników - czytamy dalej.
3.2. Konfiguracja ftp dla anonimowych użytkowników
Utworzymy sobie najpierw drugi plik konfiguracyjny, który będzie nosił nazwę np. `vsftpd2.conf`:
# touch /usr/local/etc/vsftpd/anonymous.conf
# vi /usr/local/etc/vsftpd/anonymous.conf
Następnie edytujemy go i ustawiamy w nim następujące opcje:
--- anonymous.conf ---
# Nazwa użytkownika, z pod którego będziemy uruchamiali vsftpd
nopriv_user=ftp
# Uruchamianie w trybie standalone
listen=YES
# Port, na którym będzie nasłuchiwał nasz anonimowy ftp
# (ustawiamy tą wartość według własnych potrzeb):
listen_port=2121
# Nazwa użytkownika, który będzie odpowiedzialny za obsługę anonimowego ftp
# Jego katalog domowy, będzie jednocześnie katalogiem domowym dla anonimowych użytkowników:
ftp_username=ftp
# Katalog dla chroot'a:
secure_chroot_dir=/var/chroot/vsftpd
# Zabraniamy logowanie na lokalnych użytkowników:
local_enable=NO
# Zezwalamy na logowanie się na anonimowego użytkownika (anonymous):
anonymous_enable=YES
# Serwer nie będzie pytał o hasło, podczas logowania na anonymous:
no_anon_password=YES
# Pozwalamy na download plików, które będą miały ustawione prawa do odczytu (readable):
anon_world_readable_only=YES
# Zabraniamy na upload plików:
anon_upload_enable=NO
# Ukrywamy prawdziwych użytkowników oraz grup dla plików lub katalogów
# (vsftpd zamieni je na nazwy użytkownika odpowiedzialnego za anonimowy ftp):
hide_ids=YES
# Ustawiamy komunikat powitalny:
ftpd_banner=Anonimowy serwer FTP - Powered by: vsftpd
# Logowanie w standardzie vsftpd:
xferlog_enable=YES
xferlog_std_format=NO
vsftpd_log_file=/var/log/vsftpd.log
|
--- end of anonymous.conf ---
Tak skonfigurowany serwer jest gotowy do uruchomienia, jak to zrobić opisane jest poniżej w kolejnym rozdziale.
Oczywiście możesz powyższy przykład zmodyfikować według własnych upodobań. Jest jeszcze jedna ważna rzecz, o której warto wspomnieć przy anonimowym serwerze ftp, mianowicie sprawa uploadu plików. Aby użytkownicy mogli wysyłać pliki na nasz serwer musimy utworzyć nowy katalog np. `upload` i nadać mu odpowiednie prawa do odczytu i zapisu. Katalog powinien znajdować się w katalogu domowym użytkownika ftp (odpowiadającego za anonimowy serwer ftp):
# mkdir /home/ftp/upload
# chown ftp:ftp /home/ftp/upload
Następnie do pliku anonymous.conf dodajemy lub modyfikujemy następujące opcje:
# Pozwolenie do zapisu w domowym katalogu:
write_enable=YES
# Zezwolenie do uploadu plików:
anon_upload_enable=YES
# Pozwolenie anonimowemu użytkownikowi do tworzenia nowych katalogów:
anon_mkdir_write_enable=YES
# Pozwolenie do modyfikacji plików/katalogów (nadpisywanie/kasowanie/zmiana nazwy):
anon_other_write_enable=YES
# Domyślny umask dla plików utworzonych przez użytkowników korzystających z anonimowego ftp:
anon_umask=022
|
Oczywiście korzystanie z powyższych opcji będzie możliwe jedynie w katalogu, który będzie zawierał odpowiednie prawa do zapisu w katalogu domowym użytkownika ftp.
Po zapoznaniu się i poprawnym skonfigurowaniu vsftpd zapraszam do przeczytania kolejnego rozdziału
poświęconemu uruchamianiu tego demona.
|