SSH e força bruta
Como o InfraFence detecta força bruta no SSH com 15 padrões de log e bane os atacantes por durações crescentes, e como protege os logins de e-mail, banco de dados e FTP.
Última atualização:
O que ele lê
Em servidores com systemd, o agente lê as mensagens de autenticação SSH no journal (as facilities auth e authpriv), então as distribuições sem rsyslog também ficam cobertas. Nos outros casos, ou em um contêiner, ele lê /var/log/auth.log ou /var/log/secure. AUTH_LOG_PATH o aponta para um arquivo fora do padrão. O log do agente informa a fonte: reading authentication messages from ….
Os 15 padrões
Nove padrões capturam falhas de autenticação: senhas e chaves com falha, usuários inválidos ou ilegais, falhas de autenticação PAM, maximum authentication attempts exceeded, desconexões por falha de autenticação, usuários não permitidos, logins de root recusados, recusas do TCP wrappers e desconexões de usuários inválidos antes da autenticação.
Outros seis capturam varreduras antes da autenticação: nenhuma string de identificação, versão de protocolo incorreta, falha na negociação da troca de chaves, erros na troca de banner, conexões fechadas ou redefinidas antes da autenticação e timeouts antes da autenticação.
Quando um endereço é banido
Um endereço é banido quando as tentativas com falha dele atingem o limite dentro da janela: por padrão 5 tentativas em 60 segundos, configurável em Configurações › Agente (Limite de força bruta, Janela de força bruta). Cada banimento é reportado ao painel como um evento crítico brute_force.
Um endereço de um país que você bloqueia é banido na primeira tentativa. Um endereço na whitelist nunca é banido.
Quanto tempo dura um banimento
Configurações › Agente › Duração dos banimentos:
- Progressiva: 24 horas, 7 dias, 30 dias, depois permanente (o padrão): cada novo banimento do mesmo endereço dura mais;
- ou sempre 1 hora, 24 horas, 7 dias, 30 dias, ou permanente.
Um banimento começa no servidor na hora e dura 24 horas até que o painel defina a expiração final. Os banimentos expiram no horário certo no servidor mesmo quando o painel não está acessível, e sobrevivem a reinicializações.
Na aba Rede do servidor você pode usar Alterar duração, Desbloquear agora ou Adicionar à whitelist em qualquer banimento ativo. Com Banir em todos os servidores ativado, um endereço banido em um servidor é banido em todos os servidores da organização.
Como o banimento é aplicado
Os banimentos vão para o ipset infrafence-bans, cujo tráfego é descartado pela chain própria do agente, INFRAFENCE, para a qual INPUT salta (e DOCKER-USER, para as portas dos contêineres). Com ipset, o agente mantém até 65.000 banimentos; sem ele, uma regra de firewall por endereço, até 500. Na capacidade máxima, os banimentos mais antigos abrem espaço, com um aviso.
O agente nunca bane endereços de loopback, link-local e privados, os próprios endereços do servidor, o endereço do painel ou endereços na whitelist, mesmo que isso seja pedido.
E-mail, banco de dados e FTP
A mesma detecção cobre os outros serviços que aceitam logins, com um limite fixo de 5 tentativas com falha em 5 minutos:
| Serviço | Logs lidos |
|---|---|
| Postfix, Dovecot, Roundcube | /var/log/mail.log, /var/log/maillog, /var/log/dovecot.log |
| MySQL, MariaDB | /var/log/mysql/error.log, /var/log/mysqld.log, /var/log/mariadb/mariadb.log |
| PostgreSQL | /var/log/postgresql/ e os diretórios pg_log |
| MongoDB | /var/log/mongodb/mongod.log, /var/log/mongod.log |
| vsftpd, ProFTPD, Pure-FTPd | /var/log/vsftpd.log, /var/log/proftpd/proftpd.log, o log de autenticação do sistema para o Pure-FTPd |
MAIL_LOG_PATH, DB_LOG_PATH e FTP_LOG_PATH substituem os arquivos detectados. Um watcher sem nada para ler avisa no log, por exemplo [mailwatcher] no mail service found — mail attack detection disabled.
Modo monitor
Com o Modo monitor ativado, cada tentativa continua sendo detectada e reportada, e nada é banido.
