LINUXSOFT.cz
Username: Password:     
    CZ UK PL

> FTP Server s podporou TLS

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 | read 8989×

DISCUSSION   

Úvodem ...

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.

Kde najít Proftpd s podporou tls a jak instalovat

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:

#./configure –with-modules=mod_tls –sysconfdir=/etc

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í).

Konfigurace TLS

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:

<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/ftpd/tls.log
#TLSProtocol TLSv1
TLSProtocol SSLv3

# Are clients required to use FTP over TLS when talking to this server?
TLSRequired on

# Server's certificate
TLSRSACertificateFile /etc/ssl/private/ftpd-rsa.pem
TLSRSACertificateKeyFile /etc/ssl/private/ftpd-rsa-key.pem

# Authenticate clients that want to use FTP over TLS?
#TLSVerifyClient off
TLSOptions NoCertRequest
</IfModule>
  • TLSEngine on/off – direktiva pro aktivaci/deaktivaci ssl/tsl. (Použití: Tato direktiva se obvykle použije vně direktivy VirtualHost i Global).
  • TLSLog file – direktiva pro určení plné cesty k log souboru. (Použití: VirtualHost, Global, Parametr: Plná cesta k souboru).
  • TLSProtocol protokol – direktiva pro nastavení použití protokolu při vytváření spojení.(Parametr: podporován je TLSv1 protokol a SSLv2,3).
  • TSLRequired on/off/ctrl/data – direktiva, která definuje použití tsl buď na komunikační nebo datový kanál, popřípadě oba dva najednou. (Parametr: on/off – zapnutá/vypnutá podpora tsl pro oba kanály, ctrl/data – použití tsl na komunikační nebo datový kanál).
  • TLSRSACertificateFile, TLSRSACertificateKeyFile – direktiva pro určení souboru s certifikátem a privátním klíčem serveru.(Použití: VirtualHost, Global)
  • TLSVerifyClient on/off – direktiva, pro dotázání na klientův certifikát. Pokud modul certifikát přijme, vytvoří spojení s klientem, v opačném případě spojení ukončí. Pokud je direktiva nastavená na on pak server ověřuje klientův certifikát, pokud je direktiva nastavená na off toto opatření server neprovádí. Ověřování klientova certifikátu lze vypnout parametrem NoCertRequest v direktivě TLSOptions.

Spuštění Serveru

Server spustíme příkazem:

# ./proftpd

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íč.

#openssl req -new -x509 -days 365 -nodes -out ftpd-rsa.pem -keyout ftpd-rsa-key.pem

A pokud chcete využít dsa šifrování pak příkaz pro vygenerování certifikátu a klíče bude následující:

#openssl dsaparam -out dsap-tmp 1024 #openssl req -newkey dsa:dsap-tmp -x509 -days 365 -nodes -out ftpd-dsa.pem -keyout ftpd-dsa-key.pem

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.

FTP Klienti s podporou šifrované komunikace

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:

#ftp host

kde host je server ke kterému se chcete připojit. Výstup pak vypadá přibližně takto:

Connected to localhost.
220 ProFTPD 1.2.9rc1 Server (ProFTPD Default Installation) [mandrake10]
234 AUTH TLS successful
[Starting SSL/TLS negotiation...]
WARNING: Server's certificate is self signed.
[Subject: C = CZ, ST = x, L = x, O = x, OU = x, CN = x, emailAddress = x]
[Issuer: C = CZ, ST = x, L = x, O = x, OU = x, CN = x, emailAddress = x]
[Cipher: DHE-DSS-AES256-SHA (256 bits)]
Name (localhost:root): user
331 Password required for user.
Password:
230 User user logged in.
Remote system type is UNIX.
Using binary mode to transfer files.

Obdobné je i použití klienta lftp. Potom co se povede klienta zkompilovat stačí se k serveru přihlásit pomocí příkazu:

#lftp localhost -u user_name

kde parametr user_name je jméno uživatele, který má povolen přístup na serveru.

IglooFTP PRO

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:

  • No Encryption – ftp příkazy i datový přenos nejsou kódovány
  • Commands – ftp příkazy jsou šifrovány, pokud nemohou být šifrovány server spojení ukončí.
  • Commands (if posiible) – stejně jako v případě Commands ale pokud server šifrování příkazů nepodporuje neukončí spojení a bude pokračovat v nešifrovaném režimu.
  • Commands, Transfers – šifrování ftp příkazů i přenosu dat, pokud nemohou být oba kanály šifrovány spojení se serverem se ukončí
  • Commands(if possible), Transfers(if posiible) – Pokud není podporováno šifrování ani jednoho z kanálů (komunikační, datový) server klienta neodpojí a bude dál pokračovat v přihlašovací proceduře v nešifrovaném režimu.
  • Password Encryption Method – MD4, MD5, SHA1, No Encryption, Auto

Auto – tuto volbu doporučuji pokud nevíte jakou metodu zvolit (která je podporována serverem).

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.

Závěrem ....

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.

Odkazy:

 

DISCUSSION

For this item is no comments.

Add comment is possible for logged registered users.
> Search Software
> Search Google
1. Pacman linux
Download: 4881x
2. FreeBSD
Download: 9068x
3. PCLinuxOS-2010
Download: 8564x
4. alcolix
Download: 10950x
5. Onebase Linux
Download: 9662x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6248x

1. xinetd
Download: 2414x
2. RDGS
Download: 937x
3. spkg
Download: 4762x
4. LinPacker
Download: 9968x
5. VFU File Manager
Download: 3199x
6. LeftHand Mała Księgowość
Download: 7204x
7. MISU pyFotoResize
Download: 2813x
8. Lefthand CRM
Download: 3564x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3123x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz