Tento článek popisuje, jak nainstalovat a nakonfigurovat server FTP v systému Ubuntu 20.04, kterou používáte ke sdílení souborů mezi zařízeními.
FTP (File Transfer Protocol) je standardní síťový protokol používaný k přenosu souborů do a ze vzdálené sítě. V systému Linux je k dispozici několik serverů FTP s otevřeným zdrojovým kódem. Nejznámější a nejpoužívanější jsou PureFTPd, ProFTPD a vsftpd . Budeme instalovat stabilní, bezpečný a rychlý FTP server vsftpd (Very Secure Ftp Daemon). Ukážeme vám také, jak nakonfigurovat server tak, aby omezoval uživatele na jejich domovský adresář a šifroval celý přenos pomocí SSL / TLS.
Ačkoli FTP je velmi populární protokol, pro bezpečnější a rychlejší datové přenosy byste měli používat SCP nebo SFTP .
Instalace vsftpd na Ubuntu 20.04 #
Balíček vsftpd je k dispozici v úložištích Ubuntu. Chcete-li jej nainstalovat, proveďte následující příkazy:
sudo apt aktualizace
sudo apt install vsftpd
Služba ftp se automaticky spustí po dokončení procesu instalace. Chcete-li to ověřit, vytiskněte stav služby:
sudo systemctl status vsftpd
Výstup by měl ukázat, že služba vsftpd je aktivní a běží:
● vsftpd.služba - vsftpd FTP server Načteno: načteno (/ lib / systemd / system / vsftpd.servis; povoleno; přednastavení dodavatele: povoleno) Aktivní: aktivní (běží) od Út 2021-03-02 15:17:22 UTC; Před 3 s…
Konfigurace vsftpd #
Konfigurace serveru vsftpd je uložena v / etc / vsftpd.konf
soubor.
Většina nastavení serveru je uvnitř souboru dobře zdokumentována. Všechny dostupné možnosti najdete na stránce dokumentace vsftpd.
V následujících částech projdeme některá důležitá nastavení potřebná ke konfiguraci zabezpečené instalace vsftpd.
Začněte otevřením konfiguračního souboru vsftpd:
sudo nano / etc / vsftpd.konf
1. FTP přístup #
Přístup na server FTP povolíme pouze místním uživatelům. Vyhledejte anonymous_enable
a local_enable
direktivy a ověřte, zda se vaše konfigurace shoduje s níže uvedenými řádky:
anonymous_enable = NO local_enable = ANO
2. Povolení nahrávání #
Vyhledejte a odkomentujte write_enable
směrnice umožňující změny souborového systému, jako je nahrávání a odebírání souborů:
write_enable = ANO
3. Chroot vězení #
Chcete-li zabránit místním uživatelům FTP v přístupu k souborům mimo jejich domovské adresáře, odkomentujte lne počínaje chroot_local_user
:
chroot_local_user = ANO
Ve výchozím nastavení z důvodu zabezpečení, když je povolen chroot, vsftpd odmítne nahrát soubory, pokud je zapisovatelný adresář, do kterého jsou uživatelé uzamčeni.
Chcete-li povolit nahrávání, když je povolen chroot, použijte jedno z níže uvedených řešení:
Metoda 1. - Doporučenou možností je ponechat funkci chroot povolenou a konfigurovat adresáře FTP. V tomto příkladu vytvoříme
/ etc / vsftpd.konfftp
adresář uvnitř domovské stránky uživatele, který bude sloužit jako chroot a zapisovatelnýnahrávání
adresář pro nahrávání souborů:user_sub_token = $ USER local_root = / home / $ USER / ftp
Metoda 2. - Další možností je povolit
/ etc / vsftpd.konfallow_writeable_chroot
směrnice:allow_writeable_chroot = ANO
Tuto možnost použijte, pouze pokud musíte uživateli povolit přístup k zápisu do domovského adresáře.
4. Pasivní připojení FTP #
Ve výchozím nastavení vsftpd používá aktivní režim. Chcete-li použít pasivní režim, nastavte minimální a maximální rozsah portů:
/ etc / vsftpd.konfpasv_min_port = 30000 pasv_max_port = 31000
Pro pasivní připojení FTP můžete použít libovolný port. Když je povolen pasivní režim, klient FTP otevře připojení k serveru na náhodném portu v rozsahu, který jste vybrali.
5. Omezení přihlášení uživatele #
Můžete nakonfigurovat vsftpd tak, aby umožňoval přihlášení pouze určitým uživatelům. Chcete-li tak učinit, přidejte na konec souboru následující řádky:
/ etc / vsftpd.konfuserlist_enable = ANO userlist_file = / etc / vsftpd.user_list userlist_deny = NE
Když je tato možnost povolena, musíte explicitně určit, kteří uživatelé se mohou přihlásit, přidáním uživatelských jmen do / etc / vsftpd.seznam_uživatelů
soubor (jeden uživatel na řádek).
6. Zabezpečení přenosů pomocí SSL / TLS #
Chcete-li šifrovat přenosy FTP pomocí protokolu SSL / TLS, musíte mít certifikát SSL a nakonfigurovat server FTP tak, aby jej mohl používat.
Můžete použít existující certifikát SSL podepsaný důvěryhodnou certifikační autoritou nebo vytvořit certifikát podepsaný svým držitelem.
Pokud máte doménu nebo subdoménu ukazující na adresu IP serveru FTP, můžete rychle vygenerovat bezplatný certifikát Let's Encrypt SSL.
Vygenerujeme 2048bitový soukromý klíč a certifikát SSL s vlastním podpisem, který bude platný deset let:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.pem
Soukromý klíč i certifikát budou uloženy ve stejném souboru.
Jakmile je certifikát SSL vytvořen, otevřete konfigurační soubor vsftpd:
sudo nano / etc / vsftpd.konf
Najít rsa_cert_file
a rsa_private_key_file
směrnice, změňte jejich hodnoty na pam
cestu k souboru a nastavte ssl_enable
směrnice do ANO
:
rsa_cert_file = / etc / ssl / private / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = ANO
Pokud není uvedeno jinak, použije server FTP k zabezpečenému připojení pouze protokol TLS.
Restartujte službu vsftpd #
Jakmile dokončíte úpravy, konfigurační soubor vsftpd (kromě komentářů) by měl vypadat asi takto:
/ etc / vsftpd.konfposlouchat = NE poslouchat_ipv6 = ANO anonymní_enable = NE lokální_enable = ANO write_enable = ANO dirmessage_enable = ANO use_localtime = ANO xferlog_enable = ANO connect_from_port_20 = ANO chroot_local_user = ANO zabezpečený_chroot_dir = / var / běh / pam_s / soukromé / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = ANO user_sub_token = $ USER local_root = / home / $ USER / ftp pasv_min_port = 30000 pasv_max_port = 31000 userlist_enable = ANO userlist_file = / etc / vsftpd.user_list userlist_deny = NE
Uložte soubor a restartujte službu vsftpd, aby se změny projevily:
sudo systemctl restart vsftpd
Otevření brány firewall #
Pokud používáte bránu firewall UFW, budete muset povolit přenos FTP.
Chcete-li otevřít port 21
(Port příkazu FTP), port 20
(Datový port FTP) a 30000-31000
(Rozsah pasivních portů), spusťte následující příkazy:
sudo ufw povolit 20:21 / tcp
sudo ufw povolit 30000: 31000 / tcp
Abyste se vyhnuli uzamčení, zkontrolujte port 22
je otevřeno:
sudo ufw povolit OpenSSH
Znovu načtěte pravidla UFW deaktivací a opětovným povolením UFW:
sudo ufw deaktivovat
sudo ufw povolit
Ověření spuštění změn:
sudo ufw status
Stav: aktivní Do Akce Od - ------ ---- 20:21 / tcp POVOLIT kdekoli 30000: 31000 / tcp POVOLIT kdekoli OpenSSH POVOLIT kdekoli 20: 21 / tcp (v6) POVOLIT kdekoli (v6) 30000: 31000 / tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Vytvoření uživatele FTP #
Abychom otestovali server FTP, vytvoříme nového uživatele.
- Pokud uživatel, kterému chcete udělit přístup FTP, již existuje, přeskočte první krok.
- Pokud nastavíte
allow_writeable_chroot = ANO
v konfiguračním souboru přeskočte 3. krok.
Vytvořte nového uživatele s názvem
newftpuser
:sudo adduser newftpuser
Přidejte uživatele do seznamu povolených uživatelů FTP:
echo "newftpuser" | sudo tee -a / etc / vsftpd.seznam_uživatelů
Vytvořte strom adresářů FTP a nastavte správná oprávnění:
sudo mkdir -p / home / newftpuser / ftp / upload
sudo chmod 550 / home / newftpuser / ftp
sudo chmod 750 / home / newftpuser / ftp / upload
sudo chown -R newftpuser: / home / newftpuser / ftp
Jak je uvedeno v předchozí části, uživatel bude moci nahrát své soubory do
ftp / upload
adresář.
V tomto okamžiku je váš server FTP plně funkční. Měli byste být schopni se připojit k serveru pomocí libovolného klienta FTP, který lze nakonfigurovat tak, aby používal šifrování TLS, například FileZilla .
Zakázání přístupu k prostředí #
Ve výchozím nastavení bude mít uživatel při vytváření uživatele, pokud není výslovně zadán, přístup SSH k serveru. Chcete-li zakázat přístup k prostředí, vytvořte nový prostředí, které vytiskne zprávu sdělující uživateli, že jeho účet je omezen pouze na přístup FTP.
Spuštěním následujících příkazů vytvořte / bin / ftponly
soubor a proveďte jej spustitelný:
echo -e '#!/ bin / sh \ necho "Tento účet je omezen pouze na přístup FTP."'| sudo tee -a / bin / ftponly
sudo chmod a + x / bin / ftponly
Připojte nový shell k seznamu platných skořápek v / etc / skořápky
soubor:
echo "/ bin / ftponly" | sudo tee -a / etc / shells
Změňte uživatelské prostředí na / bin / ftponly
:
sudo usermod newftpuser -s / bin / ftponly
Stejným příkazem můžete změnit shell všech uživatelů, kterým chcete udělit pouze přístup FTP.
Závěr #
Ukázali jsme vám, jak nainstalovat a nakonfigurovat zabezpečený a rychlý server FTP na vašem Ubuntu 20.04 systém.
Máte-li jakékoli dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.