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.
apt install apache2
apt install libapache2-mod-php php-mysql
/etc/apache2/apache2.confFichero principal de Apache. Define el comportamiento general del servidor y gestiona los módulos activos.
Tiempo (segundos) que el servidor espera al cliente. Valores altos exponen a ataques DoS.
Timeout 60
Permite múltiples peticiones sobre la misma conexión TCP. Aumenta el tiempo de carga y el riesgo de DoS.
KeepAlive Off
Límite de peticiones por conexión persistente. 0 = ilimitado (no recomendado).
KeepAliveRequests 75
Segundos que el servidor espera nuevas peticiones en una conexión persistente.
KeepAliveTimeout 3
/etc/apache2/conf-available/security.confContiene directivas clave de seguridad para el servidor.
Controla qué información del servidor se envía en las cabeceras HTTP de respuesta.
ServerTokens Prod
Añade un pie de página con info del servidor en páginas de error y listados de directorio.
ServerSignature Off
Protege frente a vulnerabilidades de MIME sniffing. Impide que el navegador adivine el tipo de contenido.
Header set X-Content-Type-Options "nosniff"
Previene ataques de clickjacking controlando si la página puede cargarse en un iframe.
Header set X-Frame-Options "SAMEORIGIN"
/etc/php/8.1/cli/php.iniPermite configurar el comportamiento de PHP, especialmente el manejo seguro 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ámetro | Por defecto | Recomendado | Motivo |
|---|---|---|---|
| cookie_lifetime | 0 | 0 | Expira al cerrar navegador |
| use_only_cookies | 1 | 1 | Evita session fixation por URL |
| use_strict_mode | 0 | 1 | Obligatorio por seguridad |
| cookie_httponly | On | On | Bloquea acceso JS a la cookie |
| cookie_secure | Off | On | Solo HTTPS |
| use_trans_sid | On | Off | Elimina fugas de ID por URL |
| hash_function | - | 1 (SHA-1) | Más seguro que MD5 |