Domů > Internet, Proftpd, Servery > ProFTPD a obsluha FTPS spojení

ProFTPD a obsluha FTPS spojení

ftpFTP server Proftpd je známý a často používaný FTP server s bohatými možnostmi konfigurace. Jednou z mnoha užitečných a v dněšní době téměř nezbytných vlastností FTP serveru je podpora šifrovaných přenosů – FTPS. Důležité v tomto směru je nezaměňovat protokoly SFTP a FTPS. Jedná se o dva zcela rozdílné protokoly, kdy FTPS je TLS šifrování nad běžným FTP protokolem, ktežto SFTP je protokol postavený nad SSH.

SSL/TLS certifikát pro FTPS

Protože FTPS je postaveno nad FTP protokolem s TLS šifrováním – konkrétně v Proftpd se jedná o podporu Explicit TLS (starší systém přístupu Implicit TLS podporován není) je potřeba nejprve vygenerovat patřičné certifikáty. Postup generování SSL certifikátů je na internetu popsán na mnoha místech a stačí použít hlavu a google nebo přímo následující odkaz do dokumentace k OpenSSL – http://www.openssl.org/docs/HOWTO/certificates.txt. Pro vygenerování jednoduchého self-signed certifikátu můžete vužít například následující přikaz:

openssl req -new -x509 -days 365 -nodes \
  -out /etc/proftpd/proftpd.crt.pem \
  -keyout /etc/proftpd/proftpd.key.pem
Modul mod_tls.c

Obsluha TLS je v Proftpd řešena modulem mod_tls.c. Pokud tento modul neobsahuje váš distribuční balíček, je potřeba při kompilaci explicitně zapnout jako volbu u příkazu configure. Např:

./configure --with-modules=mod_tls \
  --with-includes=/usr/local/openssl/include \
  --with-libraries=/usr/local/openssl
Konfigurace

V konfiguračním souboru se poté povolí TLS a nastaví jeho parametry. Mnou doporučená konfigurace vypadá následovně:

LoadModule mod_tls.c

<IfModule mod_tls.c>
  TLSEngine on
  TLSLog /var/log/proftpd-tls.log
  TLSProtocol TLSv1
  TLSRequired off
  TLSRSACertificateFile /etc/proftpd/server.crt.pem
  TLSRSACertificateKeyFile /etc/proftpd/server.key.pem
  TLSVerifyClient off
  TLSRenegotiate required off
</IfModule>

Z důvodu chyby v implementaci TLS protokolu je důležíté mít na paměti nezapomenout na volbu  TLSRenegotiate required off, jinak by tato chyba mohla mít fatální následky. S těmito hodnotami bude FTP server dostupný jak bez šifrování tak s ním. Pokud je potřeba přístup omezit na pouze šifrované přenosy, stačí změnit hotnotu u řádku TLSRequired z off na on. Pokud stačí šifrovat pouze řídící spojení obsahující přístupové údaje ale není potřeba šifrovat data, čož může být vhodné u více zatížených FTP serverů, je možné hodnotu TLSRequired nastavit na ctrl, čímž bude ochráněno pouze řídící spojení.

FTPS a certifikační autorita

Ještě upozorním že pokud se v implementaci zabezpečeného FTP spojení dostanete do fáze kdy budete chtít využít certifikát vystavený nějakou uznávanou certifikační autoritou, je důležité přidat ještě řádku TLSCACertificateFile a jako parametr dát cestu ke kořenovému certifikátu nebo případně řetězu certifikátů použité autority.

Testování

Po spuštění Proftpd po této úpravě už stačí jen šifrování vyzkoušet. Osobně pro takovéto testy doporučuji použit jako klienta program FileZilla, kde se dá s FTP poměrně slušně pracovat a umí potřebné režimy šifrování.

RPM balík pro RHEL/CentOS

Pro uživatele distribucí RHEL a CentOS tu mám připravený RPM balík s proftpd doplněný o modul mod_tls a nějaké další drobnosti jako například podpora antiviru (Proftpd a mod_clamav – ochrana stránek před malware útoky) nebo scp ke které se vrátím v některém dalším článku a vysvětlím výhody a nevýhody používáni proftpd pro obsluhu SCP.

Download: proftpd-1.3.3-4.src.rpm

Tags: , , , ,
  1. 10.05.2011 na 11:32 | #1

    Implicit TLS jde zapnout nastavením „TLSOptions UseImplicitSSL“
    http://www.proftpd.org/docs/howto/TLS.html#TLSImplicit

  2. 10.05.2011 na 12:49 | #2

    Ano, je pravde ze od verze 1.3.3 to zapnout jde. Ale ma to nejaky vyznam? ImplicitTLS je stejne oznacejo jako zastarale a neni dobre ho pouzivat, protoze specifikace RFC4217 a RFC2228 tam maji stejne kolizi a z toho vyplyvajici problemy v implementaci Data Channel Protection Level.

  3. 10.05.2011 na 21:31 | #3

    Hodí se to, protože pak je možný povolit v iptables jen jeden port pro ftps. Alespoň to je moje praktické pozorování.

  1. Žádné zpětné odkazy