← Volver al inicio
Apache PHP.ini Hardening security.conf

Hardening de Apache

11/05/2022

Guía sobre la localización y configuración de los principales parámetros para securizar Apache y PHP: apache2.conf, security.conf y php.ini.

Instalación

apt install apache2
apt install libapache2-mod-php php-mysql

1. apache2.conf — /etc/apache2/apache2.conf

Fichero principal de Apache. Define el comportamiento general del servidor y gestiona los módulos activos.

Timeout

Tiempo (segundos) que el servidor espera al cliente. Valores altos exponen a ataques DoS.

Timeout 60

KeepAlive

Permite múltiples peticiones sobre la misma conexión TCP. Aumenta el tiempo de carga y el riesgo de DoS.

KeepAlive Off

KeepAliveRequests

Límite de peticiones por conexión persistente. 0 = ilimitado (no recomendado).

KeepAliveRequests 75

KeepAliveTimeout

Segundos que el servidor espera nuevas peticiones en una conexión persistente.

KeepAliveTimeout 3

2. security.conf — /etc/apache2/conf-available/security.conf

Contiene directivas clave de seguridad para el servidor.

ServerTokens

Controla qué información del servidor se envía en las cabeceras HTTP de respuesta.

ServerTokens Prod

ServerSignature

Añade un pie de página con info del servidor en páginas de error y listados de directorio.

ServerSignature Off

X-Content-Type-Options

Protege frente a vulnerabilidades de MIME sniffing. Impide que el navegador adivine el tipo de contenido.

Header set X-Content-Type-Options "nosniff"

X-Frame-Options

Previene ataques de clickjacking controlando si la página puede cargarse en un iframe.

Header set X-Frame-Options "SAMEORIGIN"

3. php.ini — /etc/php/8.1/cli/php.ini

Permite configurar el comportamiento de PHP, especialmente el manejo seguro de sesiones.

Configuración recomendada de sesiones

; La cookie expira al cerrar el navegador
session.cookie_lifetime  = 0

; Usa cookies para almacenar el ID de sesión
session.use_cookies      = 1

; Solo cookies, nunca ID de sesión en la URL (previene session fixation)
session.use_only_cookies = 1

; Rechaza IDs de sesión no generados por el servidor
session.use_strict_mode  = 1

; La cookie no es accesible desde JavaScript (mitiga XSS)
session.cookie_httponly  = On

; Solo envía la cookie por HTTPS
session.cookie_secure    = On

; Tiempo en segundos antes de considerar la sesión basura
session.gc_maxlifetime   = 1440

; Deshabilita la inserción del ID de sesión en etiquetas HTML
session.use_trans_sid    = 0

; Evita cachear contenido de sesiones autenticadas
session.cache_limiter    = nocache

; SHA-1 es más seguro que MD5
session.hash_function    = 1
ParámetroPor defectoRecomendadoMotivo
cookie_lifetime00Expira al cerrar navegador
use_only_cookies11Evita session fixation por URL
use_strict_mode01Obligatorio por seguridad
cookie_httponlyOnOnBloquea acceso JS a la cookie
cookie_secureOffOnSolo HTTPS
use_trans_sidOnOffElimina fugas de ID por URL
hash_function-1 (SHA-1)Más seguro que MD5