GNU/Linux >> Znalost Linux >  >> Linux

Nastavení FTP serveru s vsFTPd na Raspberry Pi

V tomto článku ukážu, jak můžeme nastavit FTP server na Raspberry Pi které lze použít ke sdílení souborů mezi vašimi zařízeními. Použijeme vsFTPd protože je velmi stabilní, bezpečný a velmi rychlý FTP server. Také ukážu, jak nakonfigurovat vsFTPd, aby omezil uživatele na jejich HOME adresáře, spolu se šifrováním celého připojení pomocí SSL/TLS.

Pokud se chcete řídit tímto materiálem, musíte mít na svém Raspberry Pi nainstalovaný operační systém Raspberry Pi. Provoz FTP serveru nevyžaduje grafické rozhraní, proto doporučuji nainstalovat Raspberry Pi OS Lite se zapnutou službou SSH, která umožňuje vzdálený přístup.

Instalace vsFTPd bez Raspberry Pi

Balíček vsftpd je dostupný z oficiálních repozitářů operačního systému Raspberry Pi, takže jej lze nainstalovat pomocí následujících příkazů:

sudo apt update
sudo apt install vsftpd

Po instalaci se služba FTP serveru automaticky spustí. Chcete-li zkontrolovat stav této služby, spusťte:

sudo systemctl status vsftpd

Návrat z tohoto příkazu by měl vrátit „Aktivní:aktivní (běží) od…“, něco jako:

vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-05-23 07:02:41 BST; 14s ago
...

Jak přejít z CentOS 8 na Rocky Linux 8/Alma Linux 8

Nakonfigurujte FTP server pomocí vsFTPd

Konfigurace vsFTPd se provádí pomocí souboru /etc/vsftpd.conf .

Většina nastavení je dobře zdokumentována v konfiguračním souboru v angličtině. Pokud chcete zhodnotit všechny dostupné možnosti, doporučuji oficiální web na adrese:Manpage of VSFTPD.CONF

1. Přístup k FTP serveru

Chcete-li zajistit, aby k FTP serveru měli přístup pouze uživatelé místního operačního systému, vyhledejte v konfiguračním souboru položky anonymní_enable a local_enable a ponechte je takto:

anonymous_enable=NO
local_enable=YES

2. Povolení nahrávání

Vyhledejte a odkomentujte nastavení write_enable, abyste povolili změny systému souborů a umožnili uživatelům nahrávat a odstraňovat soubory:

write_enable=YES

3. Chroot klec

Abychom uživatelům FTP zabránili v přístupu k souborům mimo jejich domovskou složku, musíme vytvořit chroot jail bez komentáře u nastavení chroot_local_user :

chroot_local_user=YES

Když je povolena funkce chroot, vsFTPd zakáže nahrávání souborů, pokud je uživatelský adresář uzamčen.

Použijte jednu z níže uvedených možností k ponechání chrootovaného prostředí v režimu zápisu.

Možnost 1 – doporučený způsob, jak povolit nahrávání souborů a ponechat aktivní chroot při konfiguraci adresářů FTP. V následujícím příkladu vytvořím adresář ftp v domovské složce uživatele, který bude sloužit jako složka používaná chrootem a umožní do ní nahrát soubory.

user_sub_token=$USER
local_root=/home/$USER/ftp

Možnost 2 – Další alternativou je přidat nastavení allow_writeable_chroot do souboru vsftpd.conf. Tato možnost povolí možnost zapisovat do domovské složky uživatelů.

allow_writeable_chroot=YES

4. Pasivní připojení na FTP serveru

Ve výchozím nastavení používá vsFTPd aktivní režim. Chcete-li použít pasivní režim, nastavte minimální a maximální rozsah použitých portů.

pasv_min_port=30000
pasv_max_port=31000

vsFTPd může používat jakýkoli port v pasivním režimu. Když je povolen pasivní režim, FTP klient při připojování k FTP serveru otevře připojení na náhodném portu v intervalu, který nastavíte v konfiguračním souboru.

5. Omezit přihlašování na určité uživatele

VsFTPd můžeme nakonfigurovat tak, aby umožnil přihlášení pouze několika uživatelům. Chcete-li provést tuto konfiguraci, přidejte do souboru nastavení následující řádky:

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO


Když je toto nastavení povoleno, musíte určit, kteří uživatelé se budou moci přihlásit, přidáním jejich uživatelských jmen do souboru /etc/vsftpd.user_list, s jedním uživatelem na řádek.

6. Zabezpečený přenos pomocí SSL/TLS

Chcete-li šifrovat přenos FTP pomocí SSL/TLS, musíte mít certifikát SSL a nakonfigurovat server FTP, aby jej používal. Můžeme použít existující certifikát SSL podepsaný certifikovaným vydavatelem nebo vytvořit certifikát s vlastním podpisem.

Pokud máte doménu nebo subdoménu směřující na IP vašeho FTP serveru, můžete si pomocí Let’s Encrypt vygenerovat bezplatný certifikát SSL. Pokud jste jej ještě nikdy nepoužili, postupujte podle oficiální dokumentace:Začínáme – Let’s Encrypt – Bezplatné certifikáty SSL/TLS

V tomto článku vygenerujeme klíč s vlastním podpisem pomocí příkazu openssl.

Spuštěním níže uvedeného příkazu vytvořte 2048bitový, 10letý soukromý klíč (certifikát) s vlastním podpisem, který je platný 10 let. Veřejné a soukromé klíče budou uloženy ve stejném souboru.

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Po vytvoření klíčů znovu otevřete soubor nastavení vsFTPd:

sudo nano /etc/vsftpd.conf

Najděte nastavení rsa_cert_file a rsa_private_key_file změnou jejich hodnot na soubor pem a nastavením ssl_enable nastavte na YES.

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Pokud tato nastavení nejsou správně nakonfigurována, FTP server použije pouze TLS k zabezpečení připojení.

Restartujte nebo FTP server

Po provedení výše uvedených nastavení by soubor nastavení vsFTPd měl vypadat takto (bez komentářů):

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Uložte soubor a restartujte službu vsFTPd, aby se změny v tomto souboru projevily:

sudo systemctl restart vsftpd

Otevření brány firewall

Pokud ve své distribuci používáte bránu firewall UFW, musíte uvolnit provoz FTP a otevřít porty 20 (FTP data), 21 (příkazy FTP) a 30000-31000 (porty pasivního režimu) pomocí následujících příkazů:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

Nyní si znovu přečtěte pravidla UFW, deaktivujte je a znovu povolte.

sudo ufw disable
sudo ufw enable

Vytvořit uživatele pro FTP

Pro otestování našeho FTP serveru vytvoříme uživatele.

  • Pokud již máte uživatele, který bude použit, a chcete mu pouze udělit přístup, přeskočte první krok.
  • Pokud jste v konfiguračním souboru nastavili allow_writeable_chroot=YES, přeskočte třetí krok.

01. Vytvořte uživatele s názvem nováserftp:

sudo adduser novouserftp

Po zobrazení výzvy nastavte heslo uživatele.

02. Přidejte uživatele do seznamu uživatelů, kteří mohou používat FTP server.

echo "novouserftp" | sudo tee -a /etc/vsftpd.user_list

03. Vytvořte adresář FTP a nastavte správná oprávnění.

sudo mkdir -p /home/novouserftp/ftp/upload
sudo chmod 550 /home/novouserftp/ftp
sudo chmod 750 /home/novouserftp/ftp/upload
sudo chown -R novouserftp: / home / novouserftp / ftp

Jak bylo uvedeno výše, uživatel bude moci nahrávat soubory do složky ftp/upload svého domovského adresáře.

V tuto chvíli je váš FTP server plně funkční a můžete se k němu připojit pomocí FTP klientů, jako je FileZilla!

Zakázat přístup k shellu

Ve výchozím nastavení, když je vytvořen uživatel, pokud není provedena žádná další konfigurace, má tento uživatel přístup SSH k serveru. Chcete-li tento přístup zakázat, vytvořte nový shell, který pouze zobrazí zprávu sdělující uživateli, že tento účet je omezen pouze na přístup FTP.

Vytvořte shell /bin/ftponly a udělejte jej spustitelným.

echo -e '#!/bin/sh echo "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly

Přidejte nový shell do seznamu platných shellů v souboru /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Změňte vytvořený uživatelský shell na /bin/ftponly:

sudo usermod novouserftp -s / bin / ftponly

Tento poslední příkaz použijte pro všechny uživatele, kteří budou mít přístup pouze k serveru FTP.

Závěry

Doufejme, že je jasné, jak nainstalovat a nakonfigurovat rychlý a bezpečný FTP server na vašem systému Raspberry Pi.


Linux
  1. Jak nainstalovat FTP server na Rocky Linux 8 s VSFTPD

  2. Easy vsFTPD – FTP server s virtuálními uživateli na Debianu 8 Jessie

  3. Proč je chroot_local_user vsftpd nejistý?

  1. Naučte se Linux s Raspberry Pi

  2. Jak nainstalovat FTP server na CentOS 7 s VSFTPD

  3. Jak nainstalovat FTP server na Ubuntu s vsftpd

  1. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  2. Jak nastavit FTP server s VSFTPD na Ubuntu 18.04

  3. Jak nastavit FTP server s VSFTPD na CentOS 7