FTP server: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
(Šifrované spojení: FileZilla)
m (Styl)
 
Řádka 2: Řádka 2:
  
 
== Bezpečnost ==
 
== 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í.
+
Ve standardní konfiguraci není u FTP protokolu 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 <code>vsftpd</code>, který nainstalujete ze stejnojmenného balíčku:
 
Standardním FTP démonem je v RHEL a Fedoře démon <code>vsftpd</code>, který nainstalujete ze stejnojmenného balíčku:
  
Řádka 17: Řádka 16:
 
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 <code>ps xa</code>). 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ář.
 
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 <code>ps xa</code>). 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í ===
+
== Š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.
 
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.
  
Řádka 56: Řádka 55:
 
  openssl x509 -fingerprint -md5 -noout -in /etc/pki/tls/certs/vsftpd.pem
 
  openssl x509 -fingerprint -md5 -noout -in /etc/pki/tls/certs/vsftpd.pem
  
=== Konfigurace firewallu ===
+
== 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):
 
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):
  

Aktuální verze z 11. 12. 2013, 12:46

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í u FTP protokolu 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í.

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