GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare tlog su host Linux per la registrazione del terminale

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:9090 . 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.


Linux
  1. Come impostare o modificare il nome host del sistema in Linux

  2. Come impostare la variabile $ Path in Linux

  3. Come impostare le impostazioni proxy sulla riga di comando di Linux o sul terminale

  4. Come impostare intestazioni e librerie per lo sviluppo di Linux

  5. Come impostare l'ID processo in Linux per un programma specifico

Come aprire una finestra di un terminale Linux

Come configurare un cluster Pacemaker per Linux ad alta disponibilità

Come impostare uno sfondo diverso per ogni monitor in Linux

Come aprire un PDF in un terminale Linux

Come configurare un Killswitch Linux per VPN

Come impostare la rete esterna per i container nei container Linux (LXC)