Ogni amministratore di sistema perde il sonno ogni tanto a causa di intrusioni nel sistema. Nessuno vuole che un server di cui è responsabile venga compromesso. Il problema è che, anche se è possibile rivedere i registri regolarmente, un'intrusione nel sistema veramente efficace non lascia registri evidenti in giro. Ciò rende difficile sapere in modo definitivo se i tuoi sistemi sono sicuri.
Oltre a impostare SELinux su Applicazione e implementando pentest regolari, uno dei modi migliori per monitorare il tuo sistema per le violazioni della sicurezza è — beh, monitorare il tuo sistema per le violazioni della sicurezza. Se sembra più facile a dirsi che a farsi, allora devi provare Tripwire. Tripwire è uno strumento di monitoraggio dell'integrità dei file che controlla le modifiche ai file critici sul tuo sistema. Questo articolo mostra come installare, configurare e utilizzare Tripwire sulla tua rete.
Tripwire è sia un'azienda che una base di codice open source. Puoi acquistare il monitoraggio da Tripwire oppure puoi utilizzare il codice GPLv2 che hanno reso disponibile su GitHub. Si applicano i soliti compromessi. Se paghi per questo, Tripwire fa la maggior parte del duro lavoro per te e tutto ciò che devi fare è prestare attenzione ai rapporti. Se implementi tu stesso Tripwire, puoi configurarlo e configurarlo da solo.
Installazione
Per installare Tripwire su RHEL o CentOS, è necessario aggiungere il repository EPEL (Extra Packages for Enterprise Linux). Su RHEL 8, devi abilitare il codeready-builder
opzione in subscription-manager
:
$ sudo repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"
Su CentOS, dovresti abilitare PowerTools
:
$ sudo dnf config-manager --set-enabled PowerTools
Per installare:
$ sudo dnf install -y epel-release
Con EPEL ora aggiunto al tuo elenco di repository, installa Tripwire
:
$ sudo dnf install -y tripwire
Impostazione di un nome host
Prima di configurare Tripwire, dovresti impostare un hostname per il tuo server se non ne ha già uno. I nomi host sono un frequente punto di confusione, quindi leggi il mio articolo sull'impostazione dei nomi host per assicurarti di essere chiaro su ciò che stai impostando. Su CentOS, RHEL e Fedora, puoi impostare un nome host con hostnamectl
:
$ sudo hostnamectl set-hostname --pretty "Rockhopper tripwire demo machine"
$ sudo hostnamectl set-hostname --static rockhopper
Generazione di chiavi
Successivamente, devi generare chiavi di crittografia per Tripwire. Dopotutto, lo scopo di Tripwire è impedire agli aggressori di coprire le loro tracce, quindi i dati di Tripwire devono essere fortemente crittografati.
Innanzitutto, crea una chiave locale con twadmin
strumento:
$ sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
Quindi, crea una chiave del sito:
$ sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
In entrambi i casi, è necessario fornire una passphrase per ciascuna chiave. Mantieni queste passphrase private e sicure!
Tripwire utilizza due chiavi diverse per la crittografia:la chiave locale, che è univoca per ogni server, e una chiave del sito, che puoi utilizzare su tutti i sistemi all'interno della tua organizzazione. La chiave del sito è una caratteristica importante perché consente a un responsabile IT di dettare un'unica politica di sicurezza per l'organizzazione e può essere aggiornata centralmente, firmata con la chiave del sito e quindi distribuita con Ansible o scp
per l'uso su ogni server. Tuttavia, ogni amministratore del server ha ancora una chiave locale univoca, quindi anche se il file della politica di sicurezza non può essere modificato, possono comunque accedere a Tripwire per aggiornamenti e rapporti.
File di configurazione di Tripwire
Successivamente, è necessario creare un file di configurazione di base per Tripwire. La maggior parte delle impostazioni predefinite nella configurazione sono accettabili e nulla necessita da modificare a meno che tu non sappia che il tuo sistema differisce in modo significativo da quello che vedi nel file di configurazione di esempio fornito in /etc/tripwire/twcfg.txt
. Per impostazione predefinita, Tripwire utilizza sendmail
per inviarti avvisi via email. Se stai usando postfix, non è necessario cambiarlo, tuttavia, perché postfix
fornisce sendmail
alias. Nel file di configurazione sono anche definite le posizioni delle chiavi di crittografia e del file dei criteri, quindi verifica che siano corrette.
Quando sei soddisfatto delle opzioni di configurazione, usa twadmin
per convalidare il testo di configurazione e scriverlo in un file chiamato /etc/tripwire/tw.cfg
, che viene firmato con la chiave del sito. La firma del file di configurazione richiede la passphrase per la chiave del tuo sito.
$ sudo twadmin --create-cfgfile --site-keyfile=/etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg
Sintassi del file di criteri
Il file delle politiche è dove metti la maggior parte del lavoro per Tripwire. La tua politica di Tripwire determina quali file monitorare e quali ignorare e quali si trovano da qualche parte nel mezzo. Entrambi gli estremi sono ugualmente importanti. Se i tuoi rapporti giornalieri su Tripwire inviano un falso positivo per ogni singolo file utente che cambia durante una giornata lavorativa, imparerai presto a ignorare del tutto i tuoi rapporti su Tripwire.
Il file di policy di esempio in bundle con l'installazione EPEL di Tripwire è costruito attorno a un'installazione completa di una Fedora Workstation. Devi personalizzarlo per il tuo sistema a meno che tu non stia eseguendo un'installazione completa di Fedora Workstation, ma leggerlo aiuta a darti un'idea di cosa contiene un file di policy standard. Per decodificare la notazione Tripwire, rivedi twpolicy(4)
pagina man.
I file delle politiche possono essere complessi e potrebbe essere utile pensarlo più come un Sass
o Makefile
rispetto a un file di configurazione. Puoi creare variables
, oppure usane di default e rules
e persino conditionals
per governare il modo in cui Tripwire tratta le singole directory e file.
Ad esempio, il ReadOnly
variabile definisce una regola per i file destinati ad essere di sola lettura. In questo contesto, "sola lettura" non significa che i suoi permessi sui file siano impostati su r--
(ovvero 400
), ma che generalmente non sono previste modifiche dal momento dell'inizializzazione di Tripwire a un rapporto giornaliero o giornaliero.
Una regola è strutturata come una riga terminata da un punto e virgola (;
) e delimitato da una freccia (->
). Questo blocco di codice imposta gli eseguibili di Tripwire su ReadOnly
:
/sbin/siggen -> $(ReadOnly);
/sbin/tripwire -> $(ReadOnly);
/sbin/twadmin -> $(ReadOnly);
/sbin/twprint -> $(ReadOnly);
Il file di esempio di Fedora usa le variabili per definire la maggior parte delle regole. Ad esempio:
SEC_BIN = $(ReadOnly) ; # Binaries that should not change
Quindi le sue voci per monitorare i binari di Tripwire sono:
/sbin/siggen -> $(SEC_BIN);
/sbin/tripwire -> $(SEC_BIN);
/sbin/twadmin -> $(SEC_BIN);
/sbin/twprint -> $(SEC_BIN);
I due esempi hanno esattamente lo stesso scopo e l'implementazione è semplicemente diversa.
Usa il file di policy di esempio come punto di partenza e costruisci una policy per monitorare il tuo sistema.
Generazione di un file di criteri
Esclusivamente per motivi di test, aggiungi questa riga ai File di dati Tripwire sezione:
/etc/tripwire/secrets -> $(SEC_CRIT); # proof of concept
Crea un critico file di prova denominato secrets
:
$ sudo touch /etc/tripwire/secrets
Genera il file della tua politica con twadmin
:
$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt
Inserisci la passphrase della chiave del tuo sito quando richiesto.
Ciò si traduce in un file firmato e crittografato, /etc/tripwire/tw.pol
.
Inizializzazione di Tripwire
Con le tue chiavi generate, il tuo set di configurazione e un file di policy in atto, ora puoi inizializzare Tripwire:
$ sudo tripwire --init
Inserisci il tuo locale passphrase chiave quando richiesto.
Se vengono visualizzati avvisi, leggerli attentamente e correggere le voci errate nel file della politica. Non è raro che il tuo primo tentativo di un file di criteri, specialmente quando è basato su uno esistente, faccia riferimento a file che in realtà non esistono sul tuo sistema. Puoi farcela installando i file mancanti o rimuovendo i riferimenti ad essi dal tuo /etc/tripwire/twpol.txt
file principale.
Se dovessi apportare modifiche, aggiorna il file della tua politica rigenerandolo, quindi reinizializza il tuo database:
$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt
$ sudo tripwire --init
Dovresti farlo fino a quando non avrai raggiunto un buon punto di partenza. Una volta che hai un database di partenza sano, non dovresti reinizializzare il tuo database, ma usare invece il tripwire
comando per verificare l'integrità del tuo sistema e, facoltativamente, ignorare le differenze accettabili con il --interactive
opzione:
$ sudo tripwire --check --interactive
Visualizzazione dei rapporti
L'installazione EPEL di Tripwire crea cron
lavori per eseguire rapporti Tripwire e per inviare rapporti via e-mail a root
. Puoi anche eseguire un rapporto manuale:
$ sudo tripwire --check
Questo comando salva un file di rapporto in /var/lib/tripwire/reports
(o qualunque posizione tu abbia impostato nel file di configurazione). Per visualizzare questo file, usa il twprint
comando:
$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-163425.twr
Per visualizzare un rapporto con un errore, modifica i secrets
test file ed esegui un rapporto:
$ sudo echo 1 > /etc/tripwire/secrets
$ sudo tripwire --check
Quindi visualizza il rapporto:
$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr
Added: "/var/lib/tripwire/rockhopper.twd.bak
Modified: "/etc/tripwire/secrets"
Supponendo che tu sia soddisfatto della modifica al tuo file di prova, puoi aggiornare il database di Tripwire:
$ sudo tripwire --update \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr
Proteggi i tuoi sistemi
Tripwire è un monitor di sicurezza estremamente preciso ed estremamente pedante. Smetti di lottare per analizzare i registri alla ricerca di segni di intrusi e fai in modo che Tripwire funzioni per te. Con Tripwire, quando qualcosa cambia su un sistema, lo saprai e potrai gestirlo di conseguenza.
[ Vuoi saperne di più sulla sicurezza? Consulta la checklist di sicurezza e conformità IT. ]