Guía Completa de Seguridad y Fortalecimiento de Apache Web Server



Introducción

Apache Web Server es un componente crítico en aplicaciones web, ya que generalmente se encuentra en el borde de la red y está expuesto a ataques. Configuraciones por defecto pueden revelar información sensible, facilitando ataques como XSS, inyecciones PHP y gestión inadecuada de sesiones.

Según Acunetix, el 84% de las aplicaciones probadas tienen vulnerabilidades. Esta guía práctica proporciona habilidades esenciales para asegurar Apache en sistemas Unix.


1. Eliminación de Fugas de Información

1.1 Eliminar la Versión del Servidor

Exponer la versión del servidor facilita la identificación de vulnerabilidades conocidas. Para eliminarlo:

  1. Edita el archivo httpd.conf:
    ServerTokens Prod
    ServerSignature Off
    
  2. Reinicia Apache:
    systemctl restart apache2
    

1.2 Desactivar Listado de Directorios

Para evitar que los usuarios vean archivos dentro de directorios, modifica httpd.conf:

<Directory /opt/apache/htdocs>
   Options -Indexes
</Directory>

Reinicia Apache tras la modificación.

1.3 Deshabilitar ETags

Las ETags pueden filtrar información sobre el sistema de archivos:

FileETag None

2. Autorización

2.1 Ejecutar Apache con Usuario No-Privilegiado

Por defecto, Apache corre como nobody o daemon. Es recomendable usar un usuario específico:

groupadd apache
useradd -G apache apache
chown -R apache:apache /opt/apache

Edita httpd.conf:

User apache
Group apache

Reinicia Apache para aplicar cambios.

2.2 Proteger Directorios de Configuración

Cambia permisos de bin y conf para restringir acceso:

chmod -R 750 /opt/apache/bin /opt/apache/conf

2.3 Deshabilitar ".htaccess"

Evita que usuarios sobrescriban configuraciones del servidor:

<Directory />
   AllowOverride None
</Directory>

2.4 Restringir Métodos HTTP

Para permitir solo los métodos esenciales:

<LimitExcept GET POST HEAD>
   deny from all
</LimitExcept>

3. Seguridad en Aplicaciones Web

3.1 Deshabilitar HTTP TRACE

Para evitar ataques Cross-Site Tracing:

TraceEnable off

3.2 Configurar Cookies con HttpOnly y Secure

Protege contra ataques de secuestro de sesiones:

Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

3.3 Prevenir Clickjacking

Evita que el sitio se cargue en un iframe malicioso:

Header always append X-Frame-Options SAMEORIGIN

3.4 Deshabilitar SSI

Evita inyecciones de código SSI:

<Directory /opt/apache/htdocs>
   Options -Indexes -Includes
</Directory>

3.5 Activar Protección XSS

Bloquea intentos de XSS en navegadores compatibles:

Header set X-XSS-Protection "1; mode=block"

3.6 Forzar Uso de HTTP 1.1

Para evitar vulnerabilidades de HTTP 1.0:

RewriteEngine On
RewriteCond %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* - [F]

3.7 Reducir Tiempo de Timeout

Para mitigar ataques DoS como Slow Loris:

Timeout 60

4. Seguridad SSL

4.1 Generar Claves SSL Seguras

Usar claves de 2048 bits:

openssl req -out mi_certificado.csr -newkey rsa:2048 -nodes -keyout mi_llave.key

4.2 Configurar Cifrado SSL Seguro

Edita httpd-ssl.conf:

SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4

4.3 Deshabilitar SSLv2 y SSLv3

Para mitigar ataques como POODLE:

SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2

5. Implementación de ModSecurity

5.1 Instalación

Instala dependencias:

yum install httpd-devel pcre-devel libxml2-devel lua-devel curl-devel

Descarga e instala ModSecurity:

wget https://github.com/SpiderLabs/ModSecurity/releases/latest/download/modsecurity.tar.gz
tar -xvzf modsecurity.tar.gz
cd modsecurity
./configure --with-apxs=/usr/bin/apxs
make && make install

5.2 Configuración

Carga módulos en httpd.conf:

LoadModule security2_module modules/mod_security2.so

Habilitar reglas base:

<IfModule security2_module>
   Include conf/crs/modsecurity_crs_10_setup.conf
   Include conf/crs/base_rules/*.conf
</IfModule>

Reinicia Apache.


6. Registro y Monitoreo de Seguridad

6.1 Configurar Logs de Acceso

Capturar eventos detallados es fundamental para detectar anomalías y posibles ataques. Configura Apache para registrar detalles adicionales:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T" extended
CustomLog /var/log/apache2/access.log extended

6.2 Configurar Logs de Errores

Para mejorar la capacidad de diagnóstico, aumenta el nivel de detalle de los logs de errores:

ErrorLog /var/log/apache2/error.log
LogLevel warn

Si se requieren más detalles en caso de ataques:

LogLevel info

6.3 Implementar Monitoreo en Tiempo Real

Para analizar registros en tiempo real y responder a incidentes:

tail -f /var/log/apache2/access.log

Herramientas recomendadas:

  • GoAccess: Analiza logs de Apache en tiempo real con interfaz visual.
  • Fail2Ban: Bloquea IPs maliciosas detectadas en los logs.
  • ModSecurity AuditLog: Proporciona detalles de eventos de seguridad.
apt install goaccess
fail2ban-client status

7. Mantenimiento y Mejores Prácticas

7.1 Aplicar Actualizaciones de Seguridad

Siempre mantén Apache y los módulos actualizados:

apt update && apt upgrade -y

Configura actualizaciones automáticas:

apt install unattended-upgrades

7.2 Deshabilitar Módulos No Necesarios

Reduce la superficie de ataque deshabilitando módulos innecesarios:

a2dismod autoindex

Lista módulos activos:

a2query -m

7.3 Configurar Permisos de Archivos y Directorios

Asegura que Apache no tenga permisos excesivos:

chmod -R 750 /etc/apache2/
chown -R root:www-data /etc/apache2/

Restringe la edición de configuraciones críticas:

chattr +i /etc/apache2/apache2.conf

Conclusión

Siguiendo estas prácticas, Apache Web Server será más seguro y resistente a ataques. Implementa estas configuraciones y monitorea regularmente para mantener un entorno seguro y confiable.



Publicar un comentario

Hola

Articulo Anterior Articulo Siguiente