Em uma instalação insegura do WordPress, existem algumas vulnerabilidades potenciais . A maioria dos tutoriais de instalação do WordPress explica uma maneira rápida e fácil de implantar o WordPress em minutos. Porém desconsideram aspectos fundamentais da segurança no Apache2 com .htaccess. Por exemplo, a navegação no diretório WP-CONTENT. Hoje vamos dar uma olhada em snippets de código .htaccess que ajudarão a melhorar a segurança do seu blog WordPress.
É fundamental desabilitar o qualquer tipo de acesso fora do WordPress ao arquivo wp-config.php. Este arquivo tem informações das credenciais do banco de dados do WordPress. Para isso vamos adicionar o seguinte snippet em seu arquivo .htaccess na raiz do WordPress
<files wp-config.php>
order allow,deny
deny from all
</files>
Se o seu WordPress não utiliza o XML RPC é interessante desativar o serviço. Primeiro que bots ficam fazendo chamadas remotas constantemente consumindo recursos de seu host. Segundo que se houver alguma vulnerabilidade nas senhas dos usuários este serviço permite alterar e o conteúdo do seu blog. No mesmo .htaccess na raiz do seu WordPress adicione o seguinte Snippet de código:
#disable XML RPC
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
A pasta wp-content possui os plugins e uploads do WordPress. Dentro da pasta UPLOADS não faz sentido conter arquivos PHP sendo executados. Isto é na verdade uma falha de vulnerabilidade. Portanto crie dentro da pasta wp-content/uploads um arquivo .htaccess com o seguinte snippet de forma que desative a execução do PHP nesta pasta e subdiretórios;
# Kill PHP Execution wp-content/uploads
<Files *.php>
deny from all
</Files>
Verifique as permissões dos arquivos e pastas do seu WordPress conforme o snippet abaixo
chown -Rv www-data:www-data
chmod -Rv 0755 wp-includes
chmod -Rv 0755 wp-admin/js
chmod -Rv 0755 wp-content/themes
chmod -Rv 0755 wp-content/plugins
chmod -Rv 0755 wp-admin
chmod -Rv 0755 wp-content
chmod -v 0640 wp-config.php
chmod -v 0640 wp-admin/index.php
chmod -v 0644 .htaccess
Se você não for utilizar o login no wordpress é possível desabilitar o mesmo com o seguinte snippet no arquivo .htaccess na raiz do wordpress:
<files wp-login.php>
order allow,deny
deny from all
</files>
Seu WordPress precisa da API JSON habilitada? Se a resposta for não adicione o seguinte Snippet no .htaccess na raiz do WordPress. Ele vai redirecionar todas as requisições para a raiz do site.
RewriteRule ^wp-json.*$ index.php
Menos é mais. Verifique sempre a origem dos plugins instalados em seu WordPress. Desabilite as funções REST e XML RPC se nao forem utilizadas. Crie senhas seguras em seu WOrdpress e instale o Wordfence para bloquear em tempo real usuários maliciosos.