Seguridad
La seguridad en OPanel está construida con herramientas estándar de Debian — sandboxing con systemd, cgroups, nftables, mTLS — en lugar de un módulo de kernel de terceros. Esta página cubre lo que los operadores configuran y monitorean.
Aislamiento por sitio
Sección titulada «Aislamiento por sitio»Cada sitio obtiene, sin ninguna configuración adicional:
| Capa | Cómo |
|---|---|
| Identidad | Su propio usuario y grupo Unix, con un ID único en todo el clúster para que los sitios se muevan entre servidores sin chown |
| Sistema de archivos | Su propio directorio home, modo 0710, invisible para cualquier otro inquilino |
| Procesos | Un sandbox de systemd para cada proceso que ejecuta — PHP-FPM, cron, SSH/SFTP, WP-CLI, operaciones del administrador de archivos |
| Recursos | Un slice de cgroup v2 con su propia cuota de CPU, límite de memoria, límite de procesos y peso de E/S |
| PHP | Su propio proceso maestro de PHP-FPM y su propio OPcache — sin contaminación de caché entre inquilinos |
| Caché | Su propia instancia de Valkey, o un usuario ACL restringido a su propio prefijo de claves |
| Base de datos | Sus propios usuarios de MariaDB, con permisos solo sobre sus propias bases de datos |
El código de un sitio no puede ver los archivos, procesos ni la caché de PHP de otro inquilino. Esto es lo que CloudLinux y CageFS venden como complemento pago sobre cPanel; acá es el comportamiento por defecto de cada sitio, sobre Debian estándar.
Firewall de aplicaciones web (WAF)
Sección titulada «Firewall de aplicaciones web (WAF)»Cada sitio tiene un modo de firewall: apagado, detectar (las coincidencias se registran, nada se bloquea) o bloquear (las solicitudes sospechosas reciben un 403 con la marca del proveedor). Es Coraza corriendo el OWASP Core Rule Set, que inspecciona la línea de solicitud, los encabezados y hasta 13 MiB del cuerpo.
Si el firewall mismo no logra cargar, los sitios en modo bloqueo reciben un 503 en lugar de quedar
sin protección; los sitios en modo detectar siguen sirviendo sin inspección. El servidor afectado
muestra un problema waf_unavailable en la consola hasta que se recupera.
Bloqueo de IPs en todo el clúster
Sección titulada «Bloqueo de IPs en todo el clúster»Un fail2ban integrado para toda la plataforma. El controlador, las puertas de enlace SSH y los edges cuentan señales de abuso por dirección de cliente cada uno por su lado, y las reportan de forma centralizada:
| Señal | La reporta | Umbral por defecto |
|---|---|---|
panel_login |
El controlador | 20 inicios de sesión fallidos en 15 minutos |
ssh_auth |
Puertas de enlace SSH | 15 intentos rechazados en 10 minutos |
wp_login |
Edges | 20 inicios de sesión fallidos de WordPress en 10 minutos |
xmlrpc |
Edges | 60 solicitudes a xmlrpc.php en 5 minutos |
waf |
Edges | 20 solicitudes bloqueadas en 10 minutos |
flood |
Edges | 300 solicitudes por encima del límite de ráfaga de 100/s en 1 minuto |
Una dirección que supera un umbral queda bloqueada en todos los servidores en cuestión de segundos: 10 minutos la primera vez, 1 hora la segunda, 24 horas desde la tercera dentro de una ventana móvil de 7 días. Loopback, rangos privados, direcciones de nodos del clúster, tus redes de administración y una lista blanca del personal nunca se bloquean, y un bloqueo nunca corta una sesión SSH abierta de un operador.
Gestionalo en Admin → Security → IP blocking, o en /api/v1/ip-blocks,
/api/v1/ip-allowlist y /api/v1/ip-blocking/settings. Si un sitio está detrás de un CDN en el
que no confías explícitamente, agrega las redes del CDN a edgeTrustedProxies — de lo contrario,
todos los visitantes detrás de él comparten la dirección del CDN y el CDN mismo termina bloqueado.
Escaneo de malware
Sección titulada «Escaneo de malware»Cada sitio se escanea en el servidor que aloja sus archivos: los archivos modificados cada seis horas, un escaneo completo semanal, cada sitio en su propio horario dentro de la ventana. Corren tres capas, de la más barata a la más cara:
- Checksums de WordPress —
wp core verify-checksumsy checksums de plugins contra WordPress.org, sin cargar ningún código de plugin ni de tema. - El escáner integrado — lee cada archivo (nunca ejecuta ninguno), compara hashes contra una
lista de archivos conocidos como maliciosos, y aplica reglas léxicas para malware web en PHP:
cadenas ofuscadas de
eval/base64_decode, marcadores de web shells, subidores de archivos disfrazados, PHP escondido en carpetas de subidas o imágenes, y más. - ClamAV y YARA, si los instalas en un servidor — los escaneos los detectan automáticamente desde la siguiente corrida.
Los hallazgos se ponen en cuarentena en la papelera del servidor (recuperables hasta que pase la
ventana de retención), se resuelven o se marcan como falso positivo. Los dueños del sitio reciben
un email ante hallazgos nuevos de severidad alta o crítica. Ver Admin → Security → Malware o
/api/v1/sites/{id}/malware.
Seguridad del inicio de sesión
Sección titulada «Seguridad del inicio de sesión»- El personal debe tener un segundo factor — una app de autenticación o una passkey — antes de poder hacer cualquier cosa que no sea configurarlo. Esto aplica tanto al personal de la plataforma como al de las marcas de revendedores.
- Passkeys, TOTP y códigos de recuperación están disponibles para toda cuenta. Se entregan diez códigos de recuperación al configurar un segundo factor por primera vez.
- Las sesiones se listan y se pueden revocar individualmente, con tiempos de espera de inactividad y absolutos.
- Los tokens de API nunca actúan sobre la cuenta que los creó — un token filtrado puede actuar sobre clientes y sitios dentro de sus permisos, pero no puede cambiar una contraseña, leer segundos factores ni agregar una clave SSH. Ver Referencia de la API.
Recuperá el acceso a una instalación bloqueada desde la línea de comandos, como la cuenta de
servicio opanel:
runuser -u opanel -- opanel admin reset-password --email persona@example.comrunuser -u opanel -- opanel admin reset-password --email persona@example.com --clear-mfamTLS entre componentes
Sección titulada «mTLS entre componentes»Cada conexión interna — controlador, agentes, edges, puertas de enlace SSH — es TLS mutuo sobre la autoridad de certificación propia del clúster. Los certificados duran 90 días y se renuevan solos automáticamente. Retirar un servidor, o quitarle un rol, revoca sus certificados de inmediato, en ambas direcciones, en lugar de dejar que venzan naturalmente — un servidor retirado o degradado no puede seguir hablando con el clúster, y el clúster deja de responderle. Cada cliente además fija el servidor específico al que se quiere conectar, no solo su rol, así que un certificado no se puede reutilizar para hacerse pasar por otro nodo.
Registro de auditoría
Sección titulada «Registro de auditoría»Cada acción que modifica algo en OPanel — sea del personal, de un cliente o del sistema mismo —
queda registrada con quién la hizo, su dirección IP, el objeto afectado y qué cambió. El personal
puede filtrarlo por actor, acción, sujeto y rango de tiempo en Admin → Audit log o
GET /api/v1/audit.