it-swarm-pt.tech

Prevenir ataques de força bruta contra ssh?

Qual ferramenta ou técnica você usa para evitar ataques de força bruta contra sua porta ssh. Percebi nos meus logs de segurança, que tenho milhões de tentativas de efetuar login como vários usuários através do ssh.

Está em uma caixa do FreeBSD, mas imagino que seja aplicável em qualquer lugar.

49
grieve

Aqui está um bom post sobre esse assunto de Rainer Wichmann.

Explica prós e contras desses métodos para fazer isso:

  • Senhas fortes
  • Autenticação RSA
  • Usando 'iptables' para bloquear o ataque
  • Usando o log sshd para bloquear ataques
  • Usando tcp_wrappers para bloquear ataques
  • Porto batendo
25
paulgreg

Eu uso fail2ban que bloqueará um IP após várias tentativas com falha por um período de tempo configurável.

Combine isso com o teste de força da senha (usando john (John, o Estripador)) para garantir que ataques de força bruta não sejam bem-sucedidos.

39
Brent

Uma coisa pequena que você pode fazer é usar algo como DenyHosts:

http://denyhosts.sourceforge.net/

Ele usa o hosts.allow/hosts.deny interno para bloquear os agressores do SSH.

24
hernan43
  • Altere a porta usada (como Trent mencionado)
  • Requer chaves de criptografia em vez de senhas. http://novosial.org/openssh/publickey-auth/
  • Lista negra ips do atacante
  • Lista de permissões usuários conhecidos para evitar listas negras acidentais. (como Samiuela mencionou)
16
Chris Ballance

Uma das maneiras mais fáceis de evitar esses ataques é alterar a porta na qual o sshd escuta

15
trent

Como Chris aponta, use chaves de criptografia em vez de senhas.

Adicione a isso:

  • use uma lista de permissões sempre que possível.

Quantas pessoas ou locais (com IPs públicos flutuantes) você realmente precisa acessar suas conexões ssh públicas?

Dependendo do número de hosts públicos ssh que você está mantendo e se você pode restringir seus critérios gerais de conexão, pode ser uma configuração mais simples e sustentável para limitar o acesso a alguns hosts externos.

Se isso funcionar para você, pode realmente simplificar sua sobrecarga de administração.

12
samt

Além das outras boas sugestões, uma coisa realmente fácil de fazer é limitar as conexões de entrada de taxa. Limite de 3 conexões por minuto por IP:

iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
11
sherbang

Use a opção "AllowUsers" no sshd_config para garantir que apenas um pequeno conjunto de usuários possa efetuar login. Todos os outros serão rejeitados, mesmo que seu nome de usuário e senha estejam corretos.

Você pode até restringir os usuários a logins de um host específico.

por exemplo.,

AllowUsers user1 [email protected]

Isso reduzirá o espaço de pesquisa e evitará os usuários antigos que foram deixados acidentalmente ou ativados (embora, é claro, eles devam ser desativados de qualquer maneira, essa é uma maneira fácil de impedir que eles sejam usados ​​para uma entrada baseada em SSH).

Isso não impede totalmente os ataques de força bruta, mas ajuda a reduzir o risco.

6
David Gardner

Use algo parecido com o PF:

tabela <ssh-brute> persistir
bloquear rapidamente o log do rótulo ssh_brute
repassa $ ext_if proto tcp para ($ ext_if) estado da porta ssh modulate \
(max-src-conn-rate 3/10, descarga global de sobrecarga)

3
CycyX

Port-knocking é uma maneira bastante sólida de manter esse tipo de coisa de fora. Um pouco complicado, às vezes irritante, mas definitivamente faz o problema desaparecer.

2
Luke

Além de sugestão de limitação de taxa de Sherbang , a duração do atraso é importante. Ao aumentar o atraso entre os grupos de três tentativas de login de 2 minutos para 20 minutos, o número de endereços IP diferentes que fizeram mais de três tentativas de login diminuiu, comparando períodos de duas semanas em uma máquina minha, de 44 tentativas para 3 Nenhum desses três endereços continuou tentando por mais de 11 horas.

Muito anedótico, mas o auth.log se tornou muito mais legível para mim ...

2
Charles Stewart

O contexto é importante, mas eu recomendaria algo assim:

  • Como você está usando o FreeBSD, considere executar o firewall PF e usar seus sólidos recursos de limitação de taxa de conexão. Isso permitirá que você envie os forçadores brutos para uma lista negra se eles se conectarem com frequência
  • Se essa caixa precisar ser acessada do mundo exterior, considere o uso de uma regra PF rdr para não permitir o tráfego para a porta 22, mas para redirecionar alguma porta obscura para ela. Ou seja, você deve conectar-se à porta 9122 em vez de 22. É obscuro, mas mantém os aldravas afastados
  • considere mudar apenas para autenticação baseada em chave, tornando inúteis os ataques de dicionário
2
Michael Gorsuch

Eu simplesmente não me importo com isso. Deixe que eles se afastem no porto, eles não vão usar uma força bruta.

1
womble

instale o OSSEC. não apenas monitora logins repetidos, como também insere um bloco temporário com iptables para o ip ofensivo. E no final, ele enviará um relatório informando os detalhes. ele registra tudo, o que é legal. Alguém já tentou mais de 8000 nomes de login para fazer login. Analisei os logs e obtive uma lista de usuários agradável;)

1
Marcin