Como Proteger meu Site WordPress

Home  Como Proteger meu Site WordPress

Como Proteger meu Site WordPress

Resumo rápido

  • Proteja o wp-config.php, o .htaccess, a pasta wp-includes e impeça a execução de PHP em uploads.
  • Use a sintaxe do Apache 2.4 (Require all denied); a antiga (Order/Deny) só funciona com módulo de compatibilidade.
  • Permissões recomendadas: arquivos 644, pastas 755 e wp-config.php 640 ou 600.
  • Com WP-CLI, confira a integridade do núcleo e mantenha tudo atualizado.

Nesta seção você verá comandos para proteger arquivos e pastas importantes do WordPress: wp-config.php, .htaccess, wp-includes e uploads. As alterações podem ser feitas pelo gerenciador de arquivos do painel de hospedagem (cPanel, hPanel), por SFTP ou por SSH. Faça backup antes de alterar qualquer arquivo.

Os exemplos de .htaccess valem para servidores Apache 2.4 e LiteSpeed. Em Nginx, as regras equivalentes ficam na configuração do servidor.

Comandos para proteger o arquivo wp-config.php

O wp-config.php guarda o nome do banco de dados, usuário, senha, prefixo das tabelas e as chaves de segurança. Ele merece a maior proteção do site.

Bloquear a edição de arquivos pelo painel do WordPress

Impede que alguém com acesso ao painel altere o código de temas e plugins pelo editor embutido:

No wp-config.php, antes da linha “That’s all, stop editing!”:

define( 'DISALLOW_FILE_EDIT', true );

Bloquear instalação e atualização de plugins e temas pelo painel (opcional)

Mais restritivo: bloqueia também instalar e atualizar plugins, temas e o núcleo pelo painel. Use só se as atualizações forem feitas por outro meio (por exemplo, WP-CLI ou deploy).

define( 'DISALLOW_FILE_MODS', true );

Impedir o acesso direto ao wp-config.php pela web

No .htaccess da raiz do site (Apache 2.4):

<Files wp-config.php>
    Require all denied
</Files>

Restringir as permissões do arquivo

Via SSH, na pasta do site:

chmod 640 wp-config.php     # ou 600, se o PHP rodar com o mesmo usuário do dono do arquivo

Comando de proteção ao arquivo .htaccess

O .htaccess configura o comportamento do servidor web para a pasta: redirecionamentos, regras de acesso e reescrita de URLs. Bloqueie a leitura dele e de outros arquivos ocultos:

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

Comando de proteção à pasta wp-includes

A pasta /wp-includes contém funções internas do WordPress que não precisam ser acessadas diretamente pelo navegador. Adicione as regras abaixo no .htaccess, fora do bloco # BEGIN WordPress / # END WordPress (que é reescrito automaticamente):

# Bloquear arquivos internos do WordPress
<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>

Em instalações multisite, a linha RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] bloqueia o ms-files.php e deve ser removida.

Fonte: WordPress – Hardening WordPress.

Comando de proteção à pasta uploads

A pasta wp-content/uploads deve conter apenas mídia e documentos, nunca código executável. Crie um .htaccess dentro de wp-content/uploads para impedir a execução de PHP, inclusive arquivos disfarçados como foto.php.jpg:

# wp-content/uploads/.htaccess
<FilesMatch "\.(php|php\d|phtml|phar|pht)(\.|$)">
    Require all denied
</FilesMatch>

Essa abordagem é melhor do que liberar só imagens, porque não quebra PDFs, planilhas e outros arquivos legítimos da biblioteca de mídia.

Permissões seguras de arquivos e pastas

Por padrão, o WordPress funciona com as permissões abaixo. Permissões mais abertas (como 777) permitem que qualquer processo do servidor altere os arquivos.

  • Arquivos: 644
  • Pastas: 755
  • wp-config.php: 640 ou 600

Ilustração sobre segurança em site WordPress

Aplicando as permissões em massa:

# na pasta do site (via SSH)
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 640 wp-config.php

Verificações extras com WP-CLI

Se a hospedagem oferece SSH com WP-CLI, estes comandos ajudam a manter o site íntegro:

wp core verify-checksums          # compara os arquivos do núcleo com os oficiais
wp plugin verify-checksums --all  # o mesmo para plugins do diretório oficial
wp core update && wp plugin update --all && wp theme update --all
wp user list --role=administrator # confira quem é administrador

Fonte: WP-CLI – Commands, WordPress – Hardening WordPress.

Leia também

Perguntas Frequentes

Como proteger o wp-config.php?

Bloqueie o acesso pela web no .htaccess (Require all denied), restrinja as permissões para 640 ou 600 e use DISALLOW_FILE_EDIT para impedir a edição de código pelo painel.

Qual a diferença entre DISALLOW_FILE_EDIT e DISALLOW_FILE_MODS?

DISALLOW_FILE_EDIT só desativa o editor de temas e plugins no painel. DISALLOW_FILE_MODS também bloqueia instalar e atualizar plugins, temas e o núcleo pelo painel.

Por que usar Require all denied em vez de Order/Deny?

Order, Allow e Deny são da sintaxe do Apache 2.2. No Apache 2.4 a forma nativa é Require; a antiga só funciona se o módulo de compatibilidade estiver ativo.

Como impedir a execução de PHP na pasta uploads?

Crie um .htaccess dentro de wp-content/uploads com uma regra FilesMatch que negue extensões PHP (php, phtml, phar), inclusive nomes duplos como arquivo.php.jpg.

Quais permissões usar no WordPress?

Arquivos com 644, pastas com 755 e o wp-config.php com 640 ou 600. Nunca use 777.

Leave a comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Vamos trabalhar juntos!
Basta nos chamar em nossos Canais.