Seguridad HTTPS Apache

Introducción

En este artículo vamos a trabajar en la seguridad HTTPS Apache. Utilizaremos las tecnologías actuales hasta el momento (09/03/2020) para dejar nuestro sitio web ágil, seguro y confiable.

El resumen de lo que haremos:

  • TLS 1.3
  • HSTS
  • Configuraciones SSL
  • Comprobaciones Online

¡Vamos a ello!


Seguridad HTTPS Apache

Para empezar a trabajar:

  • Ubuntu 18.04
  • Versión de Apache >= 2.4.37

La versión de Apache por defecto en Ubuntu 18.04 es 2.4.18, por lo tanto no nos vale por defecto. Pero que no cunda el pánico, para todo tenemos solución.

Instalando repositorios Ondrej

Estos repositorios son bastante conocidos en la comunidad de Debian ya que nos permite tener varias versiones de PHP y además una versión actualizada de Apache.

add-apt-repository ppa:ondrej/apache2
apt-get update && apt-get -y upgrade

Nota: Si aparece los paquetes en keepback podemos desinstalarlo o forzar la instalación de los paquetes especificando los mismos.

En nuestro caso aparecían las versiones de Apache que hemos tenido que forzar a los nuevos de este repositorio. Por lo tanto tras instalar estos ya tenemos la nueva versión de Apache.

Con esta nueva versión ya tenemos la posibilidad de poder usar TLS 1.3 (último protocolo y más seguro).


HSTS

HSTS (HTTP Strict Transport Security) es una capa extra de seguridad para nuestra navegación en HTTPS que evita ataques man in the middle y posibles secuestros de sesiones.

# Requisitos

a2enmod headers
service apache2 restart

La siguiente línea la podemos poner por defecto en el fichero de configuración «conf-enabled/security.conf». Pero lo dejaremos a nivel de VirtualHost para que se controle desde el propio sitio web.

Header always set Strict-Transport-Security "max-age=4838400; includeSubdomains;"

Configuraciones SSL

Aquí vamos a incluir políticas que dejaremos configuradas de manera genérica para todos los sitios webs. Este fichero se encuentra «mods-enabled/ssl.conf»

SSLCipherSuite

SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

Nota: Los cifrados afectan sobre todo a los clientes más antiguos. A más restrictivos más posibilidades existe de que no funcionen correctamente por HTTPS.

Este es uno genérico que nos hará pasar las auditorias. En el caso de que no sea así simplemente se debe ir eliminando los cifrados que no necesitemos.

SSLHonorCipherOrder

Este parámetro fuerza que se usen los CipherSuite que hemos establecido en el servidor web (Apache).

SSLHonorCipherOrder on

SSLProtocol

Vamos a dejar deshabilitado el protocolo SSLv3 ya que ha sido uno de los que mayores agujeros de seguridad ha tenido. El resto de los protocolos los permitimos.

SSLProtocol all -SSLv3

Habilitando HTTP2

Recordamos que tenemos creado un artículo que explica cómo habilitar HTTP2 (la mayoría de los pasos los tenemos hecho)

Ver Habilitando HTTP2


Comprobaciones Online

Existen distintas webs que nos permiten revisar la seguridad de nuestro certificado. Os dejo estas dos webs que al menos a mi me funcionan muy bien:

Nota: Marcad siempre la casilla de que nuestro resultado no salgo públicamente si queremos mantener nuestro anonimato.


Conclusión

Hemos aprendido a implementar nuevas configuraciones de seguridad para respirar un día más con nuestros clientes. Además de ello hemos ganado velocidad, estar en la última tecnología y estar listos para varios años más en el mercado.

Recordad que podéis visitar la categoría SEGURIDAD, para obtener otros artículos relacionados.

Si tenéis alguna duda, podéis comentar la entrada e intentaré resolverlas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *