Jak postavit zabezpečený FTP server na Ubuntu s vsftpd (průvodce pro začátečníky i pokročilé)

目次

1. Úvod

Vytvoření FTP serveru na Ubuntu je vysoce praktické řešení pro vývojáře a administrátory, kteří chtějí efektivně přenášet soubory. Zejména při nastavování domácího serveru nebo jednoduchého interního prostředí pro sdílení souborů zůstává FTP (File Transfer Protocol) snadno nasaditelnou a přímočarou volbou.

Co je FTP server?

FTP server je dedikovaný serverový software používaný k přenosu souborů přes internet nebo lokální síť. Uživatelé se k serveru připojují pomocí FTP klientské aplikace, aby nahráli nebo stáhli soubory.

Zatímco bezpečnější alternativy jako SFTP a SCP se staly běžnějšími, FTP je stále široce používáno díky své jednoduchosti a lehkosti. V omezených sítích nebo pro základní případy použití FTP nadále představuje praktický a efektivní protokol.

Role FTP serveru na Ubuntu

Ubuntu je jednou z nejoblíbenějších distribucí Linuxu a je široce používána v serverových prostředích. Nastavením FTP serveru na Ubuntu se sdílení souborů mezi více zařízeními a uživateli výrazně usnadní.

Typické případy použití zahrnují:

  • Přenos souborů na webový server
  • Integraci s IoT zařízeními, jako je Raspberry Pi
  • Sdílení interních firemních dokumentů

Kombinace Ubuntu a FTP serveru umožňuje flexibilní a efektivní správu souborů.

Účel tohoto článku a cílové publikum

Tento článek vysvětluje, jak postavit FTP server na Ubuntu krok za krokem tak, aby byl srozumitelný i pro začátečníky. Je určen čtenářům, kteří:

  • Zná základní operace v Ubuntu, ale jsou noví v FTP
  • Chtějí vytvořit FTP server pro lokální nebo lehké firemní využití
  • Chtějí pochopit bezpečnostní úvahy a problémy, jako je kódování názvů souborů

Dodržením kroků v tomto průvodci budete schopni vytvořit bezpečné a praktické prostředí FTP serveru. V další sekci se zaměříme na instalaci jednoho z nejoblíbenějších FTP serverů: vsftpd.

2. Instalace vsftpd

Při budování FTP serveru na Ubuntu je nejčastěji používaným softwarem vsftpd (Very Secure FTP Daemon). Jak název napovídá, byl navržen s ohledem na bezpečnost a je lehký a stabilní, což jej činí široce přijatým v korporátních i vzdělávacích prostředích.

Tato sekce vysvětluje, jak nainstalovat vsftpd na Ubuntu a nakonfigurovat službu tak, aby se spouštěla automaticky.

Instalace vsftpd

Nejprve nainstalujte vsftpd pomocí balíčkovacího systému Ubuntu (APT). Spusťte následující příkazy v pořadí:

sudo apt update
sudo apt install vsftpd
  • sudo apt update : Aktualizuje seznam balíčků
  • sudo apt install vsftpd : Nainstaluje balíček vsftpd

Po dokončení instalace se služba vsftpd spustí automaticky.

Kontrola stavu služby

Pro ověření, že je vsftpd nainstalován a běží správně, použijte následující příkaz:

sudo systemctl status vsftpd

Pokud uvidíte active (running), FTP server funguje normálně.

Povolení automatického spouštění

vsftpd je obvykle nastaven tak, aby se spouštěl automaticky, ale je dobré to potvrdit:

sudo systemctl enable vsftpd

Tím zajistíte, že vsftpd bude spouštěn automaticky po restartu systému.

Nezapomeňte na nastavení firewallu (UFW)

Pokud je na Ubuntu povolen UFW (Uncomplicated Firewall), musíte povolit FTP porty:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

Tím otevřete standardní FTP porty: 20 (data) a 21 (příkazy).

Po úpravě pravidel firewallu načtěte UFW znovu:

