Come determinare l'indirizzo IP di chi ha effettuato l'accesso a Root?


15

Ci sono diverse persone con accesso root a una particolare VM di cui sono responsabile. Vorrei scoprire quale indirizzo IP è stato utilizzato per accedere al root.


1
Puoi accedere ai log per vedere quali comandi sono stati eseguiti in precedenza sudo less /root/.bash_history
:,


6
Se qualcuno accede come root, può fare praticamente tutto ciò che vuole rimuovere anche i log di cui ha bisogno ...
Comintern

4
Come nota a margine, dovresti impedire l'accesso diretto alla radice. È un grosso problema di sicurezza.
fedorqui,

Risposte:


15

È possibile utilizzare il lastcomando per ottenere queste informazioni

# last|head
phemmer  ssh          192.168.0.24     Wed Aug 20 21:08 - 21:08  (00:00)
phemmer  pts/13       192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:07 - 23:07  (00:00)
phemmer  pts/15       192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  ssh          192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  :0                            Wed Jul 30 20:06   still logged in
reboot   system boot  3.13.2-gentoo    Wed Jul 30 20:05   still running

Come puoi sicuramente vedere, la terza colonna mostrerà l'indirizzo IP remoto in caso di accesso SSH.

lastusa il /var/log/wtmpfile, quindi questo metodo è simile alla risposta di G-Man (solo un po 'più semplice poiché non è necessario specificare il percorso del file).


14

Questo dipende dalla tua distribuzione o sistema operativo. sshdregistrerà ogni accesso da qualche parte e includerà nel relativo indirizzo IP un formato come questo:

Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297

Quella parte è coerente, ma il modo in cui ci si arriva può variare. Su sistemi basati su systemd, utilizzare journalctl:

journalctl /usr/bin/sshd

per elencare tutti i messaggi di registro dall'eseguibile sshd. Puoi estrarlo per gli accessi root o altri criteri e limitarlo per data con --sincee --until(vedi man journalctl).

In alternativa e storicamente, i messaggi verranno registrati (di solito) da qualche parte in /var/log . Comunemente i sshdmessaggi vanno in /var/log/auth.log, ma il file esatto può variare sostanzialmente. Qualunque sia, è:

grep sshd /var/log/auth.log

ti darà un output sostanzialmente equivalente a journalctl versione.



7

Non si dovrebbe consentire alle persone di utilizzare sshaccedendo direttamente come root (usando la password di root o un certificato /root/.ssh/authorized_keys) se si desidera controllare chi ha effettuato il login come root. Invece, usa un account per ogni persona e falli usare sudoper ottenere i permessi di root. In questo modo troverai nel log appropriato (la posizione del file di log dipende dalla distribuzione che hai, puoi persino configurare il demone log per inviare i messaggi a un'altra macchina) il messaggio user john ran the command 'sudo rm -rf /'. Bene, forse non troverai facilmente quel comando nei log però.


2
Innanzitutto, questo non risponde alla domanda. In secondo luogo, dovresti sempre avere un modo per salvare il sistema. Cosa succede quando si utilizza l'autenticazione LDAP e il server LDAP muore? Come hai intenzione di accedere alla casella?
Patrick,

4
@Patrick Innanzitutto, la domanda inizia con "ci sono diverse persone con accesso root a una particolare VM", quindi ha senso suggerire che l'approccio giusto non è il controllo dell'IP ma piuttosto il controllo degli utenti. In secondo luogo, il problema che poni non è correlato: se si suppone che una persona acceda a una macchina in caso di emergenza di LDAP non funzionante, dovrebbe avere il proprio account locale e se si suppone che debba fare un lavoro amministrativo in tale emergenza, l'account locale deve avere sudoenergia. Non c'è mai un vero motivo per condividere un account tra due persone, ma una persona potrebbe avere due account se necessario.
pqnet,

La domanda non è chiedere come modificarne il design, ma come ottenere un indirizzo IP. Per quanto riguarda l'altra tua soluzione, ora hai un account locale (possibilmente diversi), con una password che non scade mai. Non lo considero un miglioramento.
Patrick,

@Patrick qualunque. Gestisci il tuo server, io gestisco il mio. Hai fatto il tuo punto, la gente leggerà il tuo commento e deciderà.
pqnet,

1
Miglioramento @Patrick rispetto a cosa? Avere account utente separati per persone separate è quasi sicuramente un miglioramento rispetto al fatto che più persone condividono un singolo rootaccount.
jw013,

0

Dalla breve descrizione che hai fornito sembra che sarebbe meglio se si imposta un sistema di monitoraggio dei registri. Ti aiuterebbe a monitorare gli accessi, creare avvisi, confrontare i dati di diversi giorni e sì, ovviamente, i grafici per tutto ciò.

Ma se è necessario monitorarlo temporaneamente , è possibile utilizzare il lastcomando.

last | grep root | grep -v tty | awk '{print $3}'

Questo ti fornirà l'elenco di IPso Hostnamesda dove l'utente root ha effettuato l'accesso.

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.