Hardening de un servidor Web Apache

A la hora de tener mantener un servidor web, es necesario tenerlo controlado y securizarlo todo lo posible para evitar ataques, penetraciones o exponer información sensible. En este post, se van a dar ciertos consejos para poder tener un apache optimizado y securizado. Además de para apache, se darán pequeñas indicaciones para mejorar la seguridad en PHP y MySQL.

Apache

Para empezar con la securización, empezamos editando los archivos de configuración y modificando lo siguiente:

Y aquí modificar lo siguiente (puede que haya cosas que no haga falta cambiar)

Luego, es recomendable ajustar los valores de nuestro mpm. Para ver que mpm se está usando hay que hacerlo con el comando apachectl -M y ver los módulos cargados. En este caso se usará prefork que es el que viene por defecto. Estos valores variaran dependiendo de los recursos de la máquina. El ejemplo que se muestra es para una VPS sencilla. Si se quieren ajustar mas, recomiendo este post.

A continuación modificar el fichero de seguridad de apache

Cambiar lo siguiente:

Y por último añadir las siguientes líneas

Es recomendable habilitar la cabecera CSP, pero hay que tener cuidado ya que al ser tan restrictiva puede deshabilitar ciertas funciones de la página. Para utilizar la configuración adecuada, recomiendo la extensión para firefox: Laboratory (Content Security Policy / CSP Toolkit)

Habilitar el modulo de headers

Deshabilitar módulos innecesarios por defecto

MOD_SECURITY2

Mod_Security2, es uno de los WAF (Web Application Firewall), mas famosos que hay. Lo que hace es proteger las aplicaciones web mediante un firewall con unas reglas predefinidas que se cargan evitando así posibles ataques XSS, sqli…

Instalar el modulo

Editar el archivo de configuración y configurar lo siguiente

Descargar las reglas de OWASP para modsecurity2

Crear el archivo de configuración de crs

Crear el archivo de configuración de modsecurity

Editar la configuración

Y añadir los siguiente

Activar el módulo

Más info: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

MOD_QOS

El módulo QoS previene los ataques DoS  evitando así la sobrecarga de peticiones en el servidor y la caída de los servicios. Este módulo no es soportado por apache 2.4

Instalar el modulo QoS

Editar el archivo de configuración

REQTIMEOUT

Este módulo viene en apache por defecto por lo tanto solo hay que activarlo. Y lo que hace es establecer limites de tiempo en las peticiones.

Habilitar el módulo

Editar el archivo de configuración

Mod_evasive

Instalar el modulo mod_evasive

Crear el directorio de logs

Editar la configuración del módulo

SITES

Por último, hay que tener los sites bien configurados. Es recomendable el forzar que las conexiones se realicen por HTTPS para que sean cifradas.

Activar el módulo de reescritura

Editar el archivo de site que esté escuchando en el puerto 80 y forzar la reescritura y personalizar los logs

Activar el módulo de SSL

Editar el archivo del site que esté escuchando en el 443 y habilitar los certificados, crear el diffie-hellman y personalizar los logs.

Crear el certificado diffie-hellman

Configurar el site

Una vez hecho todo esto hay que reiniciar apache

Comandos interesantes de apache

Ver los módulos cargados

Comprobar si la sintaxis de los ficheros de configuración es correcta

Ver el estado de apache

PHP

Desactivar el que php exponga información

Comprobar los módulos de PHP

Para deshabilitar

MySQL

Lanzar el comando propio de mysql para una instalación segura

Que solo esté escuchando en localhost

Leave a Reply

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