Muitos administradores confiam apenas em plugins de segurança (como Wordfence ou iThemes), mas a verdade dura é: plugins rodam em nível de aplicação (PHP). Se o ataque derrubar o PHP ou explorar uma falha no Nginx/Apache, o plugin nem sequer “acorda” para defender o site.
A verdadeira segurança no WordPress acontece antes mesmo da requisição chegar ao PHP. Aqui está o guia de hardening “nível sysadmin”, focado em impedir que o servidor seja comprometido, mesmo que o WordPress tenha uma vulnerabilidade.
1. Bloqueio de Execução de PHP (A Regra de Ouro)
A forma mais comum de hackear WP é fazer upload de um arquivo malicioso (backdoor/shell) disfarçado para a pasta wp-content/uploads e executá-lo. Se você impedir que arquivos PHP sejam executados nessas pastas, você mata 90% dos vetores de ataque automatizados.
No Nginx:
No Apache (.htaccess):
altere "/var/www/html/wp-content/uploads" para o caminho de sua conta.
2. Imutabilidade de Arquivos Críticos (chattr)
Permissões Linux padrão (chmod) não são suficientes se o atacante ganhar acesso com o usuário do sistema. A “bala de prata” do sysadmin é o atributo de imutabilidade.
Use o comando chattr +i em arquivos que nunca devem mudar automaticamente. Isso impede que até mesmo o usuário root altere ou delete o arquivo sem antes remover o atributo.
Onde aplicar: wp-config.php e, em casos extremos, o index.php da raiz.
Nota: Se você precisar editar esse arquivo, terá que rodar chattr -i primeiro.
3. Hardening do PHP (php.ini / pool.d)
O WordPress não precisa de acesso a todas as funções do sistema operacional. Restrinja o que o interpretador PHP pode fazer.
Desabilitar Funções Perigosas: No seu php.ini ou na configuração do FPM, desabilite funções que scripts de shell usam para comandar o servidor.
Open_basedir: Garanta que o PHP esteja “preso” no diretório do usuário, impedindo que um site invadido leia o /etc/passwd ou arquivos de outros sites no mesmo servidor.
4. Matando o XML-RPC
O arquivo xmlrpc.php é um legado usado para pingbacks e o app mobile do WP, mas hoje serve quase exclusivamente para ataques de Brute Force e amplificação de DDoS.
Ação: Bloqueie o acesso a ele diretamen no Web Server (Nginx/Apache), para não gastar recursos do PHP processando o bloqueio.
Nginx
5. Web Application Firewall (WAF) no Nível do Servidor
Não deixe o PHP filtrar ataques SQL Injection ou XSS. Faça isso antes.
- ModSecurity + OWASP CRS: É o padrão da indústria. Ele analisa os pacotes de entrada e bloqueia padrões de ataque conhecidos antes que eles toquem o WordPress.
- Nginx Rate Limiting: Configure limites de requisições por segundo para a página
wp-login.php. Um humano não faz 10 tentativas de login por segundo, um bot sim.
6. Escondendo a Infraestrutura
Informação é poder para o atacante. Não anuncie suas versões.
- Desative a assinatura do servidor (Server Signature).
- Remova cabeçalhos como
X-Powered-By: PHP/8.1. - Bloqueie acesso a arquivos “invisíveis” ou de texto que desenvolvedores esquecem:
.git,.env,readme.html,license.txt.
Resumo da Estratégia
| Camada | Ação | Objetivo |
| Borda | Firewall / Fail2Ban / Crowdsec | Bloquear IPs agressivos e portas não usadas. |
| Web Server | Nginx/Apache Rules | Bloquear XMLRPC, limitar acesso ao wp-login, esconder headers. |
| Sistema | chattr +i | Tornar o wp-config.php indestrutível. |
| PHP | disable_functions | Impedir que o WP execute comandos de shell (bash). |
| Aplicação | Plugin de Cache/Segurança | Auditoria de arquivos e 2FA (última linha de defesa). |
Aqui estão as opções para bloquear o xmlrpc.php via .htaccess. Insira este código no topo do seu arquivo .htaccess (antes das regras # BEGIN WordPress).
Opção 1: Bloqueio Total (Recomendado)
Esta é a opção mais segura. Ninguém acessa o arquivo, retornando um erro 403 (Forbidden).
Apache
Se você estiver usando Apache 2.4 puro, a sintaxe moderna é:
Apache
Opção 2: Bloqueio com Exceção (Seu IP)
Use esta opção se você precisa de acesso remoto via XML-RPC para publicar conteúdo de ferramentas externas, mas quer bloquear o resto do mundo.
Apache
⚠️ Antes de aplicar, saiba disto:
Bloquear o xmlrpc.php vai quebrar as seguintes funcionalidades:
- Plugin Jetpack: Muitos módulos do Jetpack dependem desse arquivo para se comunicar com os servidores da Automattic.
- App Mobile do WordPress: Você não conseguirá gerenciar o site pelo aplicativo de celular oficial.
- Pingbacks/Trackbacks: Seu blog não receberá notificações automáticas de links de outros blogs.
Clique aqui e consulte nossos planos de Gerenciamento de Servidor
Veja mais: Guia Completo do DirectAdmin para Administradores | Instalação, Segurança e Performance
Veja mais: Como configurar lemp com wordpress e let´s encrypt
Veja mais: Como configurar lamp com wordpress e let´s encrypt
Veja mais: Criando atalho para listar diretórios e arquivos em ordem crescente
Veja mais: Como Instalar Openlitespeed no Ubuntu 20.04
