Registrazione dei tentativi di accesso a SSH


60

Ho configurato un server Ubuntu con openssh per connettermi ad esso ed eseguire comandi da un sistema remoto come un telefono o un laptop. Il problema è ... probabilmente non sono l'unico.

C'è un modo per conoscere tutti i tentativi di accesso che sono stati fatti al server?


Dovresti anche considerare di eseguire sshd su una porta non standard. Inoltre, è possibile configurare iptables per negare i nuovi tentativi di connessione se un singolo IP tenta una nuova connessione ssh X volte in un minuto.
Ivanivan,

Per me il problema non era fail2ban ma sshguard, qualcosa di cui non avevo mai sentito parlare
Ray Foss

Risposte:


55

Sui server Ubuntu, puoi trovare chi ha effettuato l'accesso quando (e da dove) nel file /var/log/auth.log. Lì trovi voci come:

May  1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)

2
Per curiosità, Ubuntu ha il lastbcomando ?
Bratchley,

1
@JoelDavis Il mio Ubuntu 12.04 lo fa, ma l'output è una singola riga che non assomiglia affatto al tuo output. Forse deve essere configurato.
Anthon,


Su Ubuntu Server 14.04 e versioni successive, dovrebbe essere visualizzato/var/log/auth.log
Serge Stroobandt,

29

Su distribuzioni basate su Red Hat come Fedora / CentOS / RHEL è possibile verificare la presenza di utenti che hanno effettuato l'accesso all'interno del file /var/log/secure.

Se desideri maggiori informazioni leggi le Domande e risposte di SuperUser intitolate: Come posso registrare i tentativi di accesso a SSH e tenere traccia di ciò che gli utenti SSH finiscono sul mio server? .


1
Non c'è /var/log/securenessuno dei miei sistemi Ubuntu.
Anthon,

@Anthon, sorprendentemente non ho /var/log/authnei miei sistemi. Ecco perché prima di pubblicare la risposta, ho verificato se avevo /var/log/securenel mio sistema, che è anche un server Ubuntu :)
Ramesh

Avevo controllato 14.04, 12.04 e la vecchia macchina sotto 8.04. Quale versione stai utilizzando? Hai fatto qualcosa di speciale per ottenere quel file?
Anthon,

@Anthon, risulta che il server in cui ho provato era RHEL. Tuttavia, la risposta nel link che avevo fornito era per Ubuntu che sembra strano, dal momento che hai controllato 3 varianti di Ubuntu e non c'è /var/log/secure.
Ramesh,

6
/var/log/secureè un ismo Fedora / CentOS / RHEL.
slm

8

Su Ubuntu è possibile accedere tramite SSH e utilizzare il comando tail di Linux per visualizzare l'ultimo numero x di righe del /var/log/auth.logfile. Dopo aver effettuato l'accesso tramite SSH, utilizzare il comando seguente per visualizzare le ultime 100 righe del registro SSH:

tail /var/log/auth.log -n 100

o anche più pulito

tail -100 /var/log/auth.log | grep 'sshd'

7

Si noti che la configurazione predefinita su Ubuntu NON è quella di registrare gli accessi ssh al /var/log/authfile. Questo è il INFOlivello di registrazione.

Se vuoi che includa i tentativi di accesso nel file di registro, dovrai modificare il /etc/ssh/sshd_configfile (come root o con sudo) e cambiare LogLevelda da INFOa VERBOSE.

Successivamente, riavvia il demone sshd con

sudo service rsyslog restart

Successivamente, i tentativi di accesso a ssh verranno registrati nel /var/log/auth.logfile.


4

La mia raccomandazione è di usare auditd . Questa è la registrazione usando il sottosistema di controllo del kernel Linux e secondo me il modo corretto di farlo se si è seri. E data la natura della domanda {relativa alla sicurezza} dovresti usare anche PAM . Al livello predefinito di avere solo auditd e PAM installati, dovresti ottenere automaticamente tutti i tentativi SSH riusciti e non riusciti registrati nel tuo file audit.log. Quindi non devi davvero configurare nulla, hai solo auditd e PAM installati. Conosco questa prima mano per SLES. E scommetterebbe che RHEL e qualsiasi altra versione aziendale di Linux funzionerebbe in modo simile.

http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html

all'interno del registro di controllo non elaborato generato da auditd è possibile utilizzare qualcosa come aureportfiltrarlo descritto nelle pagine man di auditd , scrivere il proprio parser di testo o semplicemente usare VI e cercare parole chiave.

ecco /var/log/audit/audit.logun'eccezione del mio file con me mentre mi faccio vedere nel mio server Linux.

node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
  • da quanto sopra, il mio nome del server è squalo .
  • molte righe come questa sono in audit.log, voglio questo basato su exe = "/ usr / sbin / sshd"
  • l'uid dell'account su cui viene eseguito il ssh è il valore di auid, che è 23456 per questo esempio
  • il nome dell'account utente associato a auid è specificato da acct = "ron"
  • la maggior parte delle volte il sistema di controllo registra il nome host DNS del sistema che tenta di connettersi, ma ha sempre l'indirizzo IP
  • la data della voce che è in tempo di epoca, quindi dovrai convertirla tramite qualcosa di simile a quello date --date @1480622612.317che risulta Thu Dec 1 15:03:32 EST 2016ed è quando ho inviato il mio server.

Quando res=failedè quando vuoi indagare su quegli indirizzi IP e nomi host per vedere quali sistemi stavano tentando di connettersi, sotto quale tentativo di nome utente. E ovviamente il successo di ssh cerca di capire cosa sta succedendo nel tuo sistema - ad esempio il tuo collega bob che si siede ogni giorno sulla stessa scrivania con hostname = computer bobs e indirizzo IP = 192.168.5.5; se vedete un tentativo ssh di successo alle 2 del mattino di ieri con il suo nome utente dall'indirizzo IP 10.10.5.6 per esempio, potrebbe essere nel vostro interesse parlare con Bob per indagare. Possibile tentativo di hacking da parte di qualcun altro? E poco dopo ci sono tentativi di root nel registro di controllo dall'account di Bob?

quando si vede ripetitivo res=failede auid=0e acct=rootallora che qualcuno cercando di ssh nella tua casella sul conto di root, ed è quando si modificano /etc/hosts.denycon quell'indirizzo IP per SSHD.


2

So che questo è vecchio ma ho scritto qualcosa per monitorare connessioni / tentativi ssh riusciti e falliti. Oltre agli IP vietati se stai usando sshguard. Il software è scritto in Python. Ti invierà un'email quando qualcuno si connette correttamente tramite ssh, quando qualcuno sbaglia la password ssh o quando qualcuno viene bandito a causa di molti tentativi falliti. Spero che questo possa aiutare qualcuno in futuro a cercare questo problema e a trovare il mio codice!

https://github.com/amboxer21/SSHMonitor

Per lo script Python, ho scritto uno script bash per monitorare il processo. Verifica se è in esecuzione ogni minuto tramite l'attività cron di root. Se non è in esecuzione, avvia un altro processo. Che è chiamato da una radice compito cron ogni minuto.


-2

La cosa migliore che abbia mai incontrato per la registrazione dei comandi SSH è il root, questo strumento consente all'amministratore di ottenere tutti i comandi da ogni sessione con un ampio livello di registrazione.

Ho scritto uno script per installare e configurare ROOTSH in Ubuntu e CentOS / RHEL

scarica da github ecco il link

https://gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh

chmod +x setup_rootssh.sh ; sudo ./setup_rootssh.sh

Penso che questo sia un brutto modo per promuovere il tuo profilo github ... Fondamentalmente stai chiedendo di scaricare uno script dal web ed eseguirlo usando root. Downvoted
UserK

Non sto promuovendo il mio profilo github, ho solo cercato di semplificare le cose come fanno le persone sopra se mi voti in basso per la promozione del profilo in giù, vota anche su di loro. inoltre nella guida alle regole dello scambio di stack nulla è scritto in modo tale che non possiamo condividere file di codice da repository personali.
Mansur Ali,

Per favore, perdona il mio cattivo senso dell'umorismo. Prima di tutto grazie per la risposta Mansur. Il downvote deriva dal fatto che stai chiedendo di eseguire un gruppo di comandi sconosciuti come utente root. L'ultima volta che l'ho fatto c'è stato un 'rm -R slash' all'interno.
UtenteK

1
Va bene, tra l'altro stack-exchange non mi permetterà di codici così lunghi che è il motivo per cui ho inserito quello script nella mia risposta. Linux è molto semplice.
Mansur Ali,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.