GNU/Linux >> Znalost Linux >  >> Debian

Jak nastavit vsftpd na Debianu

Vsftpd je zkratka Very Secure FTP Daemon:je to jeden z nejpoužívanějších ftp serverů na Linuxu a dalších unixových operačních systémech. Je to open source a je vydán pod licencí GPL a podporuje virtuální uživatele a SSL pro
šifrování dat. V tomto tutoriálu uvidíme, jak jej nainstalovat a nakonfigurovat v systému Linux.

V tomto tutoriálu se to naučíte :

  • Jak nainstalovat vsftpd na Debian 10
  • Jak nakonfigurovat vsftpd
  • Jak nastavit anonymní použití
  • Jak nastavit přihlášení s místními uživateli
  • Jak nastavit virtuální uživatele
  • Jak nastavit ufw, aby povolil příchozí provoz

Jak nastavit vsftpd na Debianu

Použité softwarové požadavky a konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém Debian 10 (Buster)
Software vsftpd, openssl, libpam-pwdfile
Jiné Kořenová oprávnění k instalaci a konfiguraci vsftpd
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo command
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Instalace

Vsftpd je k dispozici v oficiálních repozitářích Debianu, takže k jeho instalaci můžeme použít našeho oblíbeného správce balíčků; je to jen otázka synchronizace repozitářů a instalace balíčku. Obě věci lze provést
spuštěním následujících příkazů:

$ sudo apt-get update && sudo apt-get install vsftpd

Několik sekund a balíček se nainstaluje do našeho systému Debian. Instalační skripty obsažené v balíčku se také postarají o spuštění vsftpd služba automaticky, ale musíme pamatovat na restartování nebo opětovné načtení služby pokaždé, když změníme konfigurační soubor. Aby bylo možné používat virtuální uživatele Funkce poskytovaná vsftpd, musíme také nainstalovat další balíček:

$ sudo apt-get install libpam-pwdfile

Jeho použití uvidíme ve vyhrazené části tohoto tutoriálu.

Jakmile jsou potřebné balíčky nainstalovány, můžeme pokračovat dále a nakonfigurovat vsftpd:uvidíme, jak to udělat v další části tohoto tutoriálu.

Nastavení Vsftpd

Konfigurační soubor vsftpd je /etc/vsftpd.conf . Pokud jej otevřeme, můžeme vidět různé direktivy, které jsou v něm již obsaženy. Podívejme se, co je pro nejběžnější případy nejrelevantnější.

Povolit anonymní přihlášení

Neověřený přístup k serveru jako anonymní uživatelé je ve výchozím nastavení zakázán. Abychom to povolili, musíme použít anonymous_enable direktivu, která je v konfiguračním souboru umístěna na řádku 25 . Jediné, co musíme udělat, je nastavit jej na YES :
musí změnit pokyn na:

anonymous_enable=YES

Další direktivou, kterou možná budeme chtít změnit, je ta, která nám umožňuje nastavit adresář, ve kterém se vsftpd pokusí procházet po anonymním přístupu. Direktiva, která nám umožňuje toto nastavení ovládat, je anon_root . Řekněme, že chceme, aby měl anonymní uživatel přístup k /srv/ftp adresář ve výchozím nastavení bychom napsali:

anon_root=/srv/ftp

Všechna anonymní přihlášení jsou interně mapována na navrženého uživatele, kterým je ve výchozím nastavení ftp . Ke změně tohoto mapování musíme použít ftp_username a nastavte jej na jméno uživatele, na kterého chceme anonymní uživatele namapovat.

Ve výchozím nastavení nebude mít anonymní uživatel ze zjevných bezpečnostních důvodů povoleno nic psát na server. Pokud chcete toto chování změnit (nedoporučuje se), existuje několik možností, které je třeba změnit. Nejprve obecné write_enable direktiva musí být nastavena na YES . Tato směrnice je okomentována na řádku 31 konfiguračního souboru, takže vše, co musíte udělat, je odstranit komentář.

# Uncomment this to enable any form of FTP write command.
write_enable=YES

Jakmile je tato direktiva povolena, vše, co musíme udělat, je pracovat na dalších dvou možnostech:anon_upload_enable a anon_mkdir_write_enable . Když je první nastavení nastaveno na YES anonymní uživatel bude moci nahrát soubory, ale pouze v případě, že uživatel, na kterého je mapován (jak jsme řekli, standardně ftp), má oprávnění k zápisu do cílového adresáře. K aktivaci této možnosti stačí odstranit komentář z řádku 40 konfiguračního souboru:

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES

anon_mkdir_write_enable místo toho, když je nastavena na YES umožňuje anonymním uživatelům vytvářet nové adresáře na serveru za stejných podmínek, jaké jsme viděli výše (podkladový uživatel na serveru musí mít oprávnění k zápisu do nadřazeného adresáře). Direktiva se nachází na řádku 44 konfiguračního souboru:

# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES

Ještě jednou, protože proměnná je již nastavena na YES , aby to bylo relevantní, vše, co musíme udělat, je odstranit z něj komentář.

Umožnit anonymním uživatelům provádět i jiné druhy operací zápisu, jako je například přejmenování nebo smazání adresář, musíme použít jinou direktivu, která není přítomna v konfiguračním souboru, anon_other_write_enable a nastavte jej na YES pokud je výše uvedené chování naším požadovaným chováním:

anon_other_write_enable=YES

Ověřená přihlášení

Chcete-li uživatelům místního systému umožnit přístup k ftp serveru pomocí jejich systémového hesla, local_enable direktiva musí být nastavena na YES :toto je výchozí nastavení v systému Debian. Direktivu naleznete na řádku 28 démona
konfiguračního souboru:

# Uncomment this to allow local users to log in.
local_enable=YES

Ve výchozím nastavení, když se místní uživatel úspěšně autentizuje, bude mít svůj vlastní domovský adresář jako root. Je však možné určit alternativní počáteční bod pomocí local_root směrnice. Tato direktiva není v konfiguračním souboru přítomna, takže ji musíme přidat, pokud ji chceme použít. Chcete-li nastavit /srv/ftp adresář jako místní kořen, například bychom napsali:

local_root=/srv/ftp

Místní uživatelé Chroot

Jako bezpečnostní opatření je možné chrootovat každý ověřený uživatel ve svém vlastním domovském adresáři. K provedení tohoto úkolu musíme použít chroot_local_user směrnice:

chroot_local_user=YES

Když je tato funkce povolena, je možné určit seznam výjimek (seznam uživatelů, kteří by neměli být chrootováni) pomocí následujících direktiv:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

První direktiva je potřebná k aktivaci funkce, druhá k určení umístění souboru obsahujícího seznam výjimek . Pokud soubor ještě neexistuje, musí být vytvořen, jinak se přihlášení nezdaří.

Z bezpečnostních důvodů, když je uživatel chrootován, neměl by mít možnost zapisovat do adresáře nejvyšší úrovně chrootu. Pokud tomu tak je, v nejnovějších verzích vsftpd se uživatel nebude moci přihlásit a server odpoví následující zprávou:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Tento problém lze řešit v zásadě dvěma způsoby. První z nich samozřejmě spočívá v opravě oprávnění , odepření přístupu uživatele pro zápis do adresáře nejvyšší úrovně chrootu a ponechání mu zapisovat pouze do podadresářů.
Druhý způsob, jak problém vyřešit, pokud vás nezajímají možné bezpečnostní důsledky, je obejít toto omezení pomocí následující směrnice:

allow_writeable_chroot=YES

Když už mluvíme o oprávněních, je důležité mít na paměti, že výchozí umask pro místního uživatele je nastaven na 077 . Pokud je toto nastavení považováno za příliš omezující, je možné jej změnit pomocí local_umask směrnice. Tato směrnice je okomentována na řádku 35 konfiguračního souboru:

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022

Přihlaste se pomocí virtuálních uživatelů

Jedna příjemná funkce, kterou nabízí vsftpd, je možnost přihlášení pomocí virtuálních uživatelů . Virtuální uživatel je uživatel, který ve skutečnosti neexistuje v systému, ale pouze v kontextu aplikace sftpd. K aktivaci této funkce musíme použít následující direktivu:

guest_enable=YES

Když je funkce aktivní, všechna neanonymní přihlášení (tedy i skuteční/místní uživatelé) jsou mapována na uživatele zadaného pomocí guest_username direktiva, která je ve výchozím nastavení, jak jsme již viděli, ftp .

Dalším krokem je vytvoření souboru obsahujícího uživatelská jména a hesla virtuálních uživatelů. Pro vygenerování hashovaného hesla můžeme použít openssl a zadejte následující příkaz:

$ openssl passwd -1
Password:
Verifying - Password:
$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

heslo příkaz openssl se používá ke generování hashovaných hesel (md5). Ve výše uvedeném příkladu jsme byli požádáni o zahašování hesla a jeho potvrzení. Nakonec se vygeneruje hashované heslo a zobrazí se na obrazovce.

Uživatelské jméno spolu s heslem je nutné vložit do souboru, řekněme, že je to /etc/virtual_users.pwd , v následujícím formátu:

username:hashed_password

Za předpokladu, že se náš virtuální uživatel jmenuje „linuxconfig“, bychom napsali:

linuxconfig:$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

Operace se musí opakovat pro každého virtuálního uživatele, kterého chceme konfigurovat.

