GNU/Linux >> Znalost Linux >  >> Debian

Jak nakonfigurovat FTP server na Debian 9 Stretch Linux

Cíl

Cílem je nainstalovat a nakonfigurovat FTP server na Debian 9 Stretch Linux umožňující anonymní i lokální přístup uživatelů.

Verze operačního systému a softwaru

  • Operační systém: – Debian 9 Stretch
  • Software: – vsFTPd verze 3.0.3

Požadavky

Privilegovaný přístup k

Obtížnost

STŘEDNÍ

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 příkaz
  • $ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Pokyny

Následující tutoriál vysvětlí, jak nainstalovat a nakonfigurovat FTP server pomocí vsFTPd démon. Bude také diskutovat o různých konfiguracích umožňujících přístup pouze pro zápis nebo pro čtení anonymním uživatelům i místním uživatelům.

vsFTPd instalace

Začněme instalací serveru vsFPTd a FTP klienta:

# apt install vsftpd ftp

Ve výchozím nastavení je server vsFTPd nakonfigurován tak, aby umožňoval uživatelům systému přístup ke svým domovským adresářům s přístupem pouze pro čtení. Následuje výchozí konfigurační soubor vsFTPd /etc/vsftpd.conf :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

Jak již bylo zmíněno, výše uvedený konfigurační soubor udělí přístup pouze pro čtení každému systémovému uživateli uvedenému v /etc/passwd soubor. Použijte ftp a pokuste se připojit pomocí uživatelského jména a hesla kteréhokoli z uživatelů místního systému:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
550 Permission denied.

Pokud potřebujete přístup pouze pro čtení pro místní uživatele, jste hotovi.

Povolit uživateli přístup pro zápis

Chcete-li přidat přístup pro zápis pro všechny uživatele lokálního systému, odkomentujte nebo přidejte následující stanzu write_enable=YES . Nový konfigurační soubor se skládá z:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES

Dále restartujte vsFTPd:

# systemctl restart vsftpd

Proveďte nový test pomocí ftp příkaz pro potvrzení přístupu pro zápis:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 1000     1000            0 Jun 07 12:45 FILE.TXT
226 Directory send OK.

Povolit pouze konkrétní uživatele

V současné době náš FTP server umožňuje přístup každému systémovému uživateli definovanému v /etc/passwd soubor. Aby se mohli přihlásit pouze konkrétní uživatelé, můžeme do našeho konfiguračního souboru zahrnout následující řádky:

userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

Výše uvedené umožní předdefinovaný seznam uživatelů, kde budou všichni uživatelé uvedeni v /etc/vsftpd.userlist (jedno uživatelské jméno na řádek) bude mít přístup k FTP odepřen, zatímco všichni ostatní uživatelé systému se budou moci přihlásit. Vytvořme nový /etc/vsftpd.userlist seznam uživatelů sestávající z jednoho uživatele linuxconfig :

# echo linuxconfig > /etc/vsftpd.userlist

Restartujte server vsFTPd:

# systemctl restart vsftpd

Proveďte nový test pomocí ftp příkaz pro potvrzení odepřeného přístupu k FTP serveru pro linuxconfig uživatel:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
530 Permission denied.
Login failed.
ftp> 

Pokud však potřebujete mít možnost přihlásit se pouze s uživateli definovanými v /etc/vsftpd.userlist , přidejte následující možnost konfigurace userlist_deny=NO do konfiguračního souboru vsFTPd /etc/vsftpd.conf . Níže je náš aktuální /etc/vsftpd.conf konfigurační soubor:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO

Povolit anonymní

V této fázi také umožníme anonymním uživatelům přístup pouze pro čtení. Začněme vytvářet nový adresář, který bude použit jako kořenový adresář pro anonymního uživatele, např. /var/ftp . Pro testovací účely můžeme také umístit libovolný testovací soubor do /var/ftp :

# mkdir /var/ftp/
# chmod 555 /var/ftp/
# chown ftp.ftp /var/ftp/
# touch /var/ftp/ANONYMOUS.TXT

Dále vložte následující řádky do /etc/vsftpd.conf konfigurační soubor pro definování anonymního domovského adresáře a anonymního přístupu:

anon_root=/var/ftp
anonymous_enable=YES

Volitelně přidejte no_anon_password=YES line instruovat vsFTPd, aby umožnil anonymnímu uživateli přihlásit se automaticky bez hesla. Protože jsme nyní definovali seznam uživatelů, musíme také přidat anonymous uživatele do seznamu:

# echo anonymous >> /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist 
linuxconfig
anonymous

Jako obvykle restartujte FTP server a proveďte platnost vaší aktuální konfigurace:

# systemctl restart vsftpd

Test anonymního přihlášení:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
226 Directory send OK.
ftp> 

Níže naleznete náš aktuální konfigurační soubor vsFTPd:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES

Povolit anonymní přístup pro zápis

Dále umožníme anonymním uživatelům nahrávat soubory a vytvářet nové adresáře a další. Chcete-li tak učinit, vytvořte nový adresář upload v rámci /var/ftp adresář:

# mkdir /var/ftp/upload
# chown ftp.ftp /var/ftp/upload/

Dále přidejte do konfiguračního souboru vsFTPd následující řádky:

anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Restartujte server:

# systemctl restart vsftpd

Po restartu bude anonymní uživatel moci nahrávat soubory, vytvářet adresáře přejmenovávat soubory:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
drwxr-xr-x    2 108      112          4096 Jun 07 13:57 upload
226 Directory send OK.
ftp> cd upload
250 Directory successfully changed.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 FILE.TXT
226 Directory send OK.
ftp> rename FILE.TXT NEW.TXT
350 Ready for RNTO.
250 Rename successful.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 NEW.TXT
226 Directory send OK.
ftp> 

Níže naleznete náš konečný konfigurační soubor vsFTPd:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Příloha

Chybová zpráva:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
ftp>

Výše uvedené znamená, že váš anon_root adresář je zapisovatelný. Řešením je udělat to pouze pro čtení. Příklad:

# chmod 555 /var/ftp

Případně zkuste do konfiguračního souboru vsFTPd přidat následující řádek:

allow_writeable_chroot=YES

Debian
  1. Jak nainstalovat TeamViewer na Debian 9 Stretch Linux

  2. Jak nakonfigurovat NFS na Debian 9 Stretch Linux

  3. Jak nainstalovat Jenkins na Debian 9 Stretch Linux

  1. Jak nastavit NTP server a klienta na Debian 9 Stretch Linux

  2. Jak nainstalovat server LAMP na Debian 9 Stretch Linux

  3. Jak nakonfigurovat sdílení serveru Samba na Debian 9 Stretch Linux

  1. Jak nainstalovat WordPress na Debian 9 Stretch Linux

  2. Jak nainstalovat komunitní server MySQL na Debian 9 Stretch Linux

  3. Jak nainstalovat NodeJS na Debian 9 Stretch Linux