Abbiamo un paio di server gestiti da un grande gruppo di amministratori. Di solito si collegano come utenti del servizio (per esempio hudson
) e quindi passare a root
fare qualche piccola correzione Ciò significa che spesso non è possibile mappare una modifica apportata a una persona.
Qualcuno ha uno script per Unix / Linux che può dirmi quale utente ha effettuato il login come root? Gli accessi possono provenire da tutti i computer sulla LAN locale. Accesso remoto dall'esterno della LAN come root non è possibile; gli amministratori devono prima accedere con un utente LAN e possono quindi promuoversi da soli (tutti usano SSH).
Quello che vorrei è uno script che segua gli accessi remoti (nella LAN locale) e stampi il nome utente per un certo tempo. Si può presumere che lo script possa accedere tramite ssh a qualsiasi computer sulla LAN locale come root senza richiedere una password.
Background: ho uno script che salva le copie di backup di tutti i file modificati da root. Il problema è scoprire chi ha davvero apportato il cambiamento.
La sicurezza non è un problema; questo non è quello di trovare hacker che potrebbero aver pulito wtmp
, è per scoprire chi ha fatto un errore a dare un feedback.
[MODIFICARE] Alcuni suggerimenti: il comando last
aiuta:
> last -t 20101029174200 root
root pts/26 :0.0 Wed Oct 20 15:36 - 15:03 (23:27)
wtmp begins Fri Oct 1 16:34:36 2010
Così root
è stato registrato via pts/26
. Chi altro si è seduto su quel pseudo TTY?
> last -t 20101029174200 pts/26
adigulla pts/26 :0 Mon Oct 25 09:45 still logged in
adigulla pts/26 :0 Fri Oct 22 14:00 - 17:29 (03:29)
adigulla pts/26 :0 Thu Oct 21 15:04 - 16:05 (01:01)
root pts/26 :0.0 Wed Oct 20 15:36 - 15:03 (23:27)
adigulla pts/26 :0.0 Fri Oct 15 15:57 - 15:57 (00:00)
wtmp begins Fri Oct 1 16:34:36 2010
Hmm ... devo essere io. Quindi posso seguire le modifiche dell'utente sul computer locale. Se accedo a una macchina remota:
$ last -1 hudson
hudson pts/0 192.168.0.51 Fri Oct 29 17:52 still logged in
Quindi ottengo il PTY e l'indirizzo IP dal quale provengo. Come posso effettuare la connessione dall'output di last
per hudson
per l'utente su 192.168.0.51
?
[EDIT2] Si prega di notare che di solito cambiamo utente con ssh
no sudo
o su
. Ciò consente il single sign on ed evita di dover comunicare ad admin qualsiasi password. Se vogliamo concedere / revocare l'accesso a qualcosa, semplicemente aggiungiamo / rimuoviamo la chiave pubblica dall'account del servizio. So anche che ssh registra su syslog ma i messaggi non mi dicono quale utente è passato a root:
sshd[7460]: Accepted publickey for root from ::1 port 36689 ssh2
sudo
(o un elevatore di privilegi simile) per consentire gli accessi di root.