FTP server

Z Milan Kerslager
Verze z 11. 12. 2013, 12:43, kterou vytvořil Milan.Kerslager (diskuse | příspěvky) (Šifrované spojení: FileZilla)
Přejít na: navigace, hledání

FTP server slouží k přenosu souborů, je to jeden z nejstarších protokolů, které se na Internetu používají. Pro svoji činnost používá dva porty: 21 (řídící spojení) a 20 (datové spojení). Ve standardní konfiguraci se nejprve naváře spojení na port 21, kde se uživatel autentizuje pomocí jména a hesla. Tímto spojením se pak přenášejí příkazy, které server provede a jejich výstup se ke klientovi přenáší po datovém spojení, které je navázáno vždy, když je to potřeba (výpis adresáře, přenos souboru).

Bezpečnost

Ve standardní konfiguraci není jméno ani heslo šifrováno, a proto ho může kdokoliv odposlechnout. Z tohoto důvodu existuje několik rozšíření, které umožňují provést bezpečnou výměnu autentizačních informací (bezpečné challenge-response). Univerzální metodou je však využití SSL (podobně jako u HTTPS), kdy je možné šifrovat jen řídící spojení nebo též datové spojení.

Konfigurace vsftpd

Standardním FTP démonem je v RHEL a Fedoře démon vsftpd, který nainstalujete ze stejnojmenného balíčku:

yum install vsftpd

Konfigurační soubor /etc/vsftpd/vsftpd.conf je obvykle nutné přizpůsobit. Nejčastější jsou přidávány tyto volby:

setproctitle_enable=YES
anonymous_enable=NO
chroot_local_user=YES

Ve výše uvedených volbách je nejprve nastaveno, aby řídící proces zobrazoval své stavové informace přímo ve výpisu procesů (např. příkazem ps xa). Dále je zakázáno anonymní přihlášení, které se používá pro veřejné FTP servery a místo hesla se používá e-mailová adresa (uživatel ftp nebo anonymous). Třetí volba pak zajišťuje, že přístup lokálně existujících uživatelů (tj. uživatelů, kteří mají v systému účet) bude omezen na jejich domácí adresář.

Šifrované spojení

Pokud povolujeme přihlášení lokálních uživatelů, měli bychom vyžadovat, aby uživatelé používali alespoň pro řídící spojení šifrování pomocí SSL. K tomuto účelu je nutné uvést cestu k souboru, který obsahuje privátní a veřejný klíč (ve formě certifikátu, tj. digitálně podepsaného veřejného klíče). Jeho vytvoření bude popsáno níže.

rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
ssl_enable=YES
#force_local_data_ssl=YES
force_local_logins_ssl=YES

Všimněte si, že SSL je vynuceno jen pro řídící spojení. Požadavek na bezpodmínečné šifrování datového spojení je zakomentován.

Volby pro klienta FileZilla

Nová verze klienta FileZilla vyžadovala v konfiguračním souboru následující dvě volby:

ssl_ciphers=HIGH
require_ssl_reuse=NO

Vytvoření certifikátu

V distribuci RHEL a Fedora stačí využít předem připravený skript. Informace se vyplňují podobným způsobem, jako je uvedeno v článku WWW server se SSL. Zadejte příkazy:

cd /etc/pki/tls/certs
make vsftpd.pem

Kontrola certifikátu

Údaje v certifikátech zkontrolujeme takto:

openssl verify /etc/pki/tls/certs/vsftpd.pem
openssl x509 -text -noout -in /etc/pki/tls/certs/vsftpd.pem

Kontrola konzistence privátního klíče:

openssl rsa -check -noout -in /etc/pki/tls/certs/vsftpd.pem

Výpis otisku certifikátu, který bývá zobrazen v klientském programu, který se k FTP serveru připojuje:

openssl x509 -fingerprint -sha256 -noout -in /etc/pki/tls/certs/vsftpd.pem
openssl x509 -fingerprint -sha1 -noout -in /etc/pki/tls/certs/vsftpd.pem
openssl x509 -fingerprint -md5 -noout -in /etc/pki/tls/certs/vsftpd.pem

Konfigurace firewallu

Chceme-li využívat pasivní připojení a současně restriktivní firewall, je nutné FTP démonu říct, které porty jsou ve firewallu pro potřeby navázání pasivního spojení otevřeny (ve směru od klienta k serveru):

pasv_min_port=32800
pasv_max_port=32900

Výše uvedené konfigurační volby předpokládají, že firewall je v rozmezí portů 32800 až 32900 otevřen (stačí stavový firewall s povolenými příchozími spojeními). Na těchto portech bude FTP démon naslouchat. Pravidlo ve stavovém firewallu může vypadat takto:

iptables -A INPUT -m state --state NEW -p tcp --dport 32800:32900 -j ACCEPT

Externí odkazy