testssl.sh

Roky používám na otestování nastavení SSL / TLS webový scanner od Qualys SSL Labs SSL Test. Jenže, ten je webový, to znamená že otestuje pouze servery vystavené do internetu a také se výsledky testů ukládají někam, kam možná ani nechcete (aneb stejně jako různé webové „testery“ na hesla, toto může sloužit pro vytipování méně zabezpečených cílů).

SSL Labs Test

Zkrácená ukázka výstupu:

SSLTest_Heronovo

Na druhou stranu SSL Labs k výsledkům poskytne dobrou interpretaci a doporučení, co a jak zlepšit.

nmap

Hledal jsem testy instalovatelné na vlastní železo. Dá se použít nmap:

$ nmap --script ssl-enum-ciphers -p 443 host

Zkrácená ukázka

| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - strong
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - strong
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - strong

A nebezpečné šifry si vygrepovat. (Pokud ještě někde používáte RC4 –  nevím přesně, koho toto může ohrožovat, min. Apache webserver ve výchozí konfiguraci zakazuje RC4 už hodně dlouho – tak teď je příležitost začít testovat i na přítomnost RC4.)

Skriptíků pro nmap existuje víc (aktuálně 498), pro kontrolu certu se hodí třeba ssl-cert.

openssl s_client

Dále se dá testovat pomocí openssl s_client, ale toto mi nikdy nepřirostlo k srdci.

Příklad: Test na připojení pomocí zastaralého a nebezpečného protokolu SSLv3:

 openssl s_client -ssl3 -connect www.heronovo.cz:443
CONNECTED(00000003)
140199351236240:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1294:SSL alert number 40
140199351236240:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:618:

Připojení neprošlo. To je dobře.

Na druhou stranu se pomocí s_client dá dobře zobrazit certifikát a celý řetězec. Tohle je věc, která se neskutečně blbě testuje v prohlížečích, protože ty si (zejména) mezilehlé certifikáty umí natahat sami, i když je server (chybně) neposílá.

testssl.sh

No a konečně se dostávám k poslednímu skriptíku, který automatizuje vše předchozí. testssl.sh (líbí se mi kreativní využití TLD, adminům mysql je jistě znám skript stažitelný z adresy mysqltuner.pl) je bashový skript pro otestování SSL a TLS (a STARTTSL). Takže se dá použít i na otestování IMAP(s), SMTP(s) apod.

Příklad:

testssl.sh www.heronovo.cz | aha > www.heronovo.cz.test.html

(Utilitka aha převede barevný výstup z konzole do jednoduchého html souboru.)

Ukázkový zkrácený výstup:

testssl.sh_Heronovotestssl.sh umí testovat i startls, což se hodí pro test imapového serveru:

testssl.sh -t imap localhost:143 imap

 

Příspěvek byl publikován v rubrice Linux, SSL. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

2 komentáře: testssl.sh

  1. Filip Jirsák napsal:

    Pokud potřebuju na SSL Labs otestovat něco, co není vystavené na internetu, udělám si na chvíli tunel (musí být na portu 443). Otestuju a tunel zruším, takže i kdyby chtěl výsledky někdo zneužít, na cílové IP adrese už nic nenajde.

Komentáře nejsou povoleny.