sudo ufw reload

3. Základní konfigurace

Po instalaci vsftpd je dalším krokem přizpůsobit jeho chování úpravou konfiguračního souboru. Ačkoliv vsftpd nabízí velmi podrobnou kontrolu, mnoho funkcí je ve výchozím nastavení zakázáno, takže je třeba explicitně povolit ty, které potřebujete.

Tato sekce popisuje nejčastější a nejdůležitější konfigurační volby.

Umístění konfiguračního souboru

.Hlavní konfigurační soubor pro vsftpd se nachází v:

/etc/vsftpd.conf

Soubor upravte pomocí následujícího příkazu:

sudo nano /etc/vsftpd.conf

Po provedení změn restartujte vsftpd, aby se nastavení projevilo:

sudo systemctl restart vsftpd

Povolení zápisu (nahrávání, mazání, úpravy)

Ve výchozím nastavení vsftpd neumožňuje nahrávat soubory ani je měnit. Pro povolení zápisu odkomentujte nebo přidejte následující řádek:

write_enable=YES

Tím umožníte uživatelům nahrávat, mazat a upravovat soubory ve svých domovských adresářích.

Povolení přihlášení lokálních uživatelů

Aby se uživatelé systému Ubuntu mohli přihlašovat přes FTP, povolte následující volbu:

local_enable=YES

Tím umožníte uživatelům uvedeným v /etc/passwd přihlásit se pomocí FTP.

Povolení výpisu adresářů

Pokud se ve FTP klientech nezobrazují výpisy adresářů, zkontrolujte následující nastavení:

listen=YES
listen_ipv6=NO

Pokud je ve vašem systému zakázáno IPv6, ale listen_ipv6=YES zůstane povoleno, může dojít k problémům s připojením.

Nastavení uvítací zprávy (volitelné)

Můžete zobrazit vlastní zprávu, když se uživatelé připojí k FTP serveru:

ftpd_banner=Welcome to your custom Ubuntu FTP server!

To je užitečné pro zobrazování provozních oznámení nebo kontaktních informací.

Povolení přenosu v ASCII režimu (pokud je potřeba)

Pokud potřebujete správně přenášet textové soubory s různými formáty konců řádků, povolte ASCII režim:

ascii_upload_enable=YES
ascii_download_enable=YES

Většinou stačí binární režim, ale ASCII režim může být užitečný v specifických prostředích.

vsftpd vyžaduje explicitní povolení pro každou funkci, což činí konfiguraci transparentní a bezpečnou. Po úpravě konfiguračního souboru vždy restartujte službu.

4. Zvyšování bezpečnosti

I když je FTP pohodlné, ve výchozím nastavení nešifruje provoz, což představuje bezpečnostní riziko – zejména při používání přes internet. Správná bezpečnostní konfigurace je nezbytná.

Tato část představuje klíčová bezpečnostní opatření dostupná ve vsftpd.

Omezení přístupu uživatelů pomocí chroot

Umožnění FTP uživatelům přistupovat k adresářům mimo jejich domovský adresář je nebezpečné. Použijte chroot k omezení uživatelů na jejich domovské adresáře.

chroot_local_user=YES
allow_writeable_chroot=YES
  • chroot_local_user=YES zabraňuje uživatelům přistupovat k adresářům nad jejich domovským adresářem.
  • allow_writeable_chroot=YES je nutné, pokud má domovský adresář povolen zápis.

Bez tohoto nastavení se objeví následující chyba:

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

Omezení přihlašovaných uživatelů (whitelist)

Povolení všem systémovým uživatelům přihlásit se přes FTP zvyšuje bezpečnostní riziko. Místo toho omezte přístup pomocí whitelistu.

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

Přidejte povolené uživatele do seznamu:

sudo nano /etc/vsftpd.userlist
ftpuser1
ftpuser2

Pouze výslovně uvedení uživatelé se mohou přihlásit.

Povolení šifrované komunikace pomocí FTPS (SSL/TLS)

