Šifrování (2), FTP Petr Koloros p.koloros [at] sh.cvut.cz
http://sut.sh.cvut.cz
Obsah ●
Úvod do šifrování FTP
●
FTP server ProFTPd
●
Šifrovaný přístup
●
Virtuální servery
●
Síť FTPek na klíč
FTP ●
File Transfer Protokol
●
Velmi starý protokol, žádné zabezpečení
●
Porty
●
–
20 – data
–
21 – příkazy (control port)
Režimy –
Aktivní, server navazuje datové spojení
–
Pasivní, klient navazuje datové spojení
Sever ProFTPd ●
● ●
Server ProFTPd (rozšířený, podpora featur) Šifrování: mod_tls (v balíčku ProFTP) http://www.castaglia.org/proftpd/doc/contrib/Pro FTPD-mini-HOWTO-TLS.html
●
http://www.castaglia.org/proftpd/modules/mod_tls.html
●
Explicitní TLS (vysvětleno dále)
●
Kompilace:
--with-modules=mod_tls
Šifrování ●
Šifrovací protkol TLS
●
Transport Layer Security
●
Dříve SSL (Secure Socket Layer)
●
Implicitní –
●
Šifrované automaticky na zvláštním portu
Explicitní –
Vyjednávání šifrování (preferováno)
–
Šetří porty (je jich omezený počet)
Jak funguje TLS (zjednodušeno) ●
Klient i server se domluví na algoritmu
●
Server pošle certifikát (mj. veřejný klíč)
●
●
●
Klient ním zašifruje premaseter-secret (náhodná data) a pošle ho serveru Server i klient spočítají z premaster secretu master secret Použijí master secret k vytvoření session key (symetrické šifrování)
Jak funguje TLS komunikace ●
Klient ověří certifikát serveru –
Platnost certifikátu
–
Jméno serveru
–
Podpis certifikátu důvěryhodnou CA
–
●
Veřejný klíč Certifikační Autority je znám
●
Spočítá hash serverového cerfitikátu
●
Dešifruje podpis CA v certifikátu = hash
●
porovná hashe (ověří autentičnost certifikátu)
CA a cert = hiearchie vs. PGP (distr. důvěra)
Certifikát a CA ●
●
●
●
Klient vygeneruje klíč Z klíče vygeneruje požadavek na podpis (CSR) CSR podepíše CA a vrátí jako certifikát Nebo z klíč budeme považovat za CA a podepíšeme ním CSR = self signed certifikát
Certifikát serveru ●
●
Vygenerování klíče –
openssl genrsa -out server.key 1024
–
RSA algoritmus
–
Klíč dlouhý 1024 bitů
Vygenerování CSR (Cert. Sign Request) –
openssl req -new -key server.key -out server.csr
–
CSR se pošle CA k podpisu, výsledek = certifikát
Self signed certifikát ●
Vytvoření self signed certifikátu na základě CSR –
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
–
Platnost 365 dní
Self signed certifikát ●
●
Vytvoření self signed certifikátu bez CSR –
openssl genrsa -out server.key 1024
–
openssl req -new -x509 -key server.key -out server.crt -days 365
Lze i jedním krokem –
openssl req -new -x509 -nodes -out server.crt -keyout server.key -days 365
Opravdová CA ●
●
●
Umožnuje vytvoření více certifikátu podepsaných jednou CA Trošku složitější OpenSSL na to má určitou strukturu adresářů
Opravdová CA ●
Vygenerujeme klíč, zašifrovaný na heslo s použitím triple DES –
●
openssl genrsa -des3 -out ca.key 1024
Vytvoříme self signed certifikát CA –
openssl req -new -x509 -key ca.key -out ca.crt -days 1095
Opravdová CA ●
●
●
Vytvoříme konfiguraci CA (config.ca) podle „man ca“ Vytvoříme potřebné soubory –
touch index.txt
–
echo “01“ > serial
Podepíšeme CSR –
openssl ca -config config.ca -out server.crt -in server.csr
Poznámky k certifikátům ●
●
Bez -des3 to nevyžaduje passphrase –
Passphrase je dobré mít u CA
–
Není dobré u serveru, protože se na to ptá při každém spuštění
Při vytváření CSR nebo self signed certifikátu je důležité dát pro server Common name = DNS název stroje
Konfigurace anonymous ●
User je anonymous
●
Heslo je email uživatele (nekontroluje se)
●
Přístup má každý, pokud není specifikováno pomocí Limit LOGIN
Konfigurace featured ●
●
●
Porty pro pasivní přístup (veškerou komunikaci zahajuje server), dobré pro nastavení firewallu Omezení přístupu na IP/host name pomocí Limit LOGIN Timeouty při idle a pod.
Konfigurace s ověřením ●
Může koexistovat s anonymous
●
Pomocí další sekce anonymous
●
Ale bez UserAlias anonymous
●
Možnost vyžadovat heslo –
AnonRequirePassword on
Konfigurace s TLS ●
●
●
●
Nutno zapnout TLS engine Možnost volby TLS na klientovi (TLSRequire off) Pozor, pokud je vyžadováno TLS, musí být TLSRequire mimo Anonymous sekci, protože se nejprve vyjednává zabezpečení a pak username. Anonymous se spouští až podle zadaného username. Nutný certifikát a klíč serveru
Konfigurace s TLS a cizí CA ●
●
●
Jako s self signed certifikátem, ale: Nutný certifikát serveru podepsaný cizí CA Nutný CA certifikát (kvůli ověření podpisu)
Konfigurace VirtualHosta ●
Jiná konfigurace pro jiné Domain Name
●
Umožňuje FTP na nestandardním portu
●
Nekopíruje defaultní nastavení serveru
●
Kopíruje pouze to, co je v Global direktivě
Síť FTPek ●
Všichni mají stejné username/heslo
●
Server vyžaduje certifikát klienta
●
Klient musí mít certifikát podepsaný CA
●
Server musí mít certifikát podepsaný CA
●
●
Klient se může připojit k jakémukoliv FTP, které patří do sítě (podepsané CA) Dobré přes VirtualHost a nutnost TLS
Ukázka konfigurace klienta ●
Řádkový klient lftp (http://lftp.yar.ru)
~/.lftp/rc: set ftp:ssl-allow true debug 10 set ssl:cert-file /home/silk/.lftp/ssl/client.crt set ssl:key-file /home/silk/.lftp/ssl/client.key set ssl:ca-file /home/silk/.lftp/ssl/ca.crt
Poděkování ●
Michal Medvecký (misk0) –
●
Martin Fiala (Digri) –
●
Síť FTPek CA, certifikáty
Radek Dostál (Dusty) –
Šifrovaný přenos souborů
O TLS/SSL ●
●
●
http://www.lupa.cz/clanky/odposlouchavame-datana-prepinanem-ethernetu-6/ http://en.wikipedia.org/wiki/Secure_Sockets_Laye r#How_it_works http://www.cryptofest.cz (sekce archív, 2003)