Para bloquear a listagem externa de logins de usuários no WordPress, siga estes passos:
No WordPress, por padrão, é possível obter uma lista de usuários administrativos através de uma determinada URL: https://<site_name>/wp-json/wp/v2/users/
A maioria dos especialistas, incluindo a CentralServer, considera esse tipo de divulgação de informações um risco de segurança. Uma solução para o problema seria desativar a API REST do WordPress. No entanto, isso pode impactar vários plugins que fazem uso de chamadas de API.
Como não é viável desativar completamente a API, podemos criar um filtro do WordPress para remover esta rota específica. Exemplo:
add_filter( ‘rest_endpoints’, function( $endpoints ){
if ( isset( $endpoints[‘/wp/v2/users’] ) ) {
unset( $endpoints[‘/wp/v2/users’] );
}
if ( isset( $endpoints[‘/wp/v2/users/(?P<id>[\d]+)’] ) ) {
unset( $endpoints[‘/wp/v2/users/(?P<id>[\d]+)’] );
}
return $endpoints;
});
NOTA: Esse filtro deve ser instalado no arquivo functions.php do WordPress ou através de um plugin como o Code Snippets.
Esse filtro oferece uma solução eficiente para a listagem de métodos de enumeração, contudo, existem outros. Por exemplo: https://site_name/?author=ID (onde ID é igual a 1, 2, 3, …) que mostra uma página com o apelido do autor e os posts que ele publicou.
Para evitar que este tipo de informação seja exibida externamente, podemos desfrutar do plugin Stop User Enumeration (https://br.wordpress.org/plugins/stop-user-enumeration/).
O Stop User Enumeration também se integra ao Fail2ban, o que permite banir os IPs que tentem obter este tipo de informação em lote para, posteriormente, fazer ataques de força bruta contra o site.
Para quem instala o Fail2ban conforme orientamos na nossa wiki, a integração é fácil de ser realizada. Basta instalar dois arquivos fornecidos pelo desenvolvedor do plugin:
– /etc/fail2ban/jail.d/wordpress-userenum.conf
[wordpress-userenum]
enabled = true
filter = wordpress-userenum
logpath = /var/log/auth.log
maxretry = 2
port = http,https
NOTA: Recomendamos usar maxretry = 2 (ou mais) para evitar que bots de mecanismos de busca sejam banidos incorretamente.
– /etc/fail2ban/filter.d/wordpress-userenum.conf
[INCLUDES]
before = common.conf
[Definition]
_daemon = wordpress
failregex = ^%(__prefix_line)sAttempted user enumeration from <HOST>$
ignoreregex =
NOTA: Após instalar os arquivos é necessário reiniciar o Fail2ban.
Confira este artigo para obter mais informações sobre Como proteger o WordPress contra invasões?.
Para conhecer as práticas de segurança que nós recomendamos para você proteger seus recursos na internet, veja as orientações deste artigo da nossa Wiki.
AVISO LEGAL: Os procedimentos descritos neste documento devem ser executados de acordo com o contexto de cada sistema, de forma a evitar impactos negativos à segurança, disponibilidade, integridade e privacidade de dados. A CentralServer se reserva o direito de modificar a qualquer tempo e sem aviso prévio as informações aqui apresentadas a fim de refletir o lançamento de novos serviços, atualizações físicas e operacionais, e evolução do estado-da-arte da tecnologia.