você está aqui: Home  → Arquivo de Mensagens

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!



 

 

Veja a relação completa dos artigos de João Eriberto Mota Filho

Opinião dos Leitores

Roger Boff
07 Ago 2010, 11:21
Grande Eriberto, tudo bem?

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
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script