Nyní musíme vytvořit pam služba, kterou bude vsftpd používat k ověřování virtuálních uživatelů. Soubor pojmenujeme vsftpd_virtual a umístěte jej do /etc/pam.d adresář. Jeho obsah bude následující:

#%PAM-1.0
auth    required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.pwd
account required pam_permit.so

Jak vidíte, v prvním řádku jsme zadali cestu k souboru obsahujícímu uživatelské jméno a hesla virtuálních uživatelů. Vše, co nyní musíme udělat, je instruovat vsftpd, aby používal tuto „službu“ pam. Můžeme to udělat pomocí pam_service_name směrnice:

pam_service_name=vsftpd_virtual

V tomto okamžiku můžeme uložit konfigurační soubor, restartovat démona a ověřit, že jsme schopni se přihlásit pomocí virtuálního uživatele, kterého jsme právě vytvořili.

Povolení podpory SSL pro šifrování dat

Ve výchozím nastavení je podpora SSL na vsftpd zakázána, takže přenášená data nebudou šifrována. Pro aktivaci podpory SSL musíme použít následující direktivy umístěné na řádcích 149 na 151 konfiguračního souboru:

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES

První direktiva, rsa_cert_file se používá k označení cesty k certifikátu RSA, který se má použít pro připojení šifrovaná SSL. Druhý, rsa_private_key , místo toho se používá k určení umístění soukromého klíče RSA. Nakonec ssl_enable direktiva se používá k povolení použití šifrování SSL.

Příklad používá /etc/ssl/certs/ssl-cert-snakeoil.pem a /etc/ssl/private/ssl-cert-snakeoil.key soubory, ale téměř jistě chcete použít vyhrazený.

Určení rozsahu portů pro pasivní režim

Pasivní režim FTP je výchozím nastavením nové instalace vsftpd, ale pokud jej chceme explicitně povolit, můžeme použít následující direktivu:

# Set to NO if you want to disallow the PASV method of obtaining a data connection
# (passive mode). Default: YES
pasv_enable=YES

Když server pracuje v pasivním režimu , odešle klientovi IP adresu a port, na kterém by měl naslouchat pro připojení. Tyto porty jsou ve výchozím nastavení vybírány náhodně, ale protože na našem serveru musíme používat firewall, musíme vědět, na kterých portech bychom měli provoz povolit. Rozsah portů, které se mají použít, lze určit pomocí pasv_min_port a pasv_max_port direktivy, například:

# The minimum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling.
pasv_min_port=10090

# The maximum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling. Default: 0 (use any port)
pasv_max_port=10100

S následující konfigurací bude server používat řadu portů od 10090 na 10100 .

Nastavení brány firewall

Aby náš server vsftpd správně fungoval, musíme povolit provoz přes potřebné porty, některé musíme nastavit příslušná pravidla pro náš firewall. V tomto tutoriálu budu předpokládat použití ufw správce brány firewall (Uncomplicated Firewall).

První port, přes který chceme povolit provoz, je port 21 , což je standardní port používaný protokolem FTP:

$ sudo ufw allow in 21/tcp

Jako druhou věc musíme povolit příchozí provoz přes zadaný rozsah portů, který jsme nastavili v předchozí části. Pro specifikaci rozsahu portů můžeme spustit:

$ sudo ufw allow in 10090:10100/tcp

Závěry

V tomto článku jsme viděli, jak nainstalovat a nakonfigurovat vsftpd na Debian 10 Buster. Viděli jsme, jak nastavit anonymní použití a použití místních uživatelů a jak můžeme využít výhod virtuálních uživatelů funkce poskytovaná službou. Vzhledem k tomu, že FTP neposkytuje šifrování dat, viděli jsme, jak povolit podporu SSL a nakonec, jak nastavit bránu firewall tak, aby umožňovala příchozí provoz přes potřebné porty. Úplný seznam možných direktiv, které lze použít v konfiguračním souboru vsftpd, naleznete na vsftpd.conf manuálová stránka (VSFTPD.CONF(5)). Chcete vědět, jak programově pracovat s FTP serverem? Podívejte se na náš článek Jak se připojit k FTP serveru pomocí pythonu.


Debian
  1. Jak nainstalovat R na Debian 9

  2. Jak nastavit Rsyslog Server na Debianu 11

  3. Jak nastavit VSFTPD na CentOS 7.x?

  1. Jak nastavit FTP server s VSFTPD na Debianu 9

  2. Jak nainstalovat R na Debian 10

  3. Jak nastavit Rsyslog Server na Debian 11 (Bullseye)

  1. Jak nastavit Teampass Password Manager na Debianu 11

  2. Jak nastavit Symfony 4 na serveru Debian 9

  3. Jak nainstalovat vsftpd FTP server na Debian 11