Segurança no WordPress em nível de servidor

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

CamadaAçãoObjetivo
BordaFirewall / Fail2Ban / CrowdsecBloquear IPs agressivos e portas não usadas.
Web ServerNginx/Apache RulesBloquear XMLRPC, limitar acesso ao wp-login, esconder headers.
Sistemachattr +iTornar o wp-config.php indestrutível.
PHPdisable_functionsImpedir que o WP execute comandos de shell (bash).
AplicaçãoPlugin de Cache/SegurançaAuditoria 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:

  1. Plugin Jetpack: Muitos módulos do Jetpack dependem desse arquivo para se comunicar com os servidores da Automattic.
  2. App Mobile do WordPress: Você não conseguirá gerenciar o site pelo aplicativo de celular oficial.
  3. 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