Tímto krátkým článkem bych chtěl navázat na povídání o Ftp Serveru ProFTPD a jen stručně jej doplnit o možnost zabezpečení.
29.3.2005 06:00 | Petr | přečteno 8990×
Cílem tohoto článku je doplnit povídání o FTP Serveru, které začal Martin Pruša. Jelikož se dnes komunikace neobejde bez pořádného zabezpečení, rozhodl jsem se reagovat na vydaný článek tím, že jej doplním o možnost provozovat FTP server s podporou TLS a stručně vysvětlím jak tuto vlastnost aplikovat.
Archiv se zdrojovými soubory najdete zde. Stáhnete, rozbalíte a klasickou trojkombinací configure make a make install nacpete do svého počítače. Jen než s těmito otřepanými kroky začnete, nahlédněte do podadresáře modules adresáře ProFTPd-x.x.x-tls, zdali je zdrojový soubor mod_tls.c přítomen. Vyhnete se tím zbytečných rozpaků nad neúspěšnou kompilací. Také ověřte přítomnost OpenSSL knihoven, bez kterých by kompilace rovněž neproběhla. Máte-li vše potřebné, pak spusťte první z trojce příkazů s následujícími parametry:
Druhým parametrem dosáhneme toho, že konfigurační soubor proftpd.conf bude uložen v adresáři /etc (ne v /usr/local/etc) jak by nastalo v případě implicitního nastavení. Dále stačí prosté make a make install. Poslední z příkazů zařídí, že se do adresáře /usr/local/sbin uloží démon serveru proftpd a další zkompilované nástroje(tak jak bylo uvedeno v předešlém povídání).
Pro aktivaci tls šifrování musíme do konfiguračního souboru připsat direktivu, která vypadá obdobně jako u konfigurace serveru Apache. Příklad konfigurace může vypadat takto:
Server spustíme příkazem:
Před samotným spuštěním musíme mít vygenerován příslušný certifikát a privátní klíč. Využijeme k tomu rozhraní Openssl knihovny. Následující příkaz nám vygeneruje certifikát a privátní klíč.
A pokud chcete využít dsa šifrování pak příkaz pro vygenerování certifikátu a klíče bude následující:
Soubory můžete uložit kamkoliv. Je potřeba v konfiguraci serveru k příslušným parametrům doplnit správnou cestu k těmto vygenerovaným souborům. Jen stručně k certifikátu. Jedná se o tzv. Self Signed Certificate, certifikát, který jsme si sami podepsali. Pokud by jsme chtěli certifikát podepsaný některou ze společností, která tyto certifikáty vlastní nebo která certifikáty podepisuje, musíme si připravit hodně nadutou peněženku. A proto nám pro vlastní použití bude stačit výše zmíněná varianta vygenerování self signed certifikátu a privátního klíče.
Aby jsme mohli požívat zabezpečený protokol, potřebujeme nejen podporu ze strany serveru, ale i ze strany klienta. Vybral jsem tři zástupce, u kterých je příslušná vlastnost podporována.
Ftp-tls a lftp - klienti pro konzolové použití. Jejich kompilace je opravdu jednoduchá a příkazy netřeba nijak zvlášť rozebírat. Pro připojení k serveru stačí napsat příkaz:
kde host je server ke kterému se chcete připojit. Výstup pak vypadá přibližně takto:
Obdobné je i použití klienta lftp. Potom co se povede klienta zkompilovat stačí se k serveru přihlásit pomocí příkazu:
kde parametr user_name je jméno uživatele, který má povolen přístup na serveru.
Vlastní kompilací klienta nebo instalaci některého z binárních balíčků nechám na jindy. Teď se zaměřím jen na nastavení šifrované komunikace. Nastavení najdete v menu Options položka Preferences a záložka Security. Tady je důležitou volbou Protocol, Encrypt a Method pro nastavení Password Encryption.
Protocol - zvolíte typ protokolu podle toho který je podporován serverem. Oba zmíněné servery podporují TSLv1 i SSLv2 a v3.
Encryption – zde nastavíme pro co se má šifrování použít. Možnosti jsou:
Nastavení uložíte kliknutím na tlačítko save. Vyplníte-li pak položky FTP Host, User a Password, měl by se klient bezpečně přihlásit na váš server. Během přihlašovacího procesu se klient dotáže na přijmutí/odmítnutí server certifikátu tak jak je ukázáno na obrázku. Po přijmutí certifikátu už na vás vyskočí jen okno s úspěšným přihlášením k serveru.
Doufám, že se problematika mnohým osvědčí i v praxi a pomůže ke zlepšení bezpečnosti. Pokud by chtěl někdo vyzkoušet podporu TLS i u jiných FTP serverů, mohou vyzkoušet např. server wu_ftpd.