Ir al contenido

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.

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.

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.

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.

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:

  1. Checksums de WordPress — wp core verify-checksums y checksums de plugins contra WordPress.org, sin cargar ningún código de plugin ni de tema.
  2. 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.
  3. 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.

  • 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:

Ventana de terminal
runuser -u opanel -- opanel admin reset-password --email persona@example.com
runuser -u opanel -- opanel admin reset-password --email persona@example.com --clear-mfa

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.

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.