Pergunta
Qual é a melhor maneira de configurar o registro de tentativas de SSH com autenticação de chave pública SSH e nftables? Além disso, qual é a melhor maneira de testar isso?
Eu gostaria de fazer isso sem instalar um pacote que 'apenas cuide disso' porque este é um exercício de aprendizado para mim.
Descrição
Eu configurei um novo sistema bastante vazio para testar e aprender conceitos de rede. O sistema está executando Arch Linux. O nftables está instalado e funcionando e consigo fazer login neste sistema com autenticação de chave pública SSH. O sistema de teste também está usando sshd.socket, pelo que vale a pena.
No entanto, notei que uma das regras do nftable não parece estar sendo desconectada conforme esperado:
log prefix "REJECTED" reject with icmpx type port-unreachable
Esta regra está na parte inferior da cadeia de entrada em meu nftables.conf, então todo o tráfego de entrada rejeitado deve atingir esta (eu acho).
Talvez eu esteja testando isso de forma errada, mas quando executo journalctl -k | grep "REJECTED"
não vejo nenhuma entrada depois de tentar fazer login em uma máquina diferente. No entanto, vejo uma entrada quando uma máquina diferente com a chave correta tenta fazer login mais de duas vezes em um minuto.
Além disso, observarei que posso ver logins SSH bem-sucedidos com esta regra nftable (colocada acima da regra de rejeição acima):
tcp dport ssh limit rate 2/minute log prefix "SSH connection" accept
A execução journalctl -k | grep "SSH"
mostra essas conexões conforme o esperado.
Responder1
Você não pode determinar (nem registrar) na camada de rede em qual login da conexão TCP falhou nem com qual método. O daemon SSH determina quando um login falha e o registra, após o que permite uma nova tentativa ou fecha a conexão (geralmente após uma certa quantidade de tentativas malsucedidas).
As tentativas de login malsucedidas são armazenadas no login de autenticação /var/log/auth.log
. Lá você pode encontrar entradas de log para logins com falha e bem-sucedidos.
Na camada de rede você pode registrar novas conexões no daemon SSH. O exemplo a seguir vem diretamente do nftablesdocumentação wiki:
tcp dport 22 ct state new log prefix \"New SSH connection: \" accept