Reforçar a segurança do WordPress: permissões, wp-config e .htaccess
As atualizações, uma palavra-passe forte e a verificação em dois passos são a base de um site WordPress seguro. O reforço da segurança (hardening) acrescenta-se a isso: configura o site de forma que uma vulnerabilidade ou uma conta comprometida possa causar menos danos. Aqui fica a saber que definições são essas e como as aplica no seu pacote de alojamento.
O que já é feito no servidor
Uma parte já está tratada nos nossos servidores. O xmlrpc.php está bloqueado por predefinição (WordPress: não é possível aceder ao xmlrpc.php), as funções PHP perigosas estão desativadas (Segurança PHP: funções desativadas) e funcionam uma firewall para o tráfego web e um analisador de malware. Consulte Firewall de Aplicações Web e Imunify360: analisar o seu site em busca de malware. Os passos abaixo são realizados por si, no seu próprio site.
Todos os ficheiros são editados no DirectAdmin através do File Manager. Os ficheiros cujo nome começa por um ponto, como o .htaccess, só ficam visíveis quando mostra os ficheiros ocultos: consulte Mostrar e editar ficheiros ocultos como o .htaccess. Faça primeiro uma cópia de cada ficheiro e guarde essa cópia fora da pasta public_html.
1. Não editar código a partir da administração
Abra o wp-config.php em domains/example.com/public_html e coloque esta linha acima da linha que indica para parar de editar (That's all, stop editing!):
define( 'DISALLOW_FILE_EDIT', true );
Os editores de ficheiros de temas e plugins desaparecem então da administração. Quem se apoderar de uma conta de administrador deixa de poder inserir código malicioso no seu tema com apenas alguns cliques. A instalação e a atualização de plugins continuam a funcionar normalmente. No mesmo ficheiro, defina WP_DEBUG como false, para que as mensagens de erro nunca apareçam no ecrã dos visitantes.
2. Nenhum PHP na pasta uploads
A pasta wp-content/uploads destina-se a imagens e documentos, não a PHP. Um intruso que consiga carregar um ficheiro através de uma vulnerabilidade tentará precisamente colocar ali um ficheiro PHP e executá-lo. Crie em wp-content/uploads um ficheiro .htaccess com:
<Files *.php> Require all denied </Files>
Verifique depois se o seu site, os seus formulários e a sua biblioteca multimédia continuam a funcionar.
3. Nenhuma listagem de pastas
Se uma pasta não contiver um ficheiro index.php ou index.html, o servidor web pode mostrar uma lista de todos os ficheiros. Coloque no topo do .htaccess em public_html:
Options -Indexes
Para testar, abra uma pasta sem ficheiro de índice, por exemplo https://example.com/wp-content/uploads/. Deverá ver uma página de erro (403 ou 404) e não uma lista.
4. Permissões de ficheiros e pastas
| O quê | Permissões |
|---|---|
| Pastas | 755 |
| Ficheiros | 644 |
wp-config.php | Mais restritivas: 600 ou 640. Experimente 600 e verifique se o seu site continua a funcionar. |
Nunca utilize 777: nesse caso, qualquer pessoa no servidor pode escrever nessa pasta. Se um manual disser que é necessário para que os carregamentos funcionem, a causa está noutro lado. Para alterar permissões, consulte Permissões de ficheiros e pastas (chmod).
5. Nenhum resto na pasta web
Tudo o que está em public_html pode ser acedido através da web. Por isso, remova:
- cópias do
wp-config.php, comowp-config.php.bakouwp-config.old. Estas contêm a palavra-passe da sua base de dados e são enviadas como texto simples; - cópias de segurança como
backup.zipoudatabase.sql; - uma pasta
.gitdeixada por um programador; wp-content/debug.log;- ficheiros de teste como
info.phpcomphpinfo().
Se pretender tornar inacessível um único ficheiro, consulte Bloquear ficheiros através do .htaccess.
6. Cabeçalhos e início de sessão
- Os cabeçalhos de segurança indicam ao navegador como deve tratar o seu site. Consulte HSTS e cabeçalhos de segurança para o seu site.
- A página de início de sessão pode ser limitada ao seu próprio endereço IP com Proteger o wp-login.php do WordPress.
- Verificação em dois passos para administradores: consulte Configurar a verificação em dois passos no WordPress.
Ocultar a versão do WordPress é arrumação, não segurança: os programas de ataque simplesmente experimentam a vulnerabilidade. Só a atualização elimina a vulnerabilidade.
E um plugin de segurança?
Um plugin de segurança reúne frequentemente uma firewall, um analisador e proteção do início de sessão. Uma firewall num plugin só funciona quando o WordPress já está em execução; a firewall no servidor trava os pedidos mais cedo. Um plugin é, portanto, um complemento, sobretudo para a verificação em dois passos e para limitar as tentativas de início de sessão. Utilize no máximo um: dois plugins de segurança em simultâneo entram frequentemente em conflito.
.htaccess ou no wp-config.php deita abaixo o site inteiro. Consulte Erro 500 ou "erro crítico" no seu site (também após uma atualização do WordPress).Leitura adicional
- Hardening WordPress (developer.wordpress.org, em inglês)
Quer aprender mais? Siga o curso gratuito de WordPress, lição 7.4 Reforçar a segurança do site: permissões, cabeçalhos e plugins de segurança.
