Jak zabezpečit vsFTPd pomocí SSL/TLS
FTP démona vsFTPd je možno dost přizpůsobit. V tomto tutorialu si ukážeme, jak ho zabezpečit na Debianu a to pomocí self-signed SSL/TLS certifikátu. Přestože je tutoriál popsán pro systém Debian, měl by fungovat na většině linuxových distribucí, jako je například Ubuntu, CentOS atp.
Konfigurace
Otevřete konfigurační soubor: /etc/vsftpd.conf ve svém oblíbeném textovém editoru, my používáme nano:
A vložte následující řádky do konfigurace:
Vše dokončete restartováním vsFTPd daemon:
Takto vygenerujeme oba klíče do stejného souboru (/etc/vsftpd/ssl/vsftpd.pem):
Po vykonání příkazu budete dotázáni na několik otázek, jako je kód země, stát, město, název organizace apod. – vyplňte tedy informace o Vaší organizaci. Nejdůležitější je obecný název, který se musí shodovat s IP adresou vašeho VPS, popřípadě názvem domény.
Toto osvědčení bude platné po dobu 365 dnů (~ 1 rok), bude používat klíč RSA s délkou 4096 bitů, a soubor obsahující oba klíče bude uložen do nového adresáře, který jsme právě vytvořili.
Poté přidejte níže uvedené řádky nového certifikátu a klíčových souborů. Vzhledem k tomu, že jsou uloženy ve stejném souboru, by měla být konfigurace stejná.
Pro ujištění, že SSL bude aktivní, přidejte tento řádek:
Případně můžete pomocí SSL blokovat anonymní uživatelé, protože na veřejném serveru FTP není šifrování potřeba.
Dále je třeba určit, kdy použít SSL/TLS. Pomocí šifrování ho povolte pro přenos dat, tak i pro přihlašovací údaje.
Můžeme také určit, jaká verze a protokoly, mají být použity. TLS je obecně bezpečnější než SSL, a proto můžeme povolit TLS a současně blokovat starší verze protokolu SSL.
Require SSL reuse a využití šifrování přispívá ke zlepšení bezpečnosti. Jak je patrné z manuálových stránek vsFTPd:
Vše dokončíte restartem vsFTPd deamon
Chcete-li se dozvědět více o vsFTPd, podívejte se na jeho manuál:
Instalace vsFTPd
Nejprve je na Linux VPS třeba nainstalovat samotné vsFTPd.Instalace na Debian / Ubuntu:
apt-get install vsftpdInstalace na CentOS:
yum install epel-release
yum install vsftpdKonfigurace
Otevřete konfigurační soubor: /etc/vsftpd.conf ve svém oblíbeném textovém editoru, my používáme nano:
nano /etc/vsftpd.confA vložte následující řádky do konfigurace:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YESVše dokončete restartováním vsFTPd daemon:
/etc/init.d/vsftpd restartNyní byste měli být schopni se přihlásit jako každý lokální uživatel přes FTP a teď pojďme k samotné konfiguraci SSL/TLS.Vygenerování vlastního certifikátu
V prvé řadě musíme vytvořit adresář pro ukládání klíčů, nejlépe na bezpečném místě, kam normální uživatelé nemají přístup.mkdir -p /etc/vsftpd/sslTakto vygenerujeme oba klíče do stejného souboru (/etc/vsftpd/ssl/vsftpd.pem):
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/vsftpd/ssl/vsftpd.pem -out /etc/vsftpd/ssl/vsftpd.pemPo vykonání příkazu budete dotázáni na několik otázek, jako je kód země, stát, město, název organizace apod. – vyplňte tedy informace o Vaší organizaci. Nejdůležitější je obecný název, který se musí shodovat s IP adresou vašeho VPS, popřípadě názvem domény.
Toto osvědčení bude platné po dobu 365 dnů (~ 1 rok), bude používat klíč RSA s délkou 4096 bitů, a soubor obsahující oba klíče bude uložen do nového adresáře, který jsme právě vytvořili.
Nainstalování nového certifikátu pro vsFTPd
Chcete-li začít používat váš nový certifikát a tím zajistit šifrování, musíme znovu otevřít konfigurační soubor:nano /etc/vsftpd.confPoté přidejte níže uvedené řádky nového certifikátu a klíčových souborů. Vzhledem k tomu, že jsou uloženy ve stejném souboru, by měla být konfigurace stejná.
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.pemPro ujištění, že SSL bude aktivní, přidejte tento řádek:
ssl_enable=YESPřípadně můžete pomocí SSL blokovat anonymní uživatelé, protože na veřejném serveru FTP není šifrování potřeba.
allow_anon_ssl=NODále je třeba určit, kdy použít SSL/TLS. Pomocí šifrování ho povolte pro přenos dat, tak i pro přihlašovací údaje.
force_local_data_ssl=YES
force_local_logins_ssl=YESMůžeme také určit, jaká verze a protokoly, mají být použity. TLS je obecně bezpečnější než SSL, a proto můžeme povolit TLS a současně blokovat starší verze protokolu SSL.
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NORequire SSL reuse a využití šifrování přispívá ke zlepšení bezpečnosti. Jak je patrné z manuálových stránek vsFTPd:
- Když je require_ssl_reuse nastaven na Yes, všechny SSL datová spojení musí vykazovat opětovné použití relace SSL. Přestože se jedná o bezpečné řešení, může ho prolomit mnoho klientů FTP, takže možná budete chtít, aby bylo zakázáno.
- Možnost ssl_ciphers lze použít k výběru SSL šifry vsFTPd, která umožní šifrované připojení SSL. Podívejte se detailněji na stránky man vsftpd a všimněte si, že omezující šifry můžou být užitečným bezpečnostním opatřením.
require_ssl_reuse=YES
ssl_ciphers=HIGHVše dokončíte restartem vsFTPd deamon
/etc/init.d/vsftpd restartpotvrzení instalace
To by mělo být vše. Nyní se připojte k serveru a zkontrolujte, zda vše funguje. Pokud používáte FileZilla, tak dialogové okno obsahující informace vaší organizace (informace které jste zadali při generování certifikátu) by se mělo po připojení otevřít. Výstup by měl vypadat podobně jako tento:Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.Chcete-li se dozvědět více o vsFTPd, podívejte se na jeho manuál:
man vsftpd