TLS

  • Este artículo explica cómo analizar las suites de cifrado y protocolos SSL/TLS soportados por un servidor Web, desde línea de comandos, utilizando la herramienta "cipherscan" desarrollada y mantenida por la Fundación Mozilla.

    Existen muchas herramientas online para diagnosticar y verificar el nivel de seguridad ofrecido en la implementación de SSL/TLS de un servidor Web, por ejemplo el Test SSL de Qualys. Sin embargo, es importante disponer de una herramienta de línea de comandos para llevar a cabo la misma tarea, especialmente si necesitamos verificar el nivel de seguridad de SSL/TLS de servidores Web no accesibles desde Internet. A tal fin, dí con la herramienta cipherscan (creada por la Fundación Mozilla), la cual sirve para listar todas las suites de cifrado soportadas por un servidor HTTPS y su ordenamiento, al igual que analizar y verificar la información de certificados, opciones de TLS, OCSP Stapling y más.

  • Esta semana tuve la necesidad de habilitar SSL en un servidor Web que aloja diferentes dominios (cada uno con su certificado SSL/TLS provisto por Let's Encrypt). El problema es que este servidor Web posee una única dirección IP a la cual resuelven todos los nombres de host de los diferentes dominios y sitios Web hospedados en el mismo.

    Tradicionalmente sólo se podía habilitar SSL en un sitio Web si éste estaba ligado a una y sólo una dirección IP en particular. Esto era una limitación muy grande pues si, por ejemplo, necesitaba habilitar SSL en 3 sitios Web diferentes, necesitaba 3 direcciones IP dedicadas a cada uno.

    Afortunadamente, con la llegada de Apache 2.2.12 en 2009 se agregó el soporte para SNI (Server Name Indication). SNI es una extensión del protocolo TLS a través de la cual los clientes le indican al servidor el nombre de host al cual están tratando de conectarse, para que éste les envíe el certificado correspondiente. De esta forma es posible tener múltiples certificados asociados a diferentes nombres de host en una misma dirección IP. Por supuesto los clientes deben soportar esta extensión.

    Actualmente la mayoría de los clientes soportan esta extensión, a excepción de unas pocas librerías y sistemas operativos cuasi-obsoletos como Symbian o Blackberry OS, al igual que el navegador de línea de comandos ELinks.

    Gracias a SNI es posible configurar sitios HTTPS basados en nombre, de la misma forma en que se configuran sitios HTTP basados en nombre (VirtualHosts).

  • Certbot es un cliente ACME automático y fácil de utilizar, que obtiene certificados SSL/TLS gratis para tu sitio Web, provistos por Let's Encrypt. Certbot fue desarrollado por la EFF (Electronic Frontier Foundation) como "cliente oficial" de la autoridad certificante de Let's Encrypt, pero también funciona con cualquier CA que soporte el protocolo ACME (Automated Certificate Management Environment).

    Certbot (anteriormente el cliente Let's Encrypt letsencrypt-auto) es el cliente recomendado por Let's Encrypt para emitir sus certificados, y opcionalmente auto-configurar HTTPS en tu servidor Web.

    Este artículo explica cómo emitir un certificado SSL/TLS gratuito de Let's Encrypt utilizando el cliente certbot utilizando el plugin webroot en Debian 7 (wheezy).

  • Luego de implementar mi servidor OpenLDAP con PostgreSQL como backend, el siguiente paso consistió en configurar SSL/TLS para implementar un nivel de seguridad mínimo en las comunicaciones entre el servidor LDAP y los clientes.

    Aunque se trabaje sobre un entorno de pruebas o desarrollo, es indispensable contar con un certificado de confianza válido. Esto se debe a que OpenLDAP no permite utilizar un certificado autofirmado para utilizar en el servidor. De este modo tenemos varias alternativas: comprar un certificado firmado por una entidad de confianza; generar un certificado gratuito con certbot; o crear nuestra propia CA autofirmada.

    Crear nuestra propia CA tiene sus ventajas, ya que nos permite generar cualquier número de certificados y nos da mayor flexibilidad, aunque implica una mayor cantidad de trabajo al momento de configurar el servidor LDAP. Este artículo explica cómo configurar OpenLDAP para que haga uso de un certificado generado a través de nuestra propia CA (de forma similar a como lo hace OpenVPN).

  • Un pregunta de un lector en la entrada Hardening de SSL/TLS en servidores HTTPS me llevó a buscar y probar una solución para este problema: cómo predecir el impacto, en los clientes de un sitio Web, al deshabilitar un protocolo inseguro dentro de la configuración de suites de cifrado de TLS.

    Este lector en particular, necesitaba saber si alguno de sus clientes se verían afectados al deshabilitar el algoritmo criptográfico de encriptación de flujo RC4, el cual es inseguro (vulnerable a un amplio abanico de ataques y ya sin soporte por los principales navegadores). La solución consiste en lograr que el servidor Web registre en el log de accesos el protocolo y suite de cifrado elegidas durante la negociación (handshake) para cada acceso. De esta forma es posible, luego de un tiempo, determinar si existen cliente que aún utilizan el protocolo/suite de cifrado que deseamos deshabilitar (para mejorar la seguridad).

  • Este artículo explica cómo lograr que un sitio MediaWiki funcione correctamente tanto sobre HTTP como sobre HTTPS.

  • El objetivo de este artículo es proveer una guía para mejorar la implementación de un servidor Web seguro utilizando SSL/TLS, particularmente el caso de servidores Apache con mod_ssl (OpenSSL). Se trata de un conjunto de buenas prácticas de seguridad en servidores SSL, junto con un par de herramientas interesantes para determinar en qué estado de seguridad se encuentra tanto nuestro servidor Web como nuestro cliente.

  • Supongamos que hemos montado un servidor OpenVPN accesible libremente desde Internet (desde cualquier dirección IP). Este, por ejemplo, es el caso en el que deseamos que clientes conectados desde cualquier ubicación (usuarios remotos y con movilidad) puedan acceder a nuestra red local corporativa.

    El problema es que tener un acceso público a nuestra VPN nos vuelve blanco de todo tipo de ataques, con lo cual deseamos mejorar la seguridad de su instalación (hardening). Afortunadamente es posible recurrir al mecanismo de autenticación TLS para crear un firewall HMAC (hash-based message authentication code). Esto permite bloquear ataques de tipo DoS (Denial of Service) y flooding de puertos UDP antes de que se establezca efectivamente la conexión con el servidor OpenVPN.

  • Hace apenas unos días recibí este correo anunciando el final de la autoridad certificante gratuita StartSSL. En gran medida, esta entidad certificante que proveyó certificados SSL/TLS gratuitos durante años, desaparece por obra y gracia de Google.

  • OpenSSL es el kit criptográfico que implementa los protocolos de red Secure Sockets Layer (SSL v2/v3) y Transport Layer Security (TLS v1), y los estándares criptográficos relacionados, para los sitemas operativos *nix (Solaris, GNU/Linux, Mac OS X y BSD), OpenVMS y Microsoft Windows.

    En GNU/Linux, la herramienta openssl permite utilizar varias funciones criptográficas de la librería OpenSSL desde línea de comandos. Se puede utilizar openssl para: crear y gestionar claves públicas y privadas; realizar operaciones criptográficas con clave pública; crear certificados, CSRs y CRLs X.509; calcular digests de mensajes; encriptar y desencriptar con diferentes algoritmos de cifrado; verificar clientes y servidores SSL/TLS; manipular mensajes de correo electrónico firmados o cifrados mediante S/MIME; entre otras funciones.

  • Mozilla a desarrollado un escáner en línea capaz de verificar que los servidores Web implementen correctamente las medidas de seguridad adecuadas. Este test se denomina Observatory by Mozilla y está inspirado en el test SSL de Qualys SSL Labs.

  • Hace unos meses compartí un artículo que explicaba cómo verificar la seguridad de un servidor Web con el Observatorio de Mozilla.

    El "observatorio" es un proyecto enfocado a ayudar a desarrolladores, administradores y expertos en seguridad a configurar sus sistemas de forma segura. Se trata de un escáner en línea capaz de verificar que los servidores Web implementen correctamente las medidas de seguridad adecuadas. Sin embargo, Mozilla además provee un cliente de línea de comandos que permite realizar escaneos de servidores desde nuestra terminal:

    github.com/mozilla/observatory-cli

    Esto permite la posibilidad de correr baterías de tests sobre varios servidores, para analizar luego los resultados e integrarlos con nuestros scripts de seguridad.