Standardní FTP přenáší přihlašovací údaje i data jako prostý text. Pro zabránění odposlechu povolte FTPS (FTP přes SSL/TLS).

Vytvořte SSL certifikát:

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

Do vsftpd.conf přidejte následující řádky:

ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Klienti se nyní mohou připojit pomocí explicitního FTPS.

Zakázání nepotřebných funkcí

Zakázáním nepoužívaných funkcí snížíte útočný povrch:

anonymous_enable=NO

Tím se explicitně zakáže anonymní přihlášení.

5. Podpora japonských názvů souborů

Při přenosu souborů přes FTP se mohou japonské názvy souborů zobrazovat poškozeně kvůli nesouladu kódování – zejména mezi Windows a Ubuntu.

translated markdown.

Běžné příčiny problémů s kódováním názvů souborů

  1. Locale Ubuntu není nastaveno na UTF-8
  2. Kódování FTP klienta neodpovídá
  3. vsftpd nepracuje v režimu UTF-8

Ověření a nastavení locale Ubuntu

locale
LANG=ja_JP.UTF-8

Pokud není UTF-8 povoleno:

sudo update-locale LANG=ja_JP.UTF-8
source /etc/default/locale
sudo locale-gen ja_JP.UTF-8

Ověření podpory UTF-8 ve vsftpd

utf8_filesystem=YES

Tato volba nemusí existovat ve všech verzích, ale systémové locale UTF-8 obvykle stačí.

Nastavení FTP klienta (příklad FileZilla)

  1. Otevřete Správce serverů
  2. Vyberte server
  3. Otevřete kartu Kódování znaků
  4. Povolit vlastní kódování a nastavit jej na UTF-8

6. Pasivní režim a konfigurace firewallu

Problémy s FTP, jako neúspěšné výpisy adresářů nebo zablokované přenosy, jsou často způsobeny nesprávným pasivním režimem nebo nastavením firewallu.

Co je pasivní režim?

  • Aktivní režim: Server zahajuje datové spojení
  • Pasivní režim: Klient zahajuje všechna spojení

Pasivní režim je pro moderní sítě důrazně doporučen.

Povolení pasivního režimu ve vsftpd

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

Specifikace externí IP adresy (prostředí NAT)

pasv_address=203.0.113.45

Otevření požadovaných portů v UFW

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw reload

7. Konfigurace na uživatele

V produkčních prostředích je běžné přiřazovat různá oprávnění a adresáře jednotlivým uživatelům.

Vytvoření dedikovaných FTP uživatelů

sudo adduser ftpuser1
sudo useradd -m -s /usr/sbin/nologin ftpuser2

Doporučená struktura adresářů

/home/ftpuser1/
└── files/
sudo mkdir /home/ftpuser1/files
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/files
sudo chmod 755 /home/ftpuser1

Konfigurační soubory specifické pro uživatele

user_config_dir=/etc/vsftpd_user_conf
sudo mkdir /etc/vsftpd_user_conf
sudo nano /etc/vsftpd_user_conf/ftpuser1
local_root=/home/ftpuser1/files
write_enable=YES

8. Ověření provozu

Po dokončení všech kroků nastavení ověřte, že FTP server funguje správně.

Test z příkazové řádky

ftp localhost
ls
cd files
put test.txt
get test.txt

Test GUI klienta (FileZilla)

Ověřte připojení, výpis adresářů, nahrávání a stahování.

9. Řešení problémů

Běžné problémy s FTP a jejich řešení zahrnují selhání přihlášení, chyby oprávnění, nesprávnou konfiguraci pasivního režimu a problémy s kódováním.

10. Závěr

Tento článek vysvětlil, jak vytvořit bezpečný a praktický FTP server na Ubuntu pomocí vsftpd, zahrnující instalaci, konfiguraci, zabezpečení, kódování, pasivní režim, správu uživatelů, ověření a řešení problémů.

Často kladené otázky

Často kladené otázky týkající se nastavení a provozu FTP serveru na Ubuntu.