O que o WardPane 2.0 faz
O WardPane 2.0 hospeda sites estáticos, PHP e Node.js com certificados automáticos e suporte ao Cloudflare. A proteção e o controle de tráfego rodam por site dentro do servidor web. Na maioria dos oito painéis da página de comparação, essas funções vêm do ModSecurity ou de um complemento pago.
Para iniciantes e para administradores experientes
Iniciantes têm um comando para instalar, certificados que se emitem sozinhos, sites isolados e configurações explicadas em palavras simples. Administradores experientes têm todas as opções, um terminal no navegador, PM2 por proprietário, .htaccess, regras por site em uma ordem conhecida, a API do Cloudflare, exportação e importação, checksums das versões e o código-fonte.
Hospedagem
Os sites ficam em uma estrutura no estilo do ISPmanager, pertencem a um usuário Linux e são servidos pelo próprio WardPane nas portas 80 e 443.
- Sites e aliases
- Um site é um domínio mais até 99 aliases (um certificado Let's Encrypt comporta no máximo 100 nomes). Um alias serve o site principal ou, se tiver uma pasta própria, essa pasta. Os sites podem ter um nome de exibição.
- Estrutura por proprietário
- Os arquivos ficam em /var/www/<owner>/data/www/<domain>, com logs e arquivos temporários ao lado. O proprietário padrão é www-root, um usuário Linux que o WardPane cria. Os sites da 1.x mantêm as pastas antigas.
- Três manipuladores
- Sem manipulador (hospedagem estática), PHP ou Node.js, escolhido por site e trocável a qualquer momento. As configurações dos outros manipuladores são mantidas, então voltar as restaura.
- Arquivos estáticos
- Modo SPA (caminhos desconhecidos vão para index.html), o seu próprio 404.html, ETags fortes com downloads retomáveis, redirecionamento de HTTP para HTTPS e links simbólicos que nunca saem da pasta do site.
- Ambientes de execução
- O painel lista as versões do PHP instaladas no servidor e as versões principais do Node.js que ele suporta: 20, 22, 24 e 26, com a 24 como padrão (a 20 chegou ao fim de vida em abril de 2026). As builds do Node.js vêm do nodejs.org e são conferidas com as somas SHA256 publicadas.
- Um menu em cada site
- Cada linha da tabela de sites tem um menu com todas as ações daquele site, e um interruptor desliga o site e liga de novo sem apagar nada.
- Shell no navegador
- Um terminal direto no painel: um shell root em uma sessão root, ou o shell do proprietário do site na pasta do site. pm2 list e pm2 restart funcionam ali para sites Node.js.
- Exportação e importação
- Cada site com todas as configurações, mais a lista de bloqueio global, vai para um único arquivo JSON. A importação mescla ou substitui, verifica o arquivo inteiro antes e nunca mexe nos arquivos em /var/www.
PHP e Node.js
Cada site dinâmico roda com o seu próprio usuário Linux dentro de uma sandbox do systemd. Um site quebrado ou invadido não consegue ler os vizinhos.
- Um pool php-fpm por site
- Sem pool compartilhado, sem opcache ou sessões compartilhados. O código é somente leitura para o PHP; ele só pode escrever em tmp/, logs/, data/ e nas pastas que você listar, e o PHP nunca é executado a partir dessas pastas.
- Uma sandbox PHP rigorosa
- Todo o sistema de arquivos é somente leitura e noexec, exceto o próprio php-fpm, o open_basedir é definido, exec, system, shell_exec, proc_open, popen e putenv são desativados, e as chamadas de sistema são filtradas.
- .htaccess sem Apache
- Regras de rewrite, redirecionamentos, regras de acesso, Basic auth, cabeçalhos e cache de sites reais funcionam como estão: WordPress, Laravel e os redirecionamentos usuais para HTTPS e www. As linhas que ele não consegue aplicar são mostradas, nunca adivinhadas.
- Node.js com PM2
- Escolha uma versão principal do Node.js, um script npm ou um arquivo de entrada, variáveis de ambiente e limites. Um daemon PM2 por proprietário roda os apps, então o pm2 funciona no shell do proprietário.
- O proxy na frente do app
- Os arquivos em public/ são servidos diretamente, se você quiser, e o resto vai para o app com o IP real do visitante em X-Forwarded-For e X-Real-IP. Os WebSockets passam depois das mesmas verificações de proteção.
- Reinício, npm install e logs
- A aba Manipulador tem botões para reiniciar e para npm install (npm ci quando há um lockfile), os logs de saída, de erro e de instalação, e os scripts do package.json para escolher.
Certificados e Cloudflare
Os certificados são emitidos e renovados sem passos manuais, também para sites atrás do Cloudflare.
- Let's Encrypt totalmente automático
- Um certificado por site com todos os seus aliases, renovado quando resta um terço da validade. Nomes cujo DNS não aponta para o servidor são pulados e adicionados quando passarem a apontar, e o painel mostra o motivo.
- IPv6 também verificado
- O Let's Encrypt tenta o IPv6 primeiro, então cada registro AAAA precisa apontar para o servidor. O WardPane verifica esses registros antes de pedir um certificado.
- Um certificado para o IP
- O IP do servidor recebe um certificado de curta duração, renovado a cada poucos dias. O painel em https://<ip>:1500 abre sem aviso.
- Limites de taxa do Let's Encrypt
- O painel não pede certificado duplicado, informa de uma vez todos os nomes com falha de um pedido, espera mais depois de cada falha e substitui uma conta ACME desativada.
- Um token do Cloudflare com um clique
- O botão Criar token do Cloudflare abre o Cloudflare com as permissões certas já preenchidas. Cole o token de volta, e o painel pode verificar e corrigir as zonas dos seus sites.
Proteção
Cada site tem as suas próprias verificações, e elas rodam dentro do servidor web antes que o PHP ou o Node.js vejam a requisição. Um endereço só é banido por um ataque claro.
- Limite de requisições e banimentos
- Cada endereço pode enviar 150 requisições em 10 segundos por padrão. Acima do limite, ele recebe um 404 e um banimento pelos minutos que você definir. Visitantes IPv6 são contados e banidos pelo seu /64, então trocar de endereço não adianta. Cada site tem uma lista de permissões.
- Bot Fight
- Bloqueia crawlers de IA, crawlers de SEO, scanners de vulnerabilidades, scripts e navegadores headless, user agents vazios e a sua própria lista. Mecanismos de busca e pré-visualizações de links só se você escolher. Monitoramento e leitores de RSS não são afetados.
- Sondagens e payloads
- Requisições para /.env, /.git, /wp-login.php e nomes parecidos que não existem no site banem o endereço. Payloads claros de SQL injection, XSS, path traversal e Log4Shell na URL banem; os ambíguos só rejeitam aquela requisição.
- Detecção de varreduras
- Muitos erros seguidos (25 em 60 segundos por padrão) parecem gobuster ou ffuf e banem o endereço. Uma imagem ausente conta como um décimo de erro, então uma página antiga com imagens quebradas não é uma varredura.
- Crawlers verificados
- Google, Bing, DuckDuckGo, Apple, OpenAI, Anthropic, Perplexity e Ahrefs publicam as suas faixas de IP. O WardPane baixa essas listas diariamente e bane quem afirma ser um deles a partir de outro endereço. Você também pode bloquear esses crawlers pelo IP, mesmo quando se escondem atrás de um user agent de navegador.
- Listas públicas de IPs
- Spamhaus DROP, FireHOL nível 1 e blocklist.de, atualizadas diariamente, aplicadas por site com um interruptor.
- Geo com grupos
- Permita ou negue países um a um ou em grupos: ex-URSS, CEI, UEE, UE, EEE, Schengen, OTAN, G7, G20, OCDE, BRICS, OCX, ASEAN, Liga Árabe, Mercosul, continentes e mais. Adicione exceções e veja a lista final de países.
- Redes de hospedagem e AS numbers
- Bloqueie requisições da AWS, Azure, Google Cloud, Hetzner, OVH, DigitalOcean, Vultr e outras nuvens, de onde vem a maior parte da automação, ou de qualquer AS number que você listar.
- Filtro de idioma
- Permita ou negue pelo idioma do navegador, com um interruptor separado para requisições que não enviam idioma nenhum. Um sinal extra útil ao lado do país, por exemplo atrás de uma VPN.
- Dispositivos
- Deixe entrar apenas Windows, macOS, Linux, Android, iOS ou outros, como filtro para navegadores comuns.
- Só com link
- Parâmetros de URL obrigatórios: o site só abre para quem chegou pelo seu link, por exemplo ?ref=metaads de um anúncio. Um cookie assinado e, opcionalmente, o IP do visitante mantêm o acesso. Caminhos para webhooks e callbacks de pagamento continuam abertos.
- Senha
- Login HTTP Basic para rascunhos e cópias de teste de um site. As senhas são armazenadas como hashes scrypt e verificadas fora da thread principal, depois de todos os outros filtros.
- Proteção contra hotlink
- Outros sites não podem incorporar as suas imagens e arquivos. Escolha as extensões, os sites permitidos (curingas funcionam) e o que fazer com requisições sem Referer.
- Cabeçalhos de segurança
- X-Frame-Options, Referrer-Policy, HSTS com includeSubDomains e preload, Content-Security-Policy e Permissions-Policy por site.
- Honeypot
- Um caminho que o robots.txt proíbe. Uma pessoa nunca abre esse caminho, então quem o solicita é banido na hora.
- Páginas de bloqueio personalizadas
- A sua própria página e código de status (404, 403 ou 200) para bloqueios por dispositivo, bot, geo e acesso só com link, servida com no-store.
- Lista de bloqueio global
- Endereços e redes bloqueados em todos os sites, gravados em disco e mantidos entre reinicializações. Ela vale mesmo onde um site está com a proteção desativada.
Controle de tráfego
Decida quem chega a cada site, em que ordem as regras se aplicam e o que um visitante bloqueado vê.
A ordem das verificações em cada requisição
- Cloudflare: IP real do visitante, só através do Cloudflare
- Lista de bloqueio global, depois a lista de permissões do site
- Limite de requisições e banimentos ativos
- Bot Fight: user agents, crawlers verificados, listas de IPs, sondagens, payloads, varreduras, honeypot
- Geo: países e grupos, redes de hospedagem, AS numbers, idioma do navegador
- Dispositivos
- Cabeçalhos de segurança e proteção contra hotlink
- Só com link
- Senha
- Regras do .htaccess, depois o manipulador: arquivos, PHP ou Node.js
- IP real com suporte ao Cloudflare
- O endereço do visitante é tirado do CF-Connecting-IP só quando a conexão vem de fato do Cloudflare. A lista de redes é atualizada diariamente a partir do cloudflare.com.
- Só através do Cloudflare
- Requisições diretas ao IP do servidor recebem um 404, então ninguém consegue pular a CDN e as suas regras.
- Quando o interruptor está desligado
- Um site atrás do Cloudflare que não está marcado como tal nunca bane endereços do Cloudflare e recebe um limite dez vezes maior por servidor do Cloudflare. O log sugere a correção.
- Cloudflare Workers
- As requisições de um Worker são contadas pela zona dele, com limites e banimentos normais; o Worker da sua própria zona é tratado como Cloudflare.
- Códigos das páginas de bloqueio
- Use 404 para parecer um endereço vazio, 403 para dizer que a requisição foi recusada ou 200 com a sua própria página. Clientes limitados e banidos sempre recebem um 404 simples.
- Respostas seguras para cache
- Respostas que dependem do acesso por link recebem Cache-Control: private e Vary: Cookie, para que uma CDN nunca as entregue a alguém sem o link.
Segurança do painel
O painel roda como o usuário sem privilégios wardpane, e a página de login tem os seus próprios limites contra força bruta.
- Login como root
- Opcionalmente, entre como root com a senha root do servidor. Ela é verificada pelo unix_chkpwd por meio de um pequeno helper root em um socket que só o painel pode abrir. Desativado por padrão.
- Limites contra força bruta
- 5 falhas bloqueiam um endereço (no IPv6, o /64 dele) por 15 minutos, e 50 falhas bloqueiam o /48 dele. Uma onda de falhas vinda de muitos endereços fecha o login para endereços desconhecidos por 5 minutos. Endereços que entraram nos últimos 30 dias continuam funcionando.
- Lista de IPs permitidos
- Com PANEL_ALLOW_IPS definido, o painel simplesmente não responde a outros endereços. Ele recusa uma lista que bloquearia o endereço que você está usando.
- Isolamento do helper root
- O painel grava o estado desejado; um helper root iniciado pelo systemd verifica cada valor de novo antes de criar usuários, pastas e units.
- PHP e Node.js isolados
- Usuários Linux por site, sistema somente leitura, /tmp privado, sem novos privilégios, limites de memória e CPU e, opcionalmente, sem conexões de saída.
- Checksums das versões
- Cada arquivo é publicado com o seu checksum SHA-256 e contém o código-fonte completo. O instalador o baixa por HTTPS e verifica o SHA-256 antes de executar qualquer coisa.
- Atualizações que podem ser desfeitas
- Cada atualização faz um backup com um script de restauração, verifica se a nova versão inicia e reverte sozinha se ela não iniciar.
- Recuperação de acesso
- Se você ficar sem acesso, um comando no servidor redefine o login do painel e a lista de IPs permitidos, e remove os bloqueios de login.
Experimente em um servidor sobrando
A instalação leva poucos minutos em um Ubuntu 24.04 limpo.