Para o SSH em particular, você provavelmente precisará garantir que o registro em log esteja ativado em /etc/ssh/sshd_config .
Caso contrário, é uma pergunta vaga que depende de como você deseja ser alertado e os detalhes do seu sistema e sua configuração, até mesmo como eles se conectam. Você pode simplesmente seguir um arquivo de log: tail -f /var/log/messages é comum ou journalctl -f em alguns sistemas Linux. Um segmento de soluções para alertas de e-mail está no ServerFault.
Na maioria dos sistemas GNU / Linux modernos, você deve obter um resumo de cada tentativa malsucedida com SSH ou TTY na última hora:
journalctl --since="$(date -d -1hours +\%F\ \%H):00:00" --until="$(date +\%F\ \%H):00:00" | grep -iE "Failed (pass|log)"
Na verdade, isso abrange a última hora até a hora atual. Você poderia criar um processo para recuperar a cada hora e enviá-lo por e-mail para você.
As entradas seriam semelhantes:
Mar 21 06:16:23 yourhostname sshd[29477]: Failed password for root from 103.41.125.20 port 35243 ssh2
Mar 21 06:16:33 yourhostname login[317]: FAILED LOGIN 1 FROM tty4 FOR bolwerk, Authentication failure
Mar 21 06:22:29 yourhostname sshd[29695]: Failed password for invalid user poo from ::1 port 60139 ssh2
Aqui está um script que você pode colocar no crontab para coletar isso:
#!/bin/sh
# gather journal information in time frame
export CRUFT=$(journalctl --since="$(date -d -1hours +\%F\ \%H):00:00" --until="$(date +\%F\ \%H):00:00" | grep -iE "Failed (pass|log)")
#email settings
export EMAILFROM="From: Security Alert <[email protected]>"
export EMAILSUBJECT="Subject: Failed login Summaries from $(date -d -1hours +\%H):00 to $(date +\%H):00"
export EMAILALERTTO="[email protected]"
if [ "x$CRUFT" != "x" ]; then
echo -e "$EMAILFROM\n$EMAILSUBJECT\n\nFailed logins:\n$CRUFT" | ssmtp "$EMAILALERTTO"
fi
Você assume que deseja enviar as tentativas fracassadas da última hora a cada hora. Também assume que você tenha journalctl, provavelmente requer uma área de usuário GNU (a maioria dos distrobs tem isso).
Para que funcione, você precisará configurar o SSMTP corretamente. Aqui é um link que fala sobre fazer isso com o gmail. Leia sobre segurança também no SSMTP; configurando errado exponha sua senha, se você tiver um sistema compartilhado. Você pode querer incluir esta linha na configuração ssmtp.conf :
FromLineOverride=yes
Ele fará um resumo dos eventos de login com falha durante a última hora e os enviará por e-mail para você. Em uma rede pública com a porta padrão, as pessoas / bots estão constantemente tentando usar caixas inseguras de força bruta. Não é uma grande ameaça se você definir suas senhas corretamente, etc.
Se eu puder fazer uma sugestão geral, os logins bem-sucedidos poderão ser mais interessantes. Em uma rede pública com a porta padrão, as pessoas / bots estão constantemente tentando usar caixas inseguras de força bruta. Não é uma grande ameaça se você definir suas senhas corretamente, etc ... Mas colocar um script de alerta de algum tipo em / etc / profile para detectar qualquer login bem-sucedido provavelmente seria uma tarefa fácil.
Notas: Aqui está a documentação do CentOS em journalctl; deve ser semelhante em muitos outros sistemas operacionais GNU / Linux. Outros exemplos de subtração de comando de data, dependendo de como você deseja sincronizar os relatórios.