Very Secure FTP Daemon (Čeština)
vsftpd (Very Secure FTP Daemon) je lehký, stabilní a bezpečný FTP server pro UNIX-like systémy.
Instalace
Vsftpd je začleněn do oficiálního repozitáře. Instalovat můžete např. pomocí utility pacman:
# pacman -S vsftpd
Připojení povolíte modifikací souboru /etc/hosts.allow
:
# Povolit všechna připojení vsftpd: ALL # Omezit na určený rozsah IP adres vsftpd: 10.0.0.0/255.255.255.0
Server můžete spustit tímto skriptem:
# /etc/rc.d/vsftpd start
Pokud chcete spustit vsftpd při startu počítače, přidejte ho do pole DAEMONS v souboru /etc/rc.conf
.
Pokud chcete použít vsftpd s xinetd následujte postup napsaný níže.
Konfigurace
Většiny nastavení docílíte editací souboru /etc/vsftpd.conf
. Soubor je dobře zdokumentovaný, a proto tato sekce poukazuje pouze na některé důležité změny. Pro všechny možnosti a dokumentaci můžete použít man vsftpd.conf (5).
Povolení uploadu
Pokud chcete povolit změny na souborovém systému, jako například při uploadu, WRITE_ENABLE
musíte nastavit na YES v souboru /etc/vsftpd.conf
:
write_enable=YES
Přihlašování lokálních uživatelů
Pro povolení přihlašování uživatelů v souboru /etc/passwd
nastavte tento řádek v souboru /etc/vsftpd.conf
:
local_enable=YES
Anonymní přihlašování
Tyto řádky v souboru /etc/vsftpd.conf
určují, zda se anonymní uživatelé mohou přihlásit:
anonymous_enable=YES # Povolí anonymní přihlášení no_anon_password=YES # Nevyžadovat heslo k anonymnímu přihlášení anon_max_rate=30000 # Maximální rychlost přenosu anonymními uživateli v bytech za sekundu
Prostředí chroot
Je možné nastavit prostředí chroot, které uživatelům zamezí opouštění jejich domovského adresáře. Pro povolení zapište následující řádky do souboru /etc/vsftpd.conf
:
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Proměnná chroot_list_file
udává soubor se seznamem uživatelů, kteří jsou uzavřeni do prostředí chroot.
Pro ještě přísnější nastavení můžete použít tyto řádky:
chroot_local_user=YES
Toto nastavení v základu uzavře lokální uživatele fo prostředí chroot. V tomto případě, soubor udaný proměnnou chroot_list_file
obsahuje seznam uživatelů, kteří nejsou uzavřeni do prostředí chroot.
Zamezení přihlašování uživatelů
Je možné zamezit uživatelům přístup k FTP serveru přidáním 2 řádek do souboru /etc/vsftpd.conf
:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list
chroot_list_file
nyní určuje uživatele, kteří se nesmí přihlásit.
Pokud chcete naopak pouze některým uživatelům povolit přístup, přidejte řádek:
userlist_deny=NO
Soubor určený na řádku chroot_list_file
pak obsahuje uřivatele, kteří se mohou přihlásit.
Omezení připojení
Můžete omezit rychlost přenosu dat, počet klientů a počet připojení na jednu IP adresu pro lokální uživatele, přidáním těchto řádek do souboru /etc/vsftpd.conf
:
local_max_rate=1000000 # Maximální rychlost přenosu dat v bytech za sekundu max_clients=50 # Maximální počet klientů, kteří mohou být připojeni max_per_ip=2 # Maximální počet připojení na jednu IP adresu
Použití xinetd
Pokud chcete použít vsftpd s xinetd, přidejte následující řádky do souboru /etc/xinetd.d/vsftpd
:
service ftp { socket_type = stream wait = no user = root server = /usr/sbin/vsftpd log_on_success += HOST DURATION log_on_failure += HOST disable = no }
Tyto volby by měly být nastaveny v souboru /etc/vsftpd.conf
:
tcp_wrappers=YES # Použít tcp_wrappers ke správě připojení. Poté povolit v hosts.allow pam_service_name=vsftpd
Poté se ujistěte, že je vsftpd povolen pro IP adresy, které se mají připojovat k serveru, v souboru /etc/hosts.allow
:
vsftpd: ALL
Nakonec přidejte xinetd do pole DAEMONS v souboru /etc/rc.conf
. Není třeba přidávat vsftpd, neboť bude spuštěn utilitou xinetd kdykoliv bude třeba.
Pokud při připojování k serveru dostáváte chybová hlášení jako toto:
500 OOPS: cap_set_proc
Je třeba přidat capability do pole MODULES= v souboru /etc/rc.conf
.
Po přejití na verzi 2.1.0 můžete dostávát během připojování chybová hlášení jako toto:
500 OOPS: could not bind listening IPv4 socket
V předešlých verzích stačilo nechat tyto řádky zakomentované:
# Toto použijte k nastavení vsftpd do samostatného módu nebo vsftpd bude fungovat s (x)inetd # listen=YES
V této verzi, a nejspíše i v budoucích, je třeba explicitně nastavit vsftpd, aby neběžel v samostatném módu:
# Toto použijte k nastavení vsftpd do samostatného módu nebo vsftpd bude fungovat s (x)inetd listen=NO
Tipy a triky
PAM s virtuálními uživatelskými účty
Používání virtuálních uživatelů přináší výhodu v nevyžadování reálného uživatelského účtu v systému. Keeping the environment in a container is of course a more secure option.
Pro vytvoření databáze uživatelů, je nejdříve třeba vytvořit jednoduchý textový soubor, jako například tento:
uživatel1 heslo1 uživatel2 heslo2
Vložte kolik virtuálních uživatelů potřebujete, jen je třeba zachovat strukturu souboru. Seznam uložte jako logins.txt; na názvu souboru nezáleží. Další krok závisí na databázovém systému Berkeley, který je zahrnutý v základním systému Arch. Jako uživatel root vytvořte databázi ze souboru login.txt (nebo jak jste ho pojmenovali):
# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
Je vhodné omezit oprávnění k nově vzniklému souboru vsftpd_login.db
:
# chmod 600 /etc/vsftpd_login.db
rm logins.txt
.Nyní je třeba zajistit aby PAM byl schopný uživatele identifikovat podle vsftpd_login.db. K docílení tohoto stavu je třeba vytvořit soubor s názvem ftp v adresáři /etc/pam.d/
, který obsahuje tyto volby:
auth required pam_userdb.so db=/etc/vsftpd_login crypt=hash account required pam_userdb.so db=/etc/vsftpd_login crypt=hash
Dále je třeba vytvořit domovské adresáře pro virtuální uživatele. Pro příklad můžete použít adresář /srv/ftp
pro hosting dat virtuálních uživatelů. Tento příklad také respektuje základní adresářovou strukturu systému Arch. Nejdříve tedy vytvořte uživatele virtual a učiňte /srv/ftp
jeho domovským adresářem:
# useradd -d /srv/ftp virtual
Učiňte uživatele virtual vlastníkem:
# chown virtual:virtual /srv/ftp
Nastavte vsftpd, aby využíval právě vytvořené prostředí, v souboru /etc/vsftpd.conf. Toto je nezbytné nastavení, které omezí přístup pouze na virtuální uživatele, kteří se boudou moci přihlásit pod svým uživatelským jménem a heslem a omezí jejich přístup pouze na adresář /srv/ftp
:
anonymous_enable=NO local_enable=YES chroot_local_user=YES guest_enable=YES guest_username=virtual virtual_use_local_privs=YES
Pokud je použita metoda, kdy xinetd spouští službu, vsftpd by měl povolit přístup pouze po přihlášení kombinací uživatelského jména a hesla, která byla definována v databázi.
Přidání soukromých adresářů pro virtuální uživatelské účty
Nejdříve vytvořte složky pro uživatele:
# mkdir /srv/ftp/user1 # mkdir /srv/ftp/user2 # chown virtual:virtual /srv/ftp/user?/
Poté přidejte následující řádky do souboru /etc/vsftpd.conf
:
local_root=/srv/ftp/$USER user_sub_token=$USER