De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Alexandro Silva
Data de Publicação: 16 de setembro de 2013
Nos últimos meses venho acompanhando tentativas diárias de ataques de brute-force direcionados a tela de autenticação do Wordpress. A boa prática de segurança, caso seja necessário disponibilizar consoles administrativas para a internet, é restringir o acesso somente para ips específicos. O log abaixo apresenta algumas dessas tentativas que vem ocorrendo aos montes diariamente.
78.162.40.7 - - [11/Sep/2013:17:13:11 +0000] "GET /wp-admin/ HTTP/1.1" 403 434 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" 78.162.40.7 - - [11/Sep/2013:17:13:10 +0000] "GET /admin/login.php HTTP/1.1" 404 8261 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" 78.162.40.7 - - [11/Sep/2013:17:13:11 +0000] "GET /wp-admin/ HTTP/1.1" 403 434 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" 78.162.40.7 - - [11/Sep/2013:17:13:06 +0000] "GET /admin.php HTTP/1.1" 404 8255 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" 78.162.40.7 - - [11/Sep/2013:17:13:03 +0000] "GET /wp-login.php HTTP/1.1" 403 438 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" 78.162.40.7 - - [11/Sep/2013:17:13:03 +0000] "GET /wp-login.php HTTP/1.1" 403 438 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
Como disse anteriormente a recomendação é restringir o acesso, nesse caso podemos executar os seguintes procedimentos:
Edite o arquivo do vhost e crie uma diretiva Directory para o diretório admin do site como no exemplo abaixo:
<Directory /var/www/acme/wp-admin> Order Deny,Allow Deny from all Allow from 1.2.3.4 Options FollowSymLinks AllowOverride All </Directory>
Edite o arquivo /etc/nginx/nginx.conf ou do vhost em /etc/nginx/sites-avaliable como no exemplo abaixo:
location /wp-admin { root /var/www/acme/; index index.php; allow 1.2.3.4; deny all; }
Outra ação interessante é redirecionar o acesso para a página principal ocorrendo erros 500,403 e 404, faça isso adcionando as seguintes linhas no arquivo de configuração do vhost:
ErrorDocument 500 http://www.acme.com ErrorDocument 403 http://www.acme.com ErrorDocument 404 http://www.acme.com
Não sendo possível restringir o acesso a hosts específicos, habilite outra camada de autenticação.
Use o htdigest para criar um arquivo de senhas.
sudo htdigest -c /var/www/acme/digest/.pass 'Acesso Restrito' **login==
Adicione as seguintes linhas dentro da diretiva Directory correspondente ao diretório admin.
AuthType Digest AuthName "Acesso Restrito" AuthDigestProvider file AuthUserFile /var/www/acme/digest/.pass Require valid-user
Exemplo
<Directory /var/www/acme/wp-admin> AuthType Digest AuthName "Acesso Restrito" AuthDigestProvider file AuthUserFile /var/www/acme/digest/.pass Require valid-user Order Allow,Deny Allow from all Options FollowSymLinks AllowOverride All </Directory>
Só é possível utilizar o modo de autenticação Digest no Nginx apenas utilizando módulos de terceiros, para facilitar irei descrever como habilitar o modo Basic que não é o mais recomendado por não prover a confidencialidade dos dados.
Instale o pacote apache2-utils e crie o arquivo de senhas
sudo aptitude install apache2-utils sudo htpasswd -c /var/www/acme/.htpasswd **login==
Adicione as seguintes linhas dentro da diretiva location correspondente ao diretório admin.
auth_basic "Restricted"; auth_basic_user_file /var/www/acme/.htpasswd;
location /wp-admin { root /var/www/acme/; index index.php; auth_basic "Restricted"; auth_basic_user_file /var/www/acme/.htpasswd; }
Nos casos onde não é possível acessar os arquivos de configuração do Apache ou Nginx, execute estes procedimentos no arquivo .htaccess.
Use o htdigest para criar um arquivo de senhas.
sudo htdigest -c /var/www/acme/digest/.pass 'Acesso Restrito' **login==
Para proteger o diretório wp-admin,crie um arquivo .htaccess dentro deste diretório adicionando as configurações de segurança e adicione as linhas como mostra o exemplo.
vim /home/acme/www/wp-admin/.htpasswd
ErrorDocument 401 default AuthType Digest AuthName "Acesso Restrito" AuthUserFile /home/acme/www/.htpasswd require valid-user
Habilite também a proteção para o arquivo wp-login.php que fica no diretório raiz do Wordpress.
vim /home/acme/www/.htpasswd
ErrorDocument 401 default <Files "wp-login.php"> Satisfy all AuthType Basic AuthName "Acesso Restrito" AuthUserFile /home/acme/www/.htpasswd require valid-user </Files>
O uso de um HIDS ou um WAF é recomendado pois eles são capazes de identificar e bloquear este tipo de ataque, evitando a indisponibilidade do serviço devido a uma sobrecarga do servidor web na tentativa de atender as requisições.
Exemplos de plugins que contribuem na proteção da console administrativa dos principais CMSs.
Usando esses procedimentos é possível inibir ataques de brute-force ou tentativas de acesso não autorizado a console administrativa não só do Wordpress como de qualquer outro CMS ou site.
Artigo publicado originalmente no Blog do autor
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários