Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Dando mais segurança ao serviço SSH com fail2ban e samhain
Colaboração: João Eriberto Mota Filho
Data de Publicação: 07 de agosto de 2010
Recentemente, divulguei duas atividades no meu Twitter e no meu Blog que chamaram bastante a atenção das pessoas. Tratava-se de duas máquinas, que foram disponibilizadas na Internet, com SSH ativado e senha de root extremamente simples. Vários bots (robôs na Internet) descobriram a senha e avisaram aos seus donos. Com isso, narrei on-line, em tempo real ou quase real, tudo o que acontecia. Uma verdadeira festa de invasores.
Na primeira vez a senha foi descoberta por volta de 1 hora. Na segunda vez, em cerca de 15 horas. Isso, certamente, serviu para mostrar a muitos que senhas fracas não devem ser adotadas. Aquela história de "vai ser só de hoje para amanhã" não é uma boa atitude. As duas experiências estão nas seguintes URLs:
Sei que já deram aqui milhões de receitas para aumentar a segurança de serviços SSH. Mas vale a pena reforçar alguns procedimentos e sugerir outros, geralmente, desconhecidos. Vou falar sobre o Debian mas, com poucas adaptações, tudo o que for visto aqui poderá ser aplicado em outras distros.
Inicialmente, a mais óbvia. Troque a porta default de 22 para alguma que esteja acima de 5000. Os bots, geralmente, só testam senhas em SSH configurados na porta 22. Para trocar a porta, no Debian, edite o arquivo /etc/ssh/sshd_config e procure pela linha Port 22. Depois de alterar a porta, reinicie e o serviço com o comando:
# /etc/init.d/ssh restart
Há várias coisas legais que podem ser feitas, tudo já divulgado aqui no Dicas-L por outros autores. Desabilitar o login pelo root, só permitir login utilizando certificado etc. Mas digamos que você precise do método de autenticação tradicional, com usuário e senha. Uma coisa é certa: nada de senha óbvia. Use senhas com oito caracteres ou mais, contendo letras, números e caracteres especiais. Além disso, instale o fail2ban.
O fail2ban é um sistema de verificação de falha de autenticação. Pode ser utilizado com inúmeros serviços. Um deles é o SSH. Então, digamos que alguém tente um login por SSH e erre X vezes o usuário, a senha ou ambos. O IP desse usuário será bloqueado por N segundos. É isso que o fail2ban faz. Inicialmente, instale-o com:
# apt-get install fail2ban
A seguir, edite o arquivo /etc/fail2ban/jail.conf e, na seção [ssh], altere a entrada
maxretry = 6
para
maxretry = 3
Ainda, abaixo da citada linha (maxretry = 3), acrescente:
bantime = 3600
Reinicie o serviço fail2ban:
# /etc/init.d/fail2ban restart
No caso, o fail2ban foi configurado para, na ocorrência de três tentativas sem sucesso de autenticação SSH, bloquear por 1 hora (3600 segundos) o IP do atacante. O bloqueio se dará por Netfilter (ativado pelo fail2ban via comando iptables).
Por fim, o pior problema que pode acontecer numa invasão é você nunca ficar saber que ela ocorreu. Então, você precisa do samhain. O samhain é responsável por lhe avisar quando qualquer arquivo ou diretório que esteja na relação de vigilância dele for alterado. Uma das formas de ser avisado é por e-mail. Então, instale o samhain com o comando:
# apt-get install samhain
Considerando que você esteja querendo vigiar por e-mail o servidor que recebeu o samhain, instale o sendmail em tal servidor para que este possa enviar e-mails.
# apt-get install sendmail
O sendmail será instalado de forma que só a máquina local possa enviar mensagens (não haverá portas abertas para fora). Isso poderá ser verificado com o comando:
# netstat -tunlp
A seguir, edite o arquivo /etc/aliases e, no fim, insira a linha:
root: seu_endereço_de_email
Ou seja: quando o samhain enviar um mail local para o root, ele será redirecionado para o seu e-mail. Para validar a configuração anterior, execute o comando:
# newaliases
Se for necessário, no arquivo /etc/samhain/samhainrc você poderá configurar quais arquivos e diretórios devem ser observados ou não. Dentro do arquivo tem toda a explicação de como fazer. Leia o arquivo desde do início. Você poderá utilizar wildcards etc.
É lógico que existem outras artimanhas e programas que podem ser utilizados. Mas com o que escrevi aqui, com certeza, o grau de segurança do seu servidor SSH aumentará bastante.
Enjoy!
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
07 Ago 2010, 11:21
Primeiramente, parabéns pelo artigo e por outras abordagens sobre seguranças que você disponibiliza aqui e no seu blog.
Acompanhei o andamento da sua analise forense das invasões no seu blog e twitter, e fica só esperando a próxima atualização, pena que acabou, estava divertido.
Sobre o fail2ban, não utilizei ele, mas pelo jeito é fácil de configurar, mas utilizo Denyhost (conheci por um artigo na revista Linux Magazine ed 43), pois ele tem um leque de configurações mais abrangentes sobre tentativas de conexões ssh, sendo possível efetuar o bloqueio do ip por tentativa de conexão usando usuário root, tentativas com usuários válidos e tentativas com usuários inválidos.
Acho legal a capacidade que o Denyhost tem de informar para o resto de mundo o ip de um atacante, formando assim uma rede mundial de defesa, sendo possível se conectar ao servidor do Denyhost e baixar uma tabela contendo os ips dos atacantes ativos e enviar os ips que tentaram conexões ssh não autorizados no computador em questão, se antecipando assim a um possível ataque e barrando ele antes que algo posso acontecer.
Abraços
Site do projeto: http://denyhosts.sourceforge.net/
Artigos: http://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts
http://www.vivaolinux.com.br/dica/Bloqueando-tentativas-de-acesso-indevido-ao-SSH-com-DenyHosts-no-Slackware-Linux
Artigo em revista: Linux Magazine edição 43




