Transforme seu WordPress em um Forte Knox
Como transformar o WordPress em uma fortaleza protegida como Fort Knox
English version: Turn your WordPress into Fort Knox
Este artigo parte do pressuposto de que você deseja criar um site à prova de balas, baseado em WordPress. Não é necessário seguir todos os passos descritos à risca, palavra por palavra. Mas eu recomendo que o faça se quiser construir seu próprio Fort Knox.
Algumas das etapas a seguir podem causar problemas de incompatibilidade com alguns plugins estranhos que tentam modificar arquivos diretamente nas pastas do WordPress. Recomendo ignorar qualquer plugin desse tipo, pois o uso deles pode levar a muitos problemas e vulnerabilidades de segurança, tanto a curto quanto a longo prazo, caso hackers explorem falhas nos plugins ou no tema instalado em seu site. Criei este artigo na esperança de que seja útil, mas sem qualquer garantia.
Observação: este artigo não se aplica se você estiver usando hospedagem compartilhada. Você precisa ter, no mínimo, um servidor VPS.
Requisitos: acesso root ao servidor Linux onde seu site está hospedado. Sem acesso ao shell com privilégios de root, você não poderá fazer nada útil para criar um site realmente protegido. Não existe nenhum plugin ou método capaz de proteger o WordPress e seus arquivos em um nível profissional. Todos os plugins de segurança têm o mesmo nível de privilégios (permissões) que hackers e bots. Sem exceção. Se algum plugin de segurança fizer alterações nos arquivos do seu site para protegê-los, qualquer hacker ou código malicioso poderá desfazer essas alterações ou remover a proteção.
Aqui estão alguns pontos importantes sobre a minha abordagem.
- Todos os arquivos de código (código PHP) e todos os arquivos .htaccess devem estar protegidos contra gravação. Sem exceções.
- Precisamos alterar todos os valores padrão (pasta, cookies, caminho de login, quaisquer outros pontos de referência) para valores diferentes.
- Não devemos usar plugins ou temas que interajam com arquivos PHP ou .htaccess nas pastas do WordPress e tentem alterá-los.
Primeiro passo. Instalando o WordPress
Não utilize o prefixo padrão wp_ para tabelas de banco de dados. Use duas ou três letras em vez disso. Alguns ataques específicos do WordPress partem do pressuposto de que o prefixo da tabela é wp_ . Alterar o prefixo ajuda a bloquear alguns ataques de injeção de SQL.
Etapa dois. Reforçando a segurança do site no nível do WordPress.
- Mova a pasta de uploads um nível acima, de dentro da pasta /wp-content/ para a raiz da pasta de instalação do WordPress.
- Renomeie a pasta de uploads para "media" (ou algo parecido, como preferir).
- Renomeie a pasta wp-content para content (ou algo semelhante, como preferir).
- Renomeie a pasta de plugins para mod (ou algo parecido, o que você preferir).
- Adicione as seguintes linhas ao início do arquivo wp-config.php . Não se esqueça de alterar media , content e mod para os valores reais que você escolheu anteriormente .
define('AUTOMATIC_UPDATER_DISABLED', true ); // sim, é seguro fazer isso manualmente
define('DISALLOW_FILE_EDIT', true ); // nunca permitimos que ninguém toque nos seus arquivos
define('DISALLOW_FILE_MODS', true ); // sim, é seguro fazer isso manualmente
define('FS_METHOD', 'direct'); // sem FTP, é claro
define('WP_HTTP_BLOCK_EXTERNAL', true );
define('UPLOADS', ' media '); // renomeamos uploads e o movemos um nível acima
define('WP_CONTENT_DIR', '/caminho/para/o/diretório/wordpress/ conteúdo '); // sem nome de host, sem barra no final
define('WP_CONTENT_URL', 'http://example.com/ conteúdo ');
define('WP_PLUGIN_DIR', '/caminho/para/o/diretório/wordpress/ conteúdo / mod '); // sem nome de host, sem barra final
define('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
ini_set('display_errors',0); // desativa a exibição de erros PHP no front-end
Passo três. Alterar o nome dos cookies padrão.
Adicione estas linhas ao início do arquivo wp-config.php
define('USER_COOKIE', 'my_user_cookie' ); // altere para algo diferente
define('PASS_COOKIE', 'my_pass_cookie' ); // altere para algo diferente
define('AUTH_COOKIE', 'my_auth_cookie' ); // altere para algo diferente
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // altere para algo diferente
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // altere para algo diferente
define('TEST_COOKIE', 'my_test_cookie' ); // altere para algo diferente
Passo quatro. Instale um plugin de segurança imediatamente após a instalação do WordPress.
Proteja sua página de login com o WP Cerber Security . Mesmo com as medidas de proteção acima, hackers tentarão usar ataques de força bruta (tentativas de login) para invadir seu site WordPress. Oculte e feche essa porta com o WP Cerber.
Etapa cinco. Reforçando a segurança do site no nível do servidor.
Nesta etapa, presumo que você esteja usando um servidor com Apache como servidor HTTP. Precisamos alterar o proprietário de todos os arquivos do WordPress, incluindo plugins e temas. Por padrão, esse usuário é o "apache" . Precisamos alterá-lo para outro usuário que você tenha criado previamente para essa finalidade. Digamos que esse usuário seja "cerber" .
- Coloque o arquivo .htaccess na pasta de mídia (sua nova pasta de uploads) com a seguinte diretiva. Isso impede que o site execute código PHP malicioso enviado.
php_flag engine desligado
Observação: O arquivo de configuração do Apache deve conter a diretiva
AllowOverride Optionspara sua pasta de uploads ou qualquer uma de suas pastas pai para que essa diretiva funcione. - Para todo o diretório do site (/caminho/para/wordpress/dir), altere o proprietário e as permissões de todos os arquivos. Para fazer isso, execute os seguintes comandos no terminal.
find /caminho/para/diretório/wordpress -exec chown cerber:root {} +
find /caminho/para/diretório/wordpress -type d -exec chmod 755 {} +
encontrar /caminho/para/diretório/wordpress -tipo f -exec chmod 644 {} + - Para o diretório de uploads (/caminho/para/wordpress/dir/ media ), precisamos definir permissões especiais. Vamos fazer isso usando comandos exec no shell.
find /caminho/para/diretório/wordpress/ media -exec chown cerber:apache {} +
encontrar /caminho/para/diretório/wordpress/ media -type d -exec chmod 775 {} +
encontrar /caminho/para/diretório/wordpress/ media -type f -exec chmod 664 {} + - Configure a estrutura de links permanentes nas Configurações do WordPress e, em seguida, altere as permissões do arquivo .htaccess para protegê-lo contra gravação.
chown cerber:root /caminho/para/o/diretório/wordpress/.htaccess
chmod 644 /caminho/para/o/diretório/wordpress/.htaccess - Mova o arquivo wp-config.php para o diretório acima do diretório de instalação do WordPress.
Sexto passo. Reforçando a segurança do site no nível do servidor NGINX.
Leia aqui: Reforçando a segurança do WordPress com WP Cerber e NGINX
Sétimo passo. Reforçando a segurança do site com o Fail2Ban
Leia aqui: Como proteger o WordPress com o Fail2Ban