Qué hace WardPane 2.0
WardPane 2.0 aloja sitios estáticos, PHP y Node.js con certificados automáticos y compatibilidad con Cloudflare. La protección y el control de tráfico funcionan por sitio dentro del servidor web. En la mayoría de los ocho paneles de la página de comparación, estas funciones dependen de ModSecurity o de un complemento de pago.
Para principiantes y para administradores con experiencia
Los principiantes tienen un solo comando para instalar, certificados que se emiten solos, sitios aislados y ajustes explicados con palabras sencillas. Los administradores con experiencia tienen todas las opciones, una terminal en el navegador, PM2 por propietario, .htaccess, reglas por sitio en un orden conocido, la API de Cloudflare, exportación e importación, sumas de verificación de las versiones y el código fuente.
Hosting
Los sitios siguen una estructura al estilo de ISPmanager, pertenecen a un usuario Linux y los sirve el propio WardPane en los puertos 80 y 443.
- Sitios y alias
- Un sitio es un dominio más hasta 99 alias (un certificado de Let's Encrypt admite como máximo 100 nombres). Un alias sirve el sitio principal o, si tiene carpeta propia, esa carpeta. Los sitios pueden tener un nombre visible.
- Estructura por propietario
- Los archivos están en /var/www/<owner>/data/www/<domain>, con los registros y archivos temporales al lado. El propietario por defecto es www-root, un usuario Linux que crea WardPane. Los sitios de la 1.x conservan sus carpetas anteriores.
- Tres manejadores
- Sin manejador (hosting estático), PHP o Node.js, elegido por sitio y modificable en cualquier momento. Los ajustes de los otros manejadores se conservan, así que al volver se restauran.
- Archivos estáticos
- Modo SPA (las rutas desconocidas van a index.html), su propio 404.html, ETag fuertes con descargas reanudables, redirección de HTTP a HTTPS y enlaces simbólicos que nunca pueden salir de la carpeta del sitio.
- Entornos de ejecución
- El panel lista las versiones de PHP instaladas en el servidor y las versiones mayores de Node.js que admite: 20, 22, 24 y 26, con la 24 por defecto (la 20 llegó al fin de su vida útil en abril de 2026). Las compilaciones de Node.js vienen de nodejs.org y se verifican con las sumas SHA256 publicadas.
- Un menú en cada sitio
- Cada fila de la tabla de sitios tiene un menú con todas las acciones de ese sitio, y un interruptor apaga el sitio y lo vuelve a encender sin borrar nada.
- Shell en el navegador
- Una terminal dentro del panel: una shell de root en una sesión de root, o la shell del propietario del sitio en la carpeta del sitio. pm2 list y pm2 restart funcionan ahí para los sitios Node.js.
- Exportación e importación
- Cada sitio con todos sus ajustes, más la lista de bloqueo global, va a un solo archivo JSON. La importación fusiona o reemplaza, revisa primero el archivo completo y nunca toca los archivos de /var/www.
PHP y Node.js
Cada sitio dinámico se ejecuta con su propio usuario Linux dentro de un sandbox de systemd. Un sitio roto o comprometido no puede leer a sus vecinos.
- Un pool php-fpm por sitio
- Sin pool compartido, sin opcache ni sesiones compartidas. El código es de solo lectura para PHP; solo puede escribir en tmp/, logs/, data/ y las carpetas que usted indique, y PHP nunca se ejecuta desde esas carpetas.
- Un sandbox estricto para PHP
- Todo el sistema de archivos es de solo lectura y noexec salvo el propio php-fpm, open_basedir está configurado, exec, system, shell_exec, proc_open, popen y putenv están desactivados, y las llamadas al sistema se filtran.
- .htaccess sin Apache
- Reglas de reescritura, redirecciones, reglas de acceso, Basic auth, cabeceras y caché de sitios reales funcionan tal cual: WordPress, Laravel y las redirecciones habituales a HTTPS y www. Las líneas que no puede aplicar se muestran, nunca se adivinan.
- Node.js con PM2
- Elija una versión mayor de Node.js, un script de npm o un archivo de entrada, variables de entorno y límites. Un daemon PM2 por propietario ejecuta las aplicaciones, así que pm2 funciona desde la shell del propietario.
- El proxy delante de la aplicación
- Los archivos de public/ se sirven directamente si lo desea; el resto va a la aplicación con la IP real del visitante en X-Forwarded-For y X-Real-IP. Los WebSocket pasan tras las mismas comprobaciones de protección.
- Reinicio, npm install y registros
- La pestaña Manejador tiene botones para reiniciar y para npm install (npm ci cuando hay lockfile), los registros de salida, errores e instalación, y los scripts de package.json para elegir.
Certificados y Cloudflare
Los certificados se emiten y renuevan sin pasos manuales, también para sitios detrás de Cloudflare.
- Let's Encrypt, totalmente automático
- Un certificado por sitio con todos sus alias, renovado cuando le queda un tercio de su vigencia. Los nombres cuyo DNS no apunta al servidor se omiten y se añaden cuando lo hace, y el panel muestra el motivo.
- IPv6 también comprobado
- Let's Encrypt prueba IPv6 primero, así que cada registro AAAA debe apuntar al servidor. WardPane los comprueba antes de pedir un certificado.
- Un certificado para la IP
- La IP del servidor recibe un certificado de corta duración, renovado cada pocos días. El panel en https://<ip>:1500 se abre sin advertencias.
- Límites de frecuencia de Let's Encrypt
- El panel no pide certificados duplicados, informa a la vez de todos los nombres fallidos de un pedido, espera más tras cada fallo y reemplaza una cuenta ACME desactivada.
- Un token de Cloudflare con un clic
- El botón Crear token de Cloudflare abre Cloudflare con los permisos correctos ya rellenados. Pegue el token de vuelta y el panel podrá comprobar y corregir las zonas de sus sitios.
Protección
Cada sitio tiene sus propias comprobaciones, y se ejecutan dentro del servidor web antes de que PHP o Node.js vean la solicitud. Una dirección se bloquea solo por un ataque claro.
- Límite de solicitudes y bloqueos
- Cada dirección puede enviar 150 solicitudes en 10 segundos por defecto. Por encima del límite recibe un 404 y un bloqueo durante los minutos que usted fije. Los visitantes IPv6 se cuentan y bloquean por su /64, así que cambiar de dirección no ayuda. Cada sitio tiene una lista de permitidos.
- Bot Fight
- Bloquea rastreadores de IA, rastreadores SEO, escáneres de vulnerabilidades, scripts y navegadores headless, user agents vacíos y su propia lista. Los buscadores y las vistas previas de enlaces, solo si usted lo decide. Los servicios de monitorización y los lectores RSS no se tocan.
- Sondeos y cargas maliciosas
- Las solicitudes a /.env, /.git, /wp-login.php y nombres parecidos que no existen en el sitio bloquean la dirección. Las cargas claras de inyección SQL, XSS, path traversal y Log4Shell en la URL provocan un bloqueo; las ambiguas solo rechazan esa solicitud.
- Detección de escaneos
- Muchos fallos seguidos (25 en 60 segundos por defecto) parecen gobuster o ffuf y bloquean la dirección. Una imagen que falta cuenta como una décima de fallo, así que una página antigua con imágenes rotas no es un escaneo.
- Rastreadores verificados
- Google, Bing, DuckDuckGo, Apple, OpenAI, Anthropic, Perplexity y Ahrefs publican sus rangos de IP. WardPane los descarga a diario y bloquea a quien diga ser uno de ellos desde otra dirección. También puede bloquear estos rastreadores por IP aunque se oculten tras un user agent de navegador.
- Listas públicas de IP
- Spamhaus DROP, FireHOL level 1 y blocklist.de, actualizadas a diario, aplicadas por sitio con un interruptor.
- Geo con grupos
- Permita o deniegue países uno a uno o por grupos: antigua URSS, CEI, UEE, UE, EEE, Schengen, OTAN, G7, G20, OCDE, BRICS, OCS, ASEAN, Liga Árabe, Mercosur, continentes y más. Añada excepciones y vea la lista final de países.
- Redes de hosting y números AS
- Bloquee solicitudes desde AWS, Azure, Google Cloud, Hetzner, OVH, DigitalOcean, Vultr y otras nubes, de donde viene la mayor parte de la automatización, o desde cualquier AS number que indique.
- Filtro por idioma
- Permita o deniegue según el idioma del navegador, con un interruptor aparte para las solicitudes que no envían ningún idioma. Una señal adicional útil junto al país, por ejemplo detrás de una VPN.
- Dispositivos
- Deje entrar solo Windows, macOS, Linux, Android, iOS u otros, como filtro para navegadores normales.
- Solo con enlace
- Parámetros de URL obligatorios: el sitio se abre solo para quienes llegaron con su enlace, por ejemplo ?ref=metaads desde un anuncio. Una cookie firmada y, opcionalmente, la IP del visitante los mantienen dentro. Las rutas de webhooks y de avisos de pago siguen abiertas.
- Contraseña
- Inicio de sesión HTTP Basic para borradores y copias de prueba de un sitio. Las contraseñas se guardan como hashes scrypt y se comprueban fuera del hilo principal, después de todos los demás filtros.
- Protección contra hotlinking
- Otros sitios no pueden incrustar sus imágenes y archivos. Elija las extensiones, los sitios permitidos (admite comodines) y qué hacer con las solicitudes sin Referer.
- Cabeceras de seguridad
- X-Frame-Options, Referrer-Policy, HSTS con includeSubDomains y preload, Content-Security-Policy y Permissions-Policy por sitio.
- Honeypot
- Una ruta que robots.txt prohíbe. Una persona nunca la abre, así que quien la solicita queda bloqueado al instante.
- Páginas de bloqueo propias
- Su propia página y código de estado (404, 403 o 200) para bloqueos por dispositivo, bots, geo y acceso solo con enlace, servida con no-store.
- Lista de bloqueo global
- Direcciones y redes bloqueadas en todos los sitios, guardadas en disco y conservadas tras los reinicios. Se aplica incluso donde un sitio tiene la protección desactivada.
Control de tráfico
Decida quién llega a cada sitio, en qué orden se aplican las reglas y qué ve un visitante bloqueado.
El orden de las comprobaciones en cada solicitud
- Cloudflare: IP real del visitante, solo a través de Cloudflare
- Lista de bloqueo global, luego la lista de permitidos del sitio
- Límite de solicitudes y bloqueos activos
- Bot Fight: user agents, rastreadores verificados, listas de IP, sondeos, cargas maliciosas, escaneos, honeypot
- Geo: países y grupos, redes de hosting, números AS, idioma del navegador
- Dispositivos
- Cabeceras de seguridad y protección contra hotlinking
- Solo con enlace
- Contraseña
- Reglas de .htaccess y luego el manejador: archivos, PHP o Node.js
- IP real con conocimiento de Cloudflare
- La dirección del visitante se toma de CF-Connecting-IP solo cuando la conexión viene realmente de Cloudflare. La lista de redes se actualiza a diario desde cloudflare.com.
- Solo a través de Cloudflare
- Las solicitudes directas a la IP del servidor reciben un 404, así que nadie puede saltarse la CDN ni sus reglas.
- Cuando el interruptor está desactivado
- Un sitio detrás de Cloudflare que no está marcado como tal nunca bloquea direcciones de Cloudflare y recibe un límite diez veces mayor por cada servidor de Cloudflare. El registro sugiere la solución.
- Cloudflare Workers
- Las solicitudes de un Worker se cuentan por su zona con límites y bloqueos normales; el Worker de su propia zona se trata como Cloudflare.
- Códigos de la página de bloqueo
- Use 404 para que parezca una dirección vacía, 403 para indicar que la solicitud se rechaza o 200 con su propia página. Los clientes limitados o bloqueados siempre reciben un 404 simple.
- Respuestas seguras para la caché
- Las respuestas que dependen del paso con enlace reciben Cache-Control: private y Vary: Cookie, así que una CDN nunca se las entrega a alguien sin el enlace.
Seguridad del panel
El panel se ejecuta como el usuario sin privilegios wardpane, y su página de inicio de sesión tiene sus propios límites contra ataques de fuerza bruta.
- Inicio de sesión como root
- De forma opcional, inicie sesión como root con la contraseña root del servidor. La comprueba unix_chkpwd a través de un pequeño ayudante root en un socket que solo el panel puede abrir. Desactivado por defecto.
- Límites contra fuerza bruta
- 5 fallos bloquean una dirección (en IPv6, su /64) durante 15 minutos, y 50 fallos bloquean su /48. Una oleada de fallos desde muchas direcciones cierra el inicio de sesión a direcciones desconocidas durante 5 minutos. Las direcciones que iniciaron sesión en los últimos 30 días siguen funcionando.
- Lista de IP permitidas
- Con PANEL_ALLOW_IPS configurado, el panel no responde en absoluto a otras direcciones. Rechaza una lista que dejaría fuera la dirección que usted está usando.
- Aislamiento del ayudante root
- El panel escribe el estado deseado; un ayudante root iniciado por systemd vuelve a comprobar cada valor antes de crear usuarios, carpetas y unidades.
- PHP y Node.js aislados
- Usuarios Linux por sitio, sistema de solo lectura, /tmp privado, sin nuevos privilegios, límites de memoria y CPU y, opcionalmente, sin conexiones salientes.
- Sumas de verificación de las versiones
- Cada archivo se publica con su suma de verificación SHA-256 y contiene el código fuente completo. El instalador lo descarga por HTTPS y comprueba el SHA-256 antes de ejecutar nada.
- Actualizaciones reversibles
- Cada actualización hace una copia de seguridad con un script de restauración, comprueba que la nueva versión arranca y, si no, vuelve atrás por sí sola.
- Recuperación del acceso
- Si se queda sin acceso, un comando en el servidor restablece el inicio de sesión del panel y la lista de IP permitidas, y levanta los bloqueos de inicio de sesión.
Pruébelo en un servidor de sobra
La instalación tarda unos minutos en un Ubuntu 24.04 limpio.