Hace mucho tiempo que no hablamos de servidores, sus tecnologías… y sus problemas. Cuando tienes alojado un blog o página web en un servidor VPS puedes encontrarte muchos retos debido a la gran cantidad de tecnologías que están presentes para que una web funcione. Por nombrar algunos de los más comunes: Linux, WHM/cPanel, Apache, PHP, MySQL, módulos de seguridad como Mod_security o Mod_ruid2 etc…
[Servidor VPS] Error con mod_security + mod_ruid2: «ModSecurity: Audit log: Failed to unlock global mutex: Permission denied»
Hoy os vamos a comentar como resolver un problema muy común cuando tienes alojada tu web en un servidor VPS con WHM/cPanel, con PHP handler como DSO + mod_security + mod_ruid2.
Vamos a explicar primero que es cada cosas por si no lo tienes claro:
- Servidor VPS: Un servidor virtual privado es un servidor físico participando en varios servidores de tal modo que todo funciona como si se estuviese ejecutando en una sola máquina.
- WHM/cPanel: Panel de control para realizar las tareas administrativas de un servidor. Posiblemente el más popular.
- PHP Handler: Modo en que PHP ejecuta sus librerías. Hay varios: DSO, SuPHP, FCGI…
- Mod_security: firewall de aplicaciones Web que se ejecuta como módulo del servidor web Apache.
- Mod_ruid2: modulo de Apache que incrementa la seguridad asegurándose que los archivos a través de apache se ejecutan con un usuario determinado
Una de las configuraciones más típicas que se están viendo ahora mismo en muchos servidores VPS es instalar Apache 2.4, MySQL 5.6 PHP con DSO + mod_ruid2 (buen rendimiento y seguridad) + mod_security (firewall) + Mencached (caché de datos u objetos en la memoria RAM).
El problema viene cuando instalamos mod_security + mod_ruid2 en WHM/Cpanel. Si vamos a los logs del sistema nos podemos encontrar con error como este:
«ModSecurity: Audit log: Failed to unlock global mutex: Permission denied»
El problema se soluciona incluyendo las siguientes lineas en /usr/local/apache/conf/modsec2.user.conf y reiniciando Apache:
SecAuditLogDirMode 0777
SecAuditLogFileMode 0550
SecAuditLogStorageDir /usr/local/apache/logs/modsec_audit
SecAuditLogType Concurrent
¿Qué conseguimos con estas líneas de codigo? Le estamos diciendo donde esta el archivo de logs y que permisos tienen que tener.
Fuente: github.com