O WordPress alimenta mais de 40% de todos os sites na internet. Essa popularidade tem um lado negativo: ele é o alvo preferido de hackers, bots e scripts maliciosos. Todos os dias, milhares de sites WordPress são invadidos.
A maioria dessas invasões poderia ser evitada com medidas simples de segurança. Neste guia, vamos cobrir todas as etapas essenciais para blindar o seu site WordPress, desde ajustes básicos até configurações avançadas de servidor.
Por Que a Segurança do WordPress Merece Atenção
Antes de entrar nas soluções, entenda o que está em jogo:
- SEO destruído : sites hackeados são penalizados pelo Google e podem ser removidos dos resultados de busca
- Dados de clientes vazados : formulários, e-mails e dados pessoais ficam expostos
- Reputação comprometida : visitantes que veem alertas de "site inseguro" não voltam
- Receita perdida : enquanto o site está fora do ar ou comprometido, você perde vendas e oportunidades
- Custos de recuperação : limpar um site hackeado pode custar muito mais do que prevenir a invasão
A segurança não é um evento, é um processo contínuo. Vamos a cada etapa.
1. Altere o Nome de Usuário "admin"
O nome de usuário padrão "admin" é o primeiro que os bots testam em ataques de força bruta. Se o seu usuário principal ainda é "admin", você está facilitando o trabalho dos invasores.
Como alterar
O WordPress não permite trocar o nome de usuário diretamente. Siga estes passos:
- Acesse o painel do WordPress e vá em Usuários > Adicionar novo
- Crie um novo usuário com um nome diferente (ex: felipe_gerente )
- Defina a função como Administrador
- Faça logout e entre com o novo usuário
- Vá em Usuários e exclua o usuário "admin"
- Quando perguntado, transfira todo o conteúdo para o novo usuário
Via banco de dados (alternativa)
UPDATE wp_users SET user_login = 'novo_usuario' WHERE user_login = 'admin';
2. Use Senhas Fortes
Parece óbvio, mas senhas fracas continuam sendo a porta de entrada mais comum para invasores.
Critérios para uma senha forte
- Mínimo de 16 caracteres
- Mistura de letras maiúsculas, minúsculas, números e símbolos
- Nenhuma palavra do dicionário
- Diferente de senhas usadas em outros serviços
Ferramentas recomendadas
- Gerenciadores de senhas : 1Password, Bitwarden (gratuito) ou KeePass
- Gerador do WordPress : ao criar ou editar um usuário, clique em "Gerar senha"
Force senhas fortes para todos os usuários
Adicione ao functions.php do seu tema ou a um plugin de funcionalidades:
add_action('user_profile_update_errors', function($errors, $update, $user) {
if (strlen($user->user_pass) < 12) {
$errors->add('senha_fraca', 'A senha deve ter no mínimo 12 caracteres.');
}
}, 10, 3);
3. Ative a Autenticação de Dois Fatores (2FA)
A autenticação de dois fatores adiciona uma camada extra de proteção. Mesmo que alguém descubra a senha, não conseguirá acessar sem o segundo fator.
Plugins recomendados
- WP 2FA : simples, gratuito e funcional
- Two-Factor : desenvolvido pela equipe do WordPress
- Wordfence Login Security : módulo de 2FA do Wordfence (pode ser usado independente)
Métodos de 2FA
- App autenticador (Google Authenticator, Authy): o mais seguro e recomendado
- E-mail : código enviado por e-mail a cada login
- Chave de segurança física (YubiKey): o mais seguro, ideal para sites críticos
Configuração com WP 2FA
- Instale e ative o plugin WP 2FA
- Vá em WP 2FA > Configurações
- Selecione "App autenticador (TOTP)" como método principal
- Defina quais funções de usuário devem usar 2FA (recomendado: todos os administradores e editores)
- Escaneie o QR code com o app autenticador do seu celular
- Salve os códigos de backup em local seguro
4. Limite as Tentativas de Login
Ataques de força bruta testam milhares de combinações de usuário e senha automaticamente. Limitar tentativas de login bloqueia esses ataques.
Com plugin
Instale o Limit Login Attempts Reloaded :
- Instale e ative o plugin
- Vá em Configurações > Limit Login Attempts
- Configure:
- Tentativas permitidas: 3
- Bloqueio: 20 minutos
- Após 4 bloqueios: bloqueio de 24 horas
- Ative a notificação por e-mail após bloqueios
Via .htaccess (proteção adicional)
Adicione uma proteção extra ao wp-login.php com autenticação HTTP:
<Files wp-login.php>
AuthType Basic
AuthName "Acesso Restrito"
AuthUserFile /caminho/para/.htpasswd
Require valid-user
</Files>
Gere o arquivo .htpasswd com:
htpasswd -c /caminho/para/.htpasswd usuario
5. Instale um Plugin de Segurança
Plugins de segurança oferecem firewall, scanner de malware, monitoramento de alterações e proteção contra ataques comuns.
Comparação dos principais plugins
| Recurso | Wordfence | Sucuri | iThemes Security |
|---|---|---|---|
| Scanner de malware | Sim | Sim | Sim |
| Monitoramento de arquivos | Sim | Sim | Sim |
| Proteção de login | Sim | Limitada | Sim |
| 2FA | Sim | Não | Sim |
| CDN incluído | Não | Sim (plano pago) | Não |
| Versão gratuita | Sim | Limitada | Sim |
Configuração recomendada do Wordfence
- Instale e ative o Wordfence Security
- Vá em Wordfence > Firewall e clique em "Otimizar o Firewall do Wordfence"
- Siga as instruções para baixar o backup do .htaccess e confirmar
- Em Wordfence > Scan , execute uma verificação completa
- Em Wordfence > Login Security , ative o 2FA para administradores
- Em Wordfence > All Options :
- Ative "Rate Limiting" para bloquear crawlers agressivos
- Ative notificações por e-mail para alertas críticos
- Bloqueie IPs que tentam acessar nomes de usuário inexistentes
6. Configure Permissões de Arquivos Corretamente
Permissões incorretas podem permitir que invasores leiam ou modifiquem arquivos críticos do site.
Permissões recomendadas
| Arquivo/Pasta | Permissão | Descrição |
|---|---|---|
| Arquivos | 644 | Leitura para todos, escrita só para o dono |
| wp-config.php | 600 | Leitura e escrita só para o dono |
| .htaccess | 644 | Leitura para todos, escrita só para o dono |
Como aplicar via SSH
# Corrigir permissões de pastas
find /caminho/do/site -type d -exec chmod 755 {} \;
# Corrigir permissões de arquivos
find /caminho/do/site -type f -exec chmod 644 {} \;
# Proteger wp-config.php
chmod 600 /caminho/do/site/wp-config.php
7. Desative o XML-RPC
O XML-RPC é uma interface que permite que aplicativos externos se comuniquem com o WordPress. Ele também é usado em ataques de força bruta e DDoS amplificado.
Se você não usa o app do WordPress para celular ou serviços que dependem do XML-RPC, desative-o.
Via .htaccess
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Via plugin
O Wordfence e o iThemes Security permitem desativar o XML-RPC nas configurações. Também existem plugins específicos como o Disable XML-RPC .
Via functions.php
add_filter('xmlrpc_enabled', '__return_false');
8. Desative a Edição de Arquivos pelo Painel
O WordPress permite editar arquivos de temas e plugins diretamente pelo painel administrativo. Se um invasor conseguir acesso ao painel, essa função permite que ele injete código malicioso sem acessar o servidor.
Adicione ao wp-config.php :
define('DISALLOW_FILE_EDIT', true);
Para impedir também a instalação e atualização de plugins/temas pelo painel (recomendado em sites de produção):
define('DISALLOW_FILE_MODS', true);
9. Adicione Headers de Segurança
Headers HTTP de segurança protegem contra ataques como XSS (Cross-Site Scripting), clickjacking e injeção de conteúdo.
Via .htaccess (Apache/LiteSpeed)
<IfModule mod_headers.c>
# Protege contra XSS
Header set X-Content-Type-Options "nosniff"
# Previne clickjacking
Header set X-Frame-Options "SAMEORIGIN"
# Ativa proteção XSS do navegador
Header set X-XSS-Protection "1; mode=block"
# Controla informações de referência
Header set Referrer-Policy "strict-origin-when-cross-origin"
# Previne que o site seja carregado em contextos inseguros
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
# Política de permissões
Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
Via Nginx
add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
Como verificar
Use o site securityheaders.com para verificar se os headers estão configurados corretamente. A nota ideal é A ou A+.
10. Configure um WAF (Web Application Firewall)
Um WAF filtra o tráfego malicioso antes que ele chegue ao seu site. Ele bloqueia injeções SQL, XSS, ataques de força bruta e outras ameaças conhecidas.
Tipos de WAF
- WAF no servidor (plugin) : Wordfence. Funciona dentro do WordPress, protege na camada de aplicação.
- WAF na nuvem (DNS) : Cloudflare, Sucuri. O tráfego passa pelo WAF antes de chegar ao servidor. Mais eficiente contra DDoS.
- WAF no servidor web : ModSecurity (Apache/Nginx). Proteção na camada do servidor, exige configuração técnica.
Configuração básica do Cloudflare como WAF
- Crie uma conta no Cloudflare
- Adicione seu domínio e altere os nameservers
- Ative o modo "Under Attack" se estiver sofrendo ataque DDoS
- Em Security > WAF , ative as regras gerenciadas do Cloudflare
- Configure regras personalizadas para bloquear tráfego de países onde você não tem público
- Ative o "Bot Fight Mode" para bloquear bots maliciosos
11. Outras Medidas de Segurança Importantes
Desative a listagem de diretórios
Adicione ao .htaccess :
Options -Indexes
Proteja o diretório wp-includes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
Mova o wp-config.php um nível acima
O WordPress reconhece automaticamente o wp-config.php um diretório acima da raiz do site. Isso impede que ele seja acessado diretamente via navegador:
mv /var/www/seusite/wp-config.php /var/www/wp-config.php
Desative a exibição de erros PHP em produção
Adicione ao wp-config.php :
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);
Altere o prefixo das tabelas do banco de dados
Em novas instalações, use um prefixo diferente de wp_ . Em sites existentes, plugins como o iThemes Security oferecem essa opção.
Mantenha tudo atualizado
- WordPress core
- Plugins
- Temas
- Versão do PHP
As atualizações corrigem vulnerabilidades conhecidas. Um plugin desatualizado é uma porta aberta para invasores.
Checklist de Segurança WordPress
Use esta lista para verificar o estado atual do seu site:
- [ ] Nome de usuário "admin" foi removido
- [ ] Senhas fortes para todos os usuários (16+ caracteres)
- [ ] Autenticação de dois fatores ativada
- [ ] Tentativas de login limitadas
- [ ] Plugin de segurança instalado e configurado (Wordfence ou Sucuri)
- [ ] Permissões de arquivos corretas (755 pastas, 644 arquivos, 600 wp-config.php)
- [ ] XML-RPC desativado
- [ ] Edição de arquivos pelo painel desativada
- [ ] Headers de segurança configurados
- [ ] WAF ativo (Cloudflare, Sucuri ou Wordfence)
- [ ] Listagem de diretórios desativada
- [ ] WordPress, plugins e temas atualizados
- [ ] Versão do PHP atualizada (8.1+)
- [ ] SSL/HTTPS ativo em todo o site
- [ ] Backups automáticos configurados
- [ ] Monitoramento de uptime ativo
Monitoramento Contínuo
Segurança não é algo que você configura uma vez e esquece. Implemente um monitoramento contínuo:
- Verificações semanais com o scanner do Wordfence ou Sucuri
- Alertas de login para saber quando alguém acessa o painel
- Monitoramento de integridade de arquivos para detectar alterações suspeitas
- Revisão mensal de usuários para remover contas desnecessárias
- Auditoria trimestral de plugins para remover plugins desativados ou abandonados
Segurança no Servidor Também Importa
A maioria dos guias de segurança WordPress foca apenas no site. Mas boa parte das invasões acontece por falhas no servidor: SSH com senha fraca, serviços desnecessários rodando, firewall do servidor desconfigurado, backups ausentes.
A HOSTWP cuida da segurança do WordPress e do servidor ao mesmo tempo. Configuramos firewall, hardening do sistema operacional, monitoramento 24/7 e backups automáticos. Se o site for invadido, a gente limpa, identifica a causa e blinda para não acontecer de novo. Entre em contato com a HOSTWP e tenha segurança de verdade, do servidor ao site.
Leia também: WordPress Hackeado: O Que Fazer | Erros WordPress: Guia Completo Para Resolver os Problemas Mais Comuns