Protegendo servidor SSH com fail2ban
O SSH é um serviço que facilita a vida de todo administrador GNU/Linux pois permitir acesso a um terminal remoto utilizando um canal seguro por meio de chaves criptográficas (RSA/DSA), mas isso não impede que invasores tentem invadir o seu servidor utilizando scripts com dicionários de senhas e usuários. Só a simples instalação do servidor ssh já basta para as tentativas de invasão terem inicio.
O fail2ban analisa o arquivo de log relacionado com a autenticação de usuários e identifica falhas de login e bloqueia hosts com falhas sucessivas de logins mal-sucedidos. É eficaz na contra força bruta e ataques DoS.
Vamos começar instalando o fail2ban:
# apt-get install fail2ban
Conforme diz a documentação do fail2ban todos os arquivos de configuração devem possuir a extensão .local, o fail2ban normalmente vem preparado para proteger a porta tcp/22 (ssh), mas pode ser preparado facilmente para proteger outras portas.
# cd /etc/fail2ban
# cp jail.conf jail.local
Vamos fazer alguns ajustes: Quais IPs não serão afetados, tempo de banimento (segundos), e quantas tentativas permitidas antes de banir
bantime = 1800
maxretry = 3 ## Para qual email enviar as mensagens do fail2ban destemail = seu_usuario@localhost ## O fail2ban cria 2 chains (fail2ban-ssh e fail2ban-ssh-ddos) ligadas a chain INPUT ## e utiliza -m multiport para caso de mais de uma porta ser utilizada. banaction = iptables-multiport ## Na seção JAILS quais serviços serão monitorados pelo fail2ban: [ssh] enable = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6 ##
Alterações realizadas, falta apenas reiniciar o serviço do fail2ban:
# /etc/init.d/fail2ban restart
O arquivo de log do fail2ban é: /var/log/fail2ban.log
Espero que tenham gostado post e não se esqueçam de assinar o portal.
Abraços,
Ricardo Pinheiro
Super Ricardo, me tire uma dúvida. Tem como eu colocar alguma conta fora do Jail? Pq na verdade eu queria que uma das contas tivesse acesso a todo o /, utilizando o Jail, eu creio que o usuário ficaria dentro de uma certa estrutura. Correto?
Mario,
O fail2ban não lida com jaula chroot, apenas monitora tentativas de acesso, e caso o No. máximo seja alcançado o host será bloqueado. Caso seja do seu interesse liberar uma rede ou host/IP específico basta ir em jail.local localizar a opção “ignoreip” e adicionar os hosts/IPs Rede/CIDR para liberar.
Abraços,
Ricardo Pinheiro
Ele é eficaz contra o Nmap?
Marcos,
Não, você precisa trabalhar com iptables para isso.
Abraços,
Ricardo Pinheiro
Logo no início é definido “maxretry = 3”, porém na seção SSH é redefinido para “maxretry = 6”. Qual prevalece? Ou seja, serão permitidas até 3 tentativas sem sucesso ou 6? abs, Ederson.
Ederson,
Na seção global estão os valores padrões que podem ser modificados em cada jaula (jail), portanto o que prevalece é o “maxretry = 6”.
Abraços,
Ricardo Pinheiro