Como podemos limitar o impacto das sondas ssh?

13

Meu servidor é constantemente atacado por vários endereços IP. Eles tentam cinco senhas e alteram o endereço IP.

Eu fiz vários bloqueios, como usar chaves SSH e não permitir senhas, e não permitir login raiz remoto.

Existe algo que eu possa fazer para me livrar dessas tentativas de ataque? Se isso não acontecer, existem defesas específicas que devo colocar?

    
por JW01 26.09.2011 / 11:08

8 respostas

14

É realmente um fato da vida. Você pode instalar ferramentas para filtrar hosts que estão atacando você depois de algumas tentativas frustradas.

DenyHosts analisa seus arquivos de log e adiciona automaticamente invasores ao seu arquivo /etc/hosts.deny .

Verifique a documentação sobre como configurá-lo para suas necessidades.

Atualização : alguns pontos importantes sugeridos nos comentários

  • Certifique-se de configurar corretamente as ferramentas como DenyHosts, pois você pode se bloquear (por exemplo, pode configurar uma máquina ou rede que nunca é filtrada)

  • O DenyHosts não aumenta a segurança do seu sistema: ele apenas filtra ataques no nível de IP (pode reduzir a carga em máquinas pequenas e reduzir o tamanho dos arquivos de log, mas nada mais)

por 26.09.2011 / 11:28
15

Eu segui estas instruções para adicionar um atraso de 7 segundos a cada tentativa de login SSH com senha incorreta . Eu fiz o meu sshd em um "tarpit" para os scanners de força bruta.

Eu também devo adicionar que eu tenho meu sshd tarpit modificado para registrar as senhas com falha. Isso pode não ser inteiramente ético, pois dá ao usuário root uma olhada no que os usuários comuns digitam incorretamente como suas próprias senhas, mas como sou o único usuário "real", acho que está tudo bem.

Eu não o tenho em uma porta não padrão, já que o aspecto "tarpit" não desperdiçaria o tempo de ninguém.

    
por 26.09.2011 / 13:47
9

Se apenas um pequeno número de pessoas precisar do SSH no sistema, considere mover o SSH para uma porta não padrão (por exemplo, 6422, 8080 etc.). Isso por si só reduzirá bastante o número de tentativas de login (e possivelmente protegerá você a partir de algum worm baseado em exploits SSH sem correção, por exemplo).

    
por 26.09.2011 / 13:37
6

Concorde com a resposta de @ Matteo; o que você está vendo é essencialmente milhares de sistemas zumbis executando um ataque distribuído de força bruta no seu servidor porque há um site rodando nele, o que significa que pode haver usuários que possam ter uma conta de login que possa ser adivinhada esforço mínimo por parte do script kiddie - ele tem um programa que ordena que os milhares de zumbis façam tentativas de força bruta em algumas centenas de hosts do site por vez e apenas compilam uma lista dos retornos bem-sucedidos.

Da mesma forma, às vezes você pode ver muitas permutas de "http://your.web.host/phpmyadmin/" em seus arquivos /var/log/apache2/access.log ; Estas são varreduras automáticas para as formas mais comuns de configurar o PHPMyAdmin, e tentarão uma série de explorações conhecidas se uma for encontrada (isto, aliás, é por isso que eu comecei dizendo aos clientes para usarem o site PMA que eu pessoalmente configurei e mantenha-se atualizado em vez de instalar sua própria versão e esquecer de mantê-la atualizada, mas agora estamos em uma tangente).

Além de enviar o comando original, nem custa tempo nem largura de banda; é fogo e esqueça.

Outro software muito útil para situações como essa é fail2ban , que usa o iptables para bloquear tentativas de conexão após vários logins claramente falsos ou outras tentativas de exploração.

    
por 26.09.2011 / 12:21
4

Tente configurar Fail2ban . Ele fornece uma maneira muito flexível de procurar por tentativas com falha e possui modelos para SSH, HTTP e serviços comuns.

O Fail2ban atualizará iptables de acordo com suas ações. Eu adoro isso.

    
por 26.09.2011 / 17:42
2

Se você conseguir, eu acho que a melhor maneira de lidar com coisas como essa é usar uma VPN. Dessa forma, a única coisa que eles podem segmentar é a VPN. Não deve haver nenhum serviço aberto ao mundo em geral, exceto aqueles que são necessários para o acesso de "todos", como o seu servidor web. Todo o resto deve ser bloqueado pelo firewall. Agora, a única coisa que você realmente precisa se preocupar em proteger é sua VPN. Se puder, obtenha um IP estático para os computadores dos quais você gerencia seus servidores e bloqueie sua VPN para esse endereço IP específico. Esta é realmente a única maneira de impedir que as pessoas tentem forçar as senhas.

    
por 26.09.2011 / 14:49
2

Você pode usar IPTABLES para interromper o tráfego sem executar um daemon como o Fail2Ban ou o DenyHosts.

#  Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
    
por 27.09.2011 / 20:09
0

O Sshguard funciona muito bem. Eu estou usando isso junto com o iptables.

    
por 26.09.2011 / 21:16

Tags