Como podemos limitar o impacto dos testes ssh?

13

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

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

Existe algo que eu possa fazer para me livrar dessas tentativas de ataque? Na falta disso, existem defesas específicas que eu devo colocar?

JW01
fonte
1
Sinalizar para uma migrar para security.se onde é um pouco mais sobre o tema
Rory Alsop
1
@Rory Há uma diferença entre "a alguém pouco mais sobre o tema mais" e "off-topic aqui" - parece bastante clara sobre o tema aqui
Michael Mrozek
Não se preocupe @ Michael. Tinha um ping de Gilles para vê-lo, pois era possivelmente offtopic aqui.
Rory Alsop
@Rory Ok, eu vou perguntar a ele sobre isso; ele é normalmente muito bom em me convencer de algo que eu acho é {off, on} tópico é realmente {on, off} tópico
Michael Mrozek
1
Minha pergunta parece ter mudado além do reconhecimento. Na minha pergunta original, eu estava realmente tentando descobrir se era comum todos os sites sofrerem ataques de força bruta - isto é, um fato da vida. Isso foi respondido por Matteo com "É realmente um fato da vida". A segunda parte da pergunta foi perguntando o que eu poderia fazer para impedir ativamente esses ataques, além de colocar as defesas . Essa seria uma questão secundária relevante se apenas alguns sites sofressem ataques de força bruta. Foi respondido por Bruce com sua ideia de tarpit. Eu realmente não pedi dicas defensivas.
JW01 27/09

Respostas:

14

É de fato um fato da vida. Você pode instalar ferramentas para filtrar os hosts que o atacam após algumas tentativas falhas.

DenyHosts analisa seus arquivos de log e adiciona automaticamente atacantes ao seu /etc/hosts.denyarquivo.

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

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

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

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

Matteo
fonte
1
Aaah. Eu estava começando a pensar que era especial. Obrigado por me esclarecer.
JW01 26/09/11
Estendendo sobre Matteo, sua pergunta quase foi respondida exatamente refs Q1.3 denyhosts.sourceforge.net/faq.html#1_0
whoami
@ whoami Obrigado pelo link, um bom resumo. Embora uma coisa que sempre me vem à cabeça quando vejo o uso de uma dica de porta diferente seja ' como você sabe que a porta alternativa que você escolhe não é usada por outra coisa? '
JW01 26/09
1
Tenha cuidado com o DenyHosts e ferramentas semelhantes, pois elas introduzem complexidade adicional, ou seja, podem criar problemas de segurança por conta própria, cf. o segundo comentário no unix.stackexchange.com/questions/2942/...
maxschlepzig
1
Também tenha cuidado com o DenyHosts, pois você pode se bloquear da sua máquina. Um simples apt-get install denyhostsme trancou fora da minha máquina.
Naftuli Kay
15

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

Devo também acrescentar que meu sshd tarpit modificado registra as senhas com falha. Isso pode não ser totalmente ético, pois fornece ao usuário root uma visão de quais usuários comuns digitam incorretamente como suas próprias senhas, mas como eu sou o único usuário "real", acho que está tudo bem.

Não o tenho executado em uma porta não padrão, pois o aspecto "tarpit" não desperdiçaria o tempo de ninguém.

Bruce Ediger
fonte
Além disso, use uma porta não padrão e use chaves em vez de senhas. Então, eles quase não têm esperança (desde que não consigam se apossar das chaves, que devem ser todas com senha de qualquer maneira).
Callum Rogers
Essa é uma boa resposta, pois tem uma abordagem um pouco "ofensiva", em vez de ser puramente "defensiva", o que eu acho que acrescenta moral.
JW01 27/09/11
9

Se apenas um pequeno número de pessoas precisar fazer o SSH para o 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ê de algumas falhas não corrigidas) Worm baseado em exploração SSH, por exemplo).

Cunha
fonte
3
+1 Bastante útil, pois limita o aborrecimento, mas não confunda isso com uma medida de segurança - este é o equivalente mais próximo de uma porta de tela contra mosquitos do que de uma trava de segurança.
Piskvor saiu do prédio 27/09/11
1
+1 Isso também é uma economia nos recursos do servidor.
Xeoncross
6

Concordo com a resposta de @ Matteo; o que você vê são essencialmente milhares de sistemas zumbis executando um ataque de força bruta distribuída em seu servidor porque existe um site em execução, o que significa que pode haver usuários que possam ter uma conta de login que possa ser adivinhada com esforço mínimo por parte do script kiddie - ele tem um programa que ordena aos milhares de zumbis que façam tentativas de força bruta em algumas centenas de hosts de sites por vez e apenas compilem uma lista dos retornos bem-sucedidos.

Da mesma forma, às vezes você pode ver muitas permutas de "http://your.web.host/phpmyadmin/" em seus /var/log/apache2/access.logarquivos; essas são verificações automatizadas para as formas mais comuns de configurar o PHPMyAdmin e tentam várias explorações conhecidas se uma for encontrada (por isso, aliás, é por isso que comecei a pedir aos clientes que usassem o site da PMA que eu pessoalmente mantenha-se atualizado em vez de instalar sua própria versão e esqueça de mantê-la atualizada, mas agora estamos em uma tangente).

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

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

Shadur
fonte
4

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

O Fail2ban atualizará o iptables de acordo com suas ações. Adoro.

usuario
fonte
3

Você pode usar IPTABLES para interromper o tráfego sem executar um daemon como Fail2Ban ou 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
Xeoncross
fonte
2

Se você consegue, acho que a melhor maneira de lidar com coisas como essa é usar uma VPN. Dessa forma, a única coisa que eles podem atingir é 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 servidor da web. Tudo 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 nesse endereço IP específico. Esta é realmente a única maneira de impedir que as pessoas tentem forçar brutalmente as senhas.

Kibbee
fonte
0

Sshguard funciona muito bem. Estou usando junto com o iptables.

Alexander
fonte