Muchas veces se ha hablado sobre SSL/TLS en este blog. Es que la dureza de la implementación de SSL/TLS es primordial para garantizar la confidencialidad, (privacidad), integridad y autenticidad en las comunicaciones a través de Internet. No sólo cuando se utiliza por encima el protocolo HTTP, sino también otros como por ejemplo correo y redes privadas virtuales (OpenVPN).

Anteriormente demostré cómo verificar conexiones SSL/TLS desde línea de comandos con OpenSSL utilizando s_client, cómo analizar servidores SSL/TLS con cipherscan, y diagnosticar errores en conexiones SSL/TLS con SSL Checker.

Además, en el artículo Hardening de SSL/TLS en servidores HTTPS demostré cómo analizar clientes y servidores HTTPS utilizando las herramientas provistas por Qualys SSL Labs.

Este artículo demuestra cómo analizar el nivel de seguridad de una implementación de SSL/TLS utilizando la herramienta testssl.sh. Además de realizar un test exhaustivo sobre las suites de cifrado soportadas por un servidor SSL/TLS, esta herramienta permite comprobar las vulnerabilidades críticas más importantes como Heartbleed, CCS, CRIME, BREACH, POODLE, DROWN, BEAST, Secure Renegotiation, Secure Client-Initiated Renegotiation y más.



testssl.sh es una herramienta libre de línea de comandos que permite verificar el nivel de seguridad de SSL/TLS en cualquier puerto de un servidor y analizar las suites de cifrado soportadas, protocolos, vulnerabilidades más recientes y más. Además de ser una herramienta simple de instalar y utilizar, flexible, confiable y con un buen número de funcionalidades, su mayor ventaja es la privacidad. Ya que al correr desde línea de comandos (en un sistema privado), sólo quien corre el test es capaz de acceder a los resultados, y no una tercera parte (como cuando se usan servicios en Internet como los de Qualys).

El código fuente de testssl.sh está diponible en GitHub en github.com/drwetter/testssl.sh/. Para instalar esta herramienta, es posible descargar la última versión estable que se encuentre en la página Releases - drwetter/testssl.sh:

root@linuxito:~# wget https://github.com/drwetter/testssl.sh/archive/v2.9.5-5.tar.gz
root@linuxito:~# mv v2.9.5-5.tar.gz testssl-2.9.5-5.tar.gz

Luego simplemente descomprimir el paquete en un directorio conveniente:

root@linuxito:~# cd /usr/local/
root@linuxito:/usr/local# tar xzf ~/testssl-2.9.5-5.tar.gz
root@linuxito:/usr/local# ln -s testssl.sh-2.9.5-5/ testssl.sh

testssl.sh posee un buen número de opciones, las cuales se detallan al ejecutar el script sin parámetros, o utilizando la opción --help. Permite realizar chequeos por vulnerabilidad de forma individual; controlar el nivel de verbosidad; soporta el acceso a través de un proxy; y diferentes formatos de salida como texto plano, JSON o HTML.

La forma más simple para correr un test sobre un servidor HTTPS con salida en formato HTML es:

root@linuxito:~# /usr/local/testssl.sh/testssl.sh --html www.linuxito.com:443

El resultado se guarda en un archivo en formato HTML:


Tal vez pueda interesarte


Compartí este artículo