GNU/Linux >> Linux Esercitazione >  >> Linux

Monitoraggio della sicurezza in Linux con Tripwire

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. ]


Linux
  1. Crittografa e decrittografa i file con una passphrase su Linux

  2. Sopravvivere a un controllo di sicurezza con Linux aziendale

  3. Sicurezza Linux:proteggi i tuoi sistemi con fail2ban

  4. Sicurezza Linux:manipolazione delle politiche SELinux con booleani

  5. Introduzione a SSH in Linux

Monitoraggio degli host Linux e Windows con Sguardi

Controllo della sicurezza di Linux con Lynis

Monitoraggio della larghezza di banda su Linux con Nethogs

Monitoraggio server Linux con iPhone/iPad

Accedi con una chiave privata SSH su Linux e macOS

Sicurezza Linux vs Windows