Logins com falha de bloqueio automático do Cygwin SSHd


20

Estou executando o Cygwin com um deamon SSH em uma máquina Windows Server 2008. Eu estava olhando para o Visualizador de Eventos e notei de 5 a 6 tentativas de login com falha por segundo (força bruta) durante a última semana, aproximadamente, de IPs diferentes.

Como posso bloquear automaticamente esses IPs em vez de bloqueá-los um por um manualmente?

Obrigado, Ahmad

Respostas:


34

Eu escrevi um programa para bloquear endereços IP, como você solicita há alguns anos, mas fiz isso para um Cliente como trabalho contratado. Como terminei com algum tempo "livre" esta noite, optei por reimplementar tudo desde o início, escrever alguma documentação útil e geralmente torná-lo um programa apresentável. Desde que ouvi de várias pessoas que isso seria útil, parece que provavelmente vale a pena. Espero que você e outros membros da comunidade possam tirar proveito disso.


Windows sshd_block

sshd_block é um programa VBScript que atua como um coletor de eventos WMI para receber entradas do Log de Eventos do Windows registradas pelo sshd. Ele analisa essas entradas de log e age sobre elas da seguinte maneira:

  • Se o endereço IP tentar fazer logon com um nome de usuário sinalizado como "banir imediatamente", o endereço IP será banido imediatamente.

  • Se o endereço IP tentar fazer logon com mais frequência do que o permitido em um determinado período, o endereço IP será banido.

Os nomes de usuário e limites "banir imediatamente" associados a tentativas repetidas de logon são configuráveis ​​na seção "Configuração" do script. As configurações padrão são as seguintes:

  • Proibir nomes de usuário imediatamente - administrador, root, convidado
  • Tentativas de logon permitidas - 5 em 120 segundos (2 minutos)
  • Duração da proibição - 300 segundos (5 minutos)

Uma vez por segundo, todos os endereços IP que foram banidos pela duração do banimento são banidos (removendo a rota do buraco negro da tabela de roteamento).


Você pode baixar o software aqui e navegar pelo arquivo aqui .

Editar:

A partir de 20/01/2010, atualizei o código para oferecer suporte ao uso do "Advanced Firewall" no Windows Vista / 2008/7/2008 R2 para realizar uma retenção negra de tráfego por meio da criação de regras de firewall (o que está muito mais alinhado com o comportamento de "fail2ban"). Também adicionei algumas strings correspondentes adicionais para capturar as versões do OpenSSH que "usuário inválido" em oposição a "usuário ilegal".


2
Agradeço o trabalho que você fez e acho que é uma ideia maravilhosa. No entanto, há uma chance de que ele possa ser modificado para funcionar com tentativas de RDP? Meus servidores Windows estão sendo constantemente atacados on-line e o bloqueio de conta, embora o semi-afetivo precise ser desbloqueado para que o usuário trabalhe novamente, abrindo novamente a conta do usuário para outro bloqueio.

@Henry: Dê uma olhada em serverfault.com/a/335976/7200 #
Evan Anderson

Este script suga mais de 10 por cento da minha CPU, mesmo se nenhum ataques de força bruta estão em andamento ...
jjxtra

@ PsychoDad: Se você estiver interessado, entre em contato diretamente e resolveremos o problema. Eu não vi o comportamento que você está vendo.
Evan Anderson

11
Eu também gostaria de ver isso nas conexões RDP. Obrigado
boomhauer

3

No Linux, denyhosts faz o truque, não posso dizer se ele funcionará no Windows / Cygwin ou não. De uma chance.


2

Este é muito interessante, atualmente estamos avaliando esta solução:

O Syspeace trabalha em estreita colaboração com o Windows para detectar possíveis ameaças com um desempenho ideal. Os eventos no log de eventos são monitorados continuamente quanto a qualquer comportamento suspeito. Se um evento é considerado uma ameaça ao sistema, o Syspeace prossegue para o próximo nível, verificando uma base de regras interna que simplesmente bloqueia o endereço IP e adiciona a regra ao firewall do Windows.

Lista de permissões locais

Um usuário sempre pode adicionar endereços IP à Lista de permissões locais para, por exemplo, impedir o bloqueio de qualquer rede interna ou adicionar temporariamente computadores individuais. Isso deve ser usado com cautela, pois quaisquer IPs nesta lista são considerados confiáveis ​​pelo Syspeace e sempre serão ignorados.

Lista negra local

Quaisquer ameaças serão adicionadas à lista negra local automaticamente pelo Syspeace. Você sempre pode revisar a lista negra e adicioná-la ou removê-la como achar melhor. No entanto, recomendamos que você não faça alterações nesta lista, pois poderá abrir caminho acidentalmente para um hacker desconhecido.

Lista negra global

Uma característica importante do Syspeace é a capacidade de bloquear endereços IP conhecidos globalmente na lista negra, de preferência. Ao escolher esta opção, o Syspeace importará a Lista Negra Global para o seu cliente e agirá de acordo, adicionando todos os endereços IP da lista negra globalmente ao conjunto de regras do firewall pressionando um botão.

Mensagens

Sempre que um evento importante ocorre, o serviço é iniciado ou interrompido, as regras são colocadas ou removidas do firewall ou o status da comunicação para a licença central e o servidor da lista negra global é alterado, o Syspeace tem a capacidade de enviar mensagens para as pessoas apropriadas. sua organização.

Relatórios

Receber e-mails quando um evento importante acontece pode ser bom, mas às vezes você também deseja obter um resumo. O Syspeace compila um relatório diário com todas as tentativas de ataque no seu sistema e envia uma mensagem com as informações. O Syspeace também compila um relatório semanal da mesma maneira.

www.syspeace.com


2

Literalmente, todas as tentativas de login da China / EUA / Índia no meu servidor tentam o login do Administrador, que eu desabilitei.

Não seria mais fácil desativar o login do administrador e, em seguida, escrever um script que bloqueie todos os endereços IP que tentam fazer login usando "Administrador" como o nome de usuário?


1

Você pode precisar mexer no firewall do Windows; Cygwin não teria esse tipo de funcionalidade.


1

Você pode considerar usar o SSHBlock - um script Perl para controlar tentativas de força bruta.

O SSHBlock é um daemon para monitorar um log do syslog quanto a tentativas de invasão usando SSH e para bloquear automaticamente hosts inválidos adicionando linhas ao /etc/hosts.allow (TCP Wrappers). Vários limites são predefinidos, para poder bloquear aqueles que tentam várias tentativas dentro de um período maior ou menor. Use -h para ver as opções da linha de comandos.

Eu nunca o usei no Cygwin ainda.
No entanto, aqui está um link para outro artigo que descreve o sshblock de outras maneiras:
Defesa contra ataques ssh de força bruta

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.