La registrazione del terminale può sembrare un'invasione della privacy, ma ci sono molte ragioni per cui potresti voler sapere quali comandi stanno eseguendo i tuoi utenti. Che sia per motivi di conformità o semplicemente per una buona amministrazione del sistema, a volte vuoi solo sapere cosa stanno facendo i tuoi utenti. Se stai gestendo una flotta di sistemi Linux e hai bisogno di sapere cosa stanno facendo le persone a cui hai affidato una shell, potresti prendere in considerazione tlog
. tlog
è un logger di I/O terminale incluso con RHEL e molte altre distribuzioni. Registra più delle semplici sequenze di tasti; registra anche l'output ricevuto. Può essere usato per riprodurre letteralmente una sessione.
In questo articolo, ti guiderò attraverso un tlog
di base configurazione e dimostrare parte della potenza che esercita. Linux è abbastanza bravo a registrare le azioni. Può, ad esempio, registrare i comandi eseguiti tramite sudo
. Il sicuro log può dirti chi ha effettuato l'accesso o non è riuscito ad accedere, ma nulla di default registra centralmente ogni azione preso da un utente non privilegiato. Sì, la maggior parte delle shell conserva una cronologia, ma gli utenti possono modificarla o addirittura eliminarla se sanno cosa stanno facendo. Il tlog
l'utilità di per sé non è infallibile, ma un ulteriore livello di registrazione non può far male. Tuttavia, ha i suoi limiti e preoccupazioni, che la documentazione collegata di Red Hat sotto delinea. Inoltre, tlog
accede a JSON in modo che possa essere analizzato o addirittura riprodotto in un secondo momento.
Il mio obiettivo è mostrarti la potenza di tlog
insieme a Cockpit. Cockpit, se non sei a conoscenza, è un'interfaccia di amministrazione web inclusa in RHEL. L'uso di Cockpit è facoltativo e se desideri utilizzare tlog
senza di esso, va bene. Salta semplicemente i passaggi delle istruzioni che includono la configurazione del Cockpit.
[ Potrebbe interessarti anche: Configurare logrotate in Linux ]
Imposta registro
Per questo how-to, sto usando un sistema RHEL 8.3 minimo appena installato. La documentazione ufficiale di Red Hat Enterprise Linux 8 sulla registrazione del terminale è disponibile qui. Per iniziare, tutto ciò che serve è un sistema RHEL 8 con un abbonamento. Questo processo dovrebbe essere quasi identico anche su CentOS 8. Installa tlog
e Cockpit e quindi abilitare la registrazione della sessione in sssd (il demone dei servizi di sicurezza del sistema). Puoi usare tlog
in alcuni altri modi, ma questo approccio ti consente di gestire tlog
tramite sssd, invece che per utente.
Innanzitutto, installa i pacchetti richiesti:
[root@gangrif-tlogtest ~]# yum install -y tlog cockpit cockpit-session-recording
Una volta completata l'installazione, abilita e avvia Cockpit:
[root@gangrif-tlogtest ~]# systemctl enable cockpit.socket --now
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.
Puoi testare Cockpit puntando il tuo browser web su https://your-server's-IP
. Se ciò non funziona, potrebbe essere necessario abilitare Cockpit nel firewall basato su host o rete. Nel mio caso, non era necessario.
Quindi, aggiungi tlog
alla configurazione sssd. Il demone sssd consente molte personalizzazioni al tuo stack di autenticazione, incluse cose come le directory utente remote. In questo caso, lo stai usando per tlog
locale integrazione. Ci sono alcuni modi per configurarlo. Aggiungo tlog
registrazione della sessione a un gruppo specifico chiamato utenti sospetti , quindi qualsiasi utente aggiunto a quel gruppo viene registrato. Puoi registrare singoli utenti o tutti gli utenti, se lo desideri. Aggiungi la seguente configurazione a /etc/sssd/conf.d/sssd-session-recording.conf
. Assicurati che questo file sia di proprietà di root:root e gli utenti/altri non possono leggere o scrivere il file. Sssd è esigente su questo per una buona ragione.
[root@gangrif-tlogtest ~]# cat /etc/sssd/conf.d/sssd-session-recording.conf
[session_recording]
scope = some
groups = suspicious-users
Se non usi o non puoi usare sssd, c'è un'opzione che configura manualmente tlog
per gli utenti. L'opzione è delineata nella documentazione precedentemente menzionata.
Dopo aver posizionato quel file, riavvia sssd. Ora prova la configurazione.
Registra sessioni utente
Quella gangrif utente, sembra sospettoso. Mettilo tra gli utenti sospetti gruppo che tlog
è configurato per la registrazione.
[root@gangrif-tlogtest tlog]# groupmems -g suspicious-users -a gangrif
[root@gangrif-tlogtest ~]# id gangrif
uid=1000(gangrif) gid=1000(gangrif) groups=1000(gangrif),10(wheel),1001(suspicious-users)
Quando accedi come gangrif , viene visualizzato un simpatico banner di avviso che indica che sei osservato. Questo banner può essere modificato o rimosso utilizzando l'avviso direttiva in /etc/tlog/tlog-rec-session.conf
. Potrebbe essere necessario dire agli utenti che vengono monitorati. Per me, tlog
è più potente se non stai notificando a un potenziale aggressore che sono monitorati. Dire loro quello che hai in atto gli fa solo sapere cosa provare a disabilitare.
[nlager@batou-lan ~]$ ssh [email protected]
[email protected]'s password:
Web console: https://gangrif-tlogtest.tamlab.rdu2.redhat.com:9090/ or https://10.8.109.214:9090/
Last login: Tue Dec 22 15:29:44 2020 from 10.10.116.62
ATTENTION! Your session is being recorded!
[gangrif@gangrif-tlogtest ~]$
Visualizza la sessione in Cockpit
Per impostazione predefinita, tlog
log nel diario di sistema. Il modo più semplice per recuperare i dati registrati è utilizzare il registrazione della sessione di Cockpit pannello. In realtà è piuttosto liscio e ben messo insieme. Puoi ripetere una sessione e vedere quali comandi sono stati immessi, inclusi errori di battitura, comandi digitati ma non riusciti o comandi chiusi utilizzando Ctrl+C . Se premi vista registro pulsante, questo visualizzatore ti mostrerà anche i registri di sistema relativi che sono stati aggiornati durante la sessione. È davvero un ottimo strumento.
Passa dal diario di sistema alla registrazione dei file
Se non stai usando Cockpit, la visualizzazione dei log diventa un po' più complicata, poiché i dati che stai cercando sono nel diario di sistema. In questo caso, ho trovato più semplice cambiare semplicemente tlog
oltre alla registrazione su un file. Potresti anche accedere a syslog, che avrebbe un effetto simile e forse sarebbe più facile da mantenere. Per semplicità, scriverò direttamente su un file. Ti avverto che lo spostamento di tlog
si disconnette dal diario di sistema e in un file interrompe l'integrazione di Cockpit.
Innanzitutto, crea un luogo in cui archiviare i file e assicurati che sia scrivibile dal tlog utente. Ho aggiunto una directory in /var/log
chiamato tlog
e imposta la proprietà su tlog:tlog .
Successivamente, in /etc/tlog/tlog-rec-session.conf
, di' a tlog
dove archiviare i suoi log. Troverai stanze nel file per diverse configurazioni. Uno è denominato Parametri del writer di file . Questo parametro consente di definire il percorso per il file di output. La configurazione per il mio percorso era simile a questa:
// File writer parameters
"file": {
// The "file" writer log file path.
"path" : "/var/log/tlog/tlog.log"
},
Ora di' a tlog
per utilizzare il writer di file invece dell'impostazione predefinita, che è il journal. Nella parte inferiore del file di configurazione, troverai una riga appena prima della chiusura } che contiene un //"scrittore":"rivista" collocamento. Modifica l'impostazione in file così:
// The type of "log writer" to use for logging. The writer needs
// to be configured using its dedicated parameters.
"writer" : "file"
}
Al successivo accesso dell'utente di destinazione, il file /var/log/tlog/tlog.log
dovrebbe essere creato e le sessioni registrate lì. Ti consigliamo di impostare la rotazione del registro su questo e, se hai un logger esterno, dovresti inviare questo file lì. Questi dati sono utili solo se sono disponibili quando ne hai bisogno. Se un utente malintenzionato lo trova e lo elimina, non ti servirà a nulla.
Visualizza la sessione con tlog-play
Una volta che hai questi log in un file, puoi dargli un'occhiata. Potresti usare journalctl
, ma poiché i log sono in formato JSON, non sono facili da leggere per gli esseri umani. Ad esempio, il mio rm -rf
l'esempio di comando dall'alto assomiglia a questo:
{"ver":"2.2","host":"gangrif-tlogtest.tamlab.rdu2.redhat.com","rec":"2a5a7ca40dd6424e91f587c0e012e623-3cf2-1f1e2d","user":"gangrif","term":"xterm-256color","session":31,"id":1,"pos":0,"timing":"=185x50+31>61+136>1+105>1+135>1+193>1+218>1+202>4+161>4+111>1+167>1+181>1+93>1+196>1+1412>2+2>166+1897>1+251>1+208>1+159>1+73>1+110>1+90>1+73>1+119>1+285>1+504>1+143>1+136>1+961>1+175>1+144>1+865>4","in_txt":"","in_bin":[],"out_txt":"\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ rm rf\b\u001b[K\b\u001b[K-rf /\r\nrm: it is dangerous to operate recursively on '/'\r\nrm: use --no-preserve-root to override this failsafe\r\n\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ mwahahaha!!!! \b\u001b[K","out_bin":[]}
Le informazioni non sono facili da leggere, ma fortunatamente c'è uno strumento che lo rende semplice. Puoi usare tlog-play
con le sessioni registrate nel diario e consente di specificare l'ID di registrazione per l'output di quella specifica registrazione. Quando si analizza un file, invece, l'ID di registrazione non funziona. Tutte le registrazioni finiscono nello stesso file e non puoi semplicemente riprodurle tutte perché gli ID di sessione non sono gli stessi. Devi dividerli. Puoi identificare l'ID della sessione che desideri guardare, quindi grep
quell'ID di sessione in un nuovo file prima di tlog-play
ne sarà felice. Forse syslog può essere configurato per dividere automaticamente questi file mentre vengono scritti.
[root@gangrif-tlogtest tlog]# grep 2a5a7ca40dd6424e91f587c0e012e623-3da9-1fdf38 tlog.log >> session.log
[root@gangrif-tlogtest tlog]# tlog-play -i session.log
[gangrif@gangrif-tlogtest ~]$ rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
[gangrif@gangrif-tlogtest ~]$ logout
[root@gangrif-tlogtest tlog]#
La sessione viene riprodotta sullo schermo utilizzando i dati di temporizzazione del registro JSON. È piuttosto liscio. Puoi immaginare come questo potrebbe essere utile durante l'esecuzione di analisi forensi dopo che è stata rilevata un'interruzione o una compromissione. Potresti anche usare tlog
per cose come la registrazione di una demo di qualcosa dalla riga di comando.
[ Ottieni questo libro gratuito da Red Hat e O'Reilly - Operatori Kubernetes:Automating the Container Orchestration Platform. ]
Concludi
Tutti questi discorsi sul monitoraggio dell'input dell'utente possono sollevare alcune domande. Ad esempio, le voci della password vengono registrate? Che dire delle sessioni SSH che passano a un altro host? E le sessioni X? La documentazione elenca le sessioni X come avvertimento ma tlog
non li cattura. La registrazione della password è disattivata per impostazione predefinita ma può essere abilitata, se necessario.
Quindi, che si tratti di conformità o semplicemente di registrare un'ottima demo di alcune nuove tecnologie, spero che questo articolo ti aiuti a portare a termine il lavoro utilizzando tlog.