17 min de leitura · Guia técnico
Proteger o WordPress contra invasões no cPanel envolve aplicar uma série de configurações de segurança em camadas — desde permissões de arquivos até bloqueio de acesso ao painel administrativo. Siga este checklist completo:
- Corrija as permissões de arquivos e diretórios (644/755/600)
- Proteja o wp-admin com senha ou restrição por IP via .htaccess
- Desative o editor de arquivos e a execução de PHP em diretórios sensíveis
- Ative SSL e force HTTPS em todas as páginas
- Configure backups automáticos e monitore arquivos modificados
- Mantenha plugins, temas e o core do WordPress sempre atualizados
Pré-requisitos para aplicar este checklist de segurança WordPress
- Acesso ao cPanel da sua hospedagem (versão 106 ou superior recomendada)
- WordPress instalado (qualquer versão, mas preferencialmente 6.4 ou superior)
- Acesso ao Gerenciador de Arquivos do cPanel ou cliente FTP (como o FileZilla)
- Acesso ao phpMyAdmin ou ao MySQL via cPanel
- Certificado SSL instalado no domínio (gratuito via Let's Encrypt no cPanel)
- Permissão para editar arquivos .htaccess e wp-config.php
Checklist para proteger o WordPress: permissões de arquivos e diretórios
A configuração incorreta de permissões é uma das principais portas de entrada para invasores em instalações WordPress hospedadas no cPanel. Permissões muito abertas — especialmente o famoso 777 — permitem que qualquer processo no servidor escreva arquivos no seu site, facilitando a injeção de código malicioso.
Ao acessar o Gerenciador de Arquivos do cPanel, navegue até public_html (ou o diretório raiz do seu WordPress) e aplique as seguintes permissões:
- Arquivos PHP, HTML, CSS e JS: 644 (leitura pelo proprietário e pelo grupo, sem escrita por terceiros)
- Diretórios: 755 (execução permitida para navegação, sem escrita por terceiros)
- wp-config.php: 600 (somente o proprietário lê e escreve — nenhum outro usuário do servidor acessa)
- wp-content/uploads: 755 (nunca 777, mesmo que plugins solicitem)
Para aplicar as permissões em massa via SSH ou terminal do cPanel, execute os comandos abaixo dentro do diretório raiz do WordPress:
find /home/usuario/public_html -type f -exec chmod 644 {} \;
find /home/usuario/public_html -type d -exec chmod 755 {} \;
chmod 600 /home/usuario/public_html/wp-config.php
Output esperado: nenhuma saída indica sucesso. Use 'ls -la' para confirmar as permissões aplicadas.
Após executar, verifique com ls -la /home/usuario/public_html/wp-config.php e confirme que a saída exibe -rw-------.
Proteger o wp-admin no cPanel sem depender de plugins
Restringir o acesso ao painel administrativo do WordPress é uma das medidas mais eficazes contra ataques de força bruta e varreduras automatizadas. No cPanel, você pode aplicar proteção por senha diretamente no diretório wp-admin sem instalar nenhum plugin.
Método 1: Proteção por senha via cPanel (Privacidade de Diretório)
- Acesse o cPanel e clique em Privacidade de Diretório (ou Directory Privacy)
- Navegue até
public_html/wp-admin - Marque a opção Proteger este diretório com senha
- Defina um nome de usuário e senha fortes
- Salve as configurações
Isso cria automaticamente um arquivo .htpasswd e adiciona diretivas ao .htaccess do diretório. O WordPress continuará funcionando normalmente para requisições AJAX (wp-admin/admin-ajax.php), mas o acesso ao painel exigirá autenticação adicional.
Método 2: Restrição por IP via .htaccess no wp-admin
Se você acessa o painel sempre do mesmo IP (escritório ou VPN), esta abordagem é ainda mais segura. Crie ou edite o arquivo /public_html/wp-admin/.htaccess com o seguinte conteúdo:
Order Deny,Allow
Deny from all
Allow from 177.10.20.30
Allow from 189.50.100.200
Substitua os IPs pelos endereços reais que devem ter acesso. Adicione uma linha Allow from para cada IP autorizado. Para liberar o admin-ajax.php (necessário para o funcionamento do front-end), adicione ao mesmo arquivo:
<Files "admin-ajax.php">
Order Allow,Deny
Allow from all
</Files>
Essa configuração bloqueia 100% das tentativas de login vindas de IPs não autorizados, eliminando ataques de força bruta antes mesmo de chegarem ao PHP.
Desativar funcionalidades perigosas no wp-config.php e .htaccess
Diversas funcionalidades nativas do WordPress representam riscos de segurança quando ativadas em ambiente de produção. Editar o wp-config.php e o .htaccess raiz permite desativar essas brechas sem instalar plugins adicionais.
Desativar o editor de arquivos do painel
O editor de temas e plugins do WordPress permite que qualquer administrador comprometido injete código diretamente nos arquivos do site. Desative-o adicionando esta linha ao wp-config.php:
define('DISALLOW_FILE_EDIT', true);
Bloquear execução de PHP em wp-content/uploads
Invasores frequentemente fazem upload de arquivos PHP maliciosos disfarçados de imagens. Bloqueie a execução de PHP neste diretório criando o arquivo /public_html/wp-content/uploads/.htaccess:
<Files "*.php">
Order Deny,Allow
Deny from all
</Files>
Proteger o wp-config.php via .htaccess raiz
Adicione ao .htaccess principal do WordPress (em public_html) as seguintes diretivas para impedir acesso direto ao arquivo de configuração:
<Files "wp-config.php">
Order Allow,Deny
Deny from all
</Files>
Desativar listagem de diretórios
Adicione ao .htaccess raiz para impedir que visitantes vejam o conteúdo de diretórios sem index:
Options -Indexes
Bloquear acesso ao xmlrpc.php
O XML-RPC é um vetor comum de ataques de força bruta amplificados. Se não utilizar aplicativos móveis do WordPress ou Jetpack, bloqueie-o:
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>
Forçar HTTPS e configurar SSL corretamente no cPanel
Transmitir credenciais de login do WordPress sem criptografia expõe senhas a ataques de interceptação (man-in-the-middle). Forçar HTTPS é obrigatório em qualquer instalação de produção.
No cPanel, acesse SSL/TLS e verifique se o certificado Let's Encrypt está instalado e válido para o domínio e o subdomínio www. Em seguida, ative o redirecionamento automático de HTTP para HTTPS. Você pode fazer isso diretamente pelo cPanel em Domínios > Redirecionar, ou via .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Consulte também o artigo Como redirecionar um site HTTP para HTTPS para detalhes adicionais sobre configuração no cPanel.
Após ativar o HTTPS, adicione as seguintes constantes ao wp-config.php para garantir que o WordPress reconheça o protocolo seguro:
define('FORCE_SSL_ADMIN', true);
define('WP_HOME', 'https://seudominio.com.br');
define('WP_SITEURL', 'https://seudominio.com.br');
Monitorar arquivos modificados e configurar backups automáticos
Detectar uma invasão rapidamente reduz o impacto e facilita a recuperação. O monitoramento de arquivos modificados recentemente é uma técnica eficaz para identificar injeções de código logo após ocorrerem.
Localizar arquivos PHP modificados recentemente
Execute o comando abaixo via terminal SSH ou pelo recurso de terminal do cPanel para encontrar arquivos PHP alterados nas últimas 48 horas:
find /home/usuario/public_html -name "*.php" -mtime -2 -ls
Output esperado: lista de arquivos com data de modificação, tamanho e caminho completo. Arquivos em wp-content/uploads são suspeitos por padrão.
Para comparar com a data de modificação do wp-config.php (referência da instalação original):
find /home/usuario/public_html -name "*.php" -newer /home/usuario/public_html/wp-config.php
Configurar backups automáticos no cPanel
No cPanel, acesse Backup Wizard ou JetBackup (se disponível no seu plano) e configure backups diários automáticos com retenção mínima de 7 dias. Certifique-se de que os backups incluam:
- Todos os arquivos do
public_html - O banco de dados MySQL do WordPress
- Os arquivos de configuração do cPanel (opcional, mas recomendado)
Armazene cópias dos backups fora do servidor — em serviços como Google Drive, Amazon S3 ou outro servidor — para garantir recuperação mesmo em caso de comprometimento total do ambiente.
Hardening adicional: usuários, senhas e banco de dados
Credenciais fracas são responsáveis por uma parcela significativa das invasões em instalações WordPress. Este bloco do checklist cobre as configurações de autenticação e banco de dados que frequentemente são negligenciadas.
Alterar o prefixo das tabelas do banco de dados
O prefixo padrão wp_ é conhecido por todos os atacantes e facilita ataques de injeção SQL automatizados. Para instalações novas, altere o prefixo no wp-config.php antes da instalação:
$table_prefix = 'xk7m_';
Para instalações existentes, a alteração exige renomear todas as tabelas no banco de dados via phpMyAdmin — consulte a documentação oficial do WordPress antes de executar esta operação em produção.
Remover o usuário "admin" padrão
O nome de usuário admin é o primeiro alvo em ataques de força bruta. Crie um novo usuário administrador com nome único, transfira a autoria dos posts para ele e delete o usuário admin original pelo painel do WordPress em Usuários > Todos os Usuários.
Ativar autenticação em dois fatores
Plugins como WP 2FA ou Two Factor Authentication adicionam uma camada extra de proteção ao login. Mesmo que a senha seja comprometida, o atacante não conseguirá acessar o painel sem o código TOTP gerado pelo aplicativo autenticador.
Restringir acesso remoto ao MySQL
No cPanel, acesse MySQL Remoto e verifique se não há IPs desnecessários com acesso ao banco de dados. Remova qualquer entrada que não seja estritamente necessária. Para detalhes sobre conexões remotas ao MySQL, consulte o artigo Conectando remotamente ao MySQL - cPanel.
Problemas comuns e como resolver
Sintoma: site redireciona para domínio desconhecido após login
Causa: Código malicioso injetado no functions.php do tema ativo ou em um plugin comprometido. Invasores frequentemente adicionam redirecionamentos condicionais que só ativam para visitantes vindos de mecanismos de busca.
Solução: Acesse o banco de dados via phpMyAdmin e verifique as opções siteurl e home na tabela wp_options. Em seguida, examine o functions.php do tema ativo e todos os plugins em busca de código ofuscado (base64_decode, eval, gzinflate). Restaure a partir de um backup limpo se o comprometimento for extenso.
Sintoma: usuários administradores desconhecidos aparecem no painel
Causa: Exploração de vulnerabilidade em plugin desatualizado (comum em plugins de formulário, SEO e e-commerce) que permite criação de usuários sem autenticação.
Solução: Delete imediatamente os usuários suspeitos, altere todas as senhas de administradores legítimos e revogue todas as sessões ativas adicionando ao wp-config.php: define('AUTH_KEY', 'nova_chave_aleatoria'); (isso invalida todos os cookies de sessão). Atualize todos os plugins e identifique qual foi o vetor de entrada verificando os logs de acesso no cPanel em Logs > Logs de Acesso Bruto.
Sintoma: arquivos PHP desconhecidos em wp-content/uploads
Causa: Upload de webshell via vulnerabilidade em plugin de upload ou formulário de contato sem validação adequada de tipo de arquivo.
Solução: Delete imediatamente os arquivos suspeitos. Aplique o bloqueio de execução PHP em wp-content/uploads conforme descrito na seção anterior. Execute o comando find /home/usuario/public_html/wp-content/uploads -name "*.php" -delete para remover todos os PHP do diretório de uploads. Verifique se o plugin responsável pelo upload tem atualização disponível.
Sintoma: proteção por senha do wp-admin quebra o carrinho ou formulários do site
Causa: Plugins de e-commerce (WooCommerce) e formulários utilizam admin-ajax.php para requisições AJAX do front-end. A proteção por senha bloqueia essas requisições.
Solução: Adicione a exceção para admin-ajax.php no .htaccess do wp-admin conforme mostrado na seção de restrição por IP. Se estiver usando proteção por senha via cPanel (Privacidade de Diretório), adicione também uma exceção para este arquivo específico.
Perguntas frequentes sobre proteção do WordPress no cPanel
Quais são as principais causas de invasão em sites WordPress?
As causas mais comuns são plugins e temas desatualizados com vulnerabilidades conhecidas, senhas fracas no wp-admin e no banco de dados, permissões de arquivos incorretas (como 777 em diretórios) e ausência de autenticação em dois fatores. Credenciais FTP e cPanel comprometidas também são vetores frequentes de ataque. Manter um inventário atualizado de todos os plugins instalados e remover os inativos reduz significativamente a superfície de ataque.
Como verificar se meu WordPress foi hackeado?
Sinais típicos incluem redirecionamentos inesperados para outros domínios, arquivos PHP desconhecidos em wp-content/uploads, usuários administradores criados sem autorização e alertas do Google Search Console sobre conteúdo malicioso. Execute o comando find /public_html -name "*.php" -newer /public_html/wp-config.php para localizar arquivos PHP modificados recentemente. Verifique também os logs de acesso bruto no cPanel para identificar requisições suspeitas a arquivos incomuns.
Qual permissão correta para arquivos e pastas do WordPress?
Arquivos devem ter permissão 644 e diretórios 755. O arquivo wp-config.php deve ser configurado com 600 para impedir leitura por outros usuários do servidor. Nunca use 777 em nenhum diretório, pois isso permite escrita por qualquer processo no servidor, facilitando a injeção de código malicioso. Essas permissões são suficientes para o funcionamento normal do WordPress e de praticamente todos os plugins.
É possível proteger o wp-admin sem plugin no cPanel?
Sim. No cPanel, acesse Privacidade de Diretório e adicione proteção por senha ao diretório wp-admin. Alternativamente, crie um arquivo .htaccess dentro de wp-admin com diretivas Allow from para liberar apenas IPs específicos e Deny from all para bloquear o restante. Essa abordagem não depende de nenhum plugin WordPress e funciona na camada do servidor web, bloqueando requisições antes mesmo de o PHP ser executado.
Com que frequência devo atualizar plugins e temas no WordPress?
Atualizações de segurança devem ser aplicadas assim que disponíveis, idealmente dentro de 24 a 48 horas após o lançamento. Plugins e temas abandonados (sem atualização há mais de 12 meses) devem ser substituídos por alternativas mantidas ativamente. Ative notificações de atualização automática para plugins críticos via wp-config.php ou pelo painel do WordPress — isso garante que correções de segurança urgentes sejam aplicadas mesmo sem intervenção manual.
Conclusão
Aplicar este checklist de segurança reduz drasticamente a superfície de ataque de qualquer instalação WordPress hospedada no cPanel. As medidas se complementam em camadas: permissões corretas limitam o impacto de uma invasão, restrição de acesso ao wp-admin bloqueia ataques automatizados, e monitoramento contínuo permite detecção rápida de comprometimentos.
- Ação imediata: corrija as permissões de arquivos (644/755/600) e bloqueie a execução de PHP em wp-content/uploads — são as medidas de maior impacto com menor risco de quebrar funcionalidades.
- Ação de curto prazo: ative proteção por senha ou restrição por IP no wp-admin, force HTTPS e desative o editor de arquivos via wp-config.php.
- Ação contínua: mantenha backups automáticos diários fora do servidor, monitore arquivos modificados semanalmente e aplique atualizações de plugins e temas em até 48 horas após o lançamento.
Leia também
- Passo a passo para configurar autenticação de dois fatores (2FA) no painel cPanel
- Configurar acesso restrito por IP no painel WHM/cPanel para maior segurança
- Passo a passo para configurar autenticação por chave SSH no painel WHM/cPanel
Precisa de ajuda com segurança do WordPress?
Uma hospedagem com cPanel bem configurado, backups automáticos e suporte técnico especializado faz toda a diferença na proteção do seu site. A AviraHost oferece planos de hospedagem com recursos de segurança integrados, certificado SSL gratuito e suporte para auxiliar na configuração das proteções descritas neste checklist.