GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare il monitoraggio dell'integrità dei file (FIM) utilizzando osquery su Linux

Osquery è una strumentazione, monitoraggio e analisi del sistema operativo open source. Creato da Facebook, espone un sistema operativo come un database relazionale ad alte prestazioni che può essere interrogato utilizzando query basate su SQL.

Osquery è un software multipiattaforma, può essere installato su Linux, Windows, MacOS e FreeBSD. Ci consente di esplorare il profilo, le prestazioni, il controllo della sicurezza, ecc. di tutti i sistemi operativi utilizzando query basate su SQL.

In questo tutorial, ti mostreremo come configurare File Integrity Monitoring (FIM) usando osquery. Utilizzeremo i sistemi operativi Linux Ubuntu 18.04 e CentOS 7.

Prerequisiti

  • Linux (Ubuntu o CentOS)
  • Privilegi di root
  • Prima guida all'osquery completata

Cosa faremo

  1. Installa osquery su Linux Server
  2. Abilita il consumo di Syslog per osquery
  3. Configurazione osquery di base
  4. Configura il monitoraggio dell'integrità dei file osquery
  5. Test

Passaggio 1:installazione di osquery su server Linux

Osquery fornisce il proprio repository per tutte le installazioni della piattaforma e il primo passo che faremo è installare il pacchetto osquery DAL repository ufficiale di osquery.

Su Ubuntu

Aggiungi la chiave osquery al sistema.

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY

Aggiungi il repository osquery e installa il pacchetto.

sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y

Su CentOS

Aggiungi la chiave osquery al sistema.

curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery

Aggiungi e abilita il repository osquery e installa il pacchetto.

sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
sudo yum-config-manager --enable osquery-s3-rpm
sudo yum install osquery -y

Attendi l'installazione di tutti i pacchetti.

Nota:

Se ricevi l'errore sul comando yum-config-manager.

sudo: yum-config-manager: command not found

Installa il pacchetto 'yum-utils'.

yum -y install yum-utils

Passaggio 2 - Abilita il consumo di Syslog in osquery

Osquery fornisce funzionalità per leggere o utilizzare i registri di sistema su Apple MacOS utilizzando Apple System Log (ASL) e per Linux utilizza il syslog.

In questo passaggio, abiliteremo il consumo di syslog per osquery tramite rsyslog.

Su Ubuntu

Installa il pacchetto rsyslog usando il comando apt di seguito.

sudo apt install rsyslog -y

Su CentOS

Installa il pacchetto rsyslog usando il comando yum di seguito.

sudo yum install rsyslog -y

Al termine dell'installazione, vai alla directory '/etc/rsyslog.d' e crea un nuovo file di configurazione osquery.conf.

cd /etc/rsyslog.d/
vim osquery.conf

Incolla lì la seguente configurazione.

template(
  name="OsqueryCsvFormat"
  type="string"
  string="%timestamp:::date-rfc3339,csv%,%hostname:::csv%,%syslogseverity:::csv%,%syslogfacility-text:::csv%,%syslogtag:::csv%,%msg:::csv%\n"
)
*.* action(type="ompipe" Pipe="/var/osquery/syslog_pipe" template="OsqueryCsvFormat")

Salva ed esci.

Fase 3 - Configurazione di base osquery

La configurazione predefinita di osquery è 'osquery.conf', solitamente situata nella directory '/etc/osquery'. Sono disponibili esempi della configurazione di osquery '/usr/share/osquery/osquery.conf' e un esempio di configurazione dei pacchetti osquery.

In questo passaggio, impareremo a conoscere i componenti di configurazione di osquery, creeremo la configurazione osquery personalizzata e quindi implementeremo osqueryd come servizio.

La configurazione di osquery formattata come file JSON contiene le specifiche di configurazione di osquery descritte di seguito.

  • Opzioni:parte del comando osqueryd CLI e determina l'avvio e l'inizializzazione delle app.
  • Pianificazione:definisci il flusso dei nomi delle query pianificate verso i dettagli della query.
  • Decorazioni:utilizzate per aggiungere ulteriori "decorazioni" ai risultati e ai registri delle istantanee.
  • Packs:un gruppo di query di pianificazione.
  • Altro:Percorso file, YARA, Prometheus, Views, EC2, Configurazione Chef.

Vai alla directory '/etc/osquery' e crea una nuova configurazione personalizzata 'osquery.conf'.

cd /etc/osquery/
vim osquery.conf

Incolla lì le seguenti configurazioni.

{
    "options": {
        "config_plugin": "filesystem",
        "logger_plugin": "filesystem",
        "logger_path": "/var/log/osquery",
        "disable_logging": "false",
        "log_result_events": "true",
        "schedule_splay_percent": "10",
        "pidfile": "/var/osquery/osquery.pidfile",
        "events_expiry": "3600",
        "database_path": "/var/osquery/osquery.db",
        "verbose": "false",
        "worker_threads": "2",
        "enable_monitor": "true",
        "disable_events": "false",
        "disable_audit": "false",
        "audit_allow_config": "true",
        "host_identifier": "hakase-labs",
        "enable_syslog": "true",
        "syslog_pipe_path": "/var/osquery/syslog_pipe",
        "force": "true",
        "audit_allow_sockets": "true",
        "schedule_default_interval": "3600"
    },


    "schedule": {
        "crontab": {
            "query": "SELECT * FROM crontab;",
            "interval": 300
        },
        "system_info": {
            "query": "SELECT hostname, cpu_brand, physical_memory FROM system_info;",
            "interval": 3600
        },
        "ssh_login": {
            "query": "SELECT username, time, host FROM last WHERE type=7",
            "interval": 360
        }
    },

    "decorators": {
        "load": [
            "SELECT uuid AS host_uuid FROM system_info;",
            "SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;"
        ]
    },

    "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf"
    }
}

Salva ed esci.

Nota:

  • Stiamo utilizzando il 'filesystem' come plug-in di configurazione e logger.
  • Definisci il percorso del logger nella directory '/var/log/osquery'.
  • Abilita il pip syslog nel file '/var/syslog/syslog_pipe'.
  • Nello scheduler, definiamo tre query per controllare crontab, informazioni di sistema e login ssh.
  • Abilita i pacchetti osquery denominati 'osquery-monitoring' e i file dei pacchetti che si trovano nella directory '/usr/share/osquery/packs'.

Ora avvia il servizio osqueryd daemon e abilitalo all'avvio ogni volta all'avvio del sistema.

systemctl start osqueryd
systemctl enable osqueryd

E riavvia il servizio rsyslog.

systemctl restart rsyslog

La configurazione di base osquery è stata completata.

Fase 4:configurare il monitoraggio dell'integrità dei file (FIM) utilizzando osquery

Osquery fornisce il monitoraggio dell'integrità dei file su Linux e MacOS Darwin utilizzando inotify e FSEvents. Semplicemente, monitora e rileva eventuali modifiche ai file nella directory definita utilizzando 'file_path' e quindi memorizza tutte le attività nella tabella file_events.

In questo passaggio, configureremo osquery per monitorare directory importanti come home, directory ssh e così via, tmp e la directory principale web www utilizzando pacchetti FIM personalizzati.

Vai alla directory '/usr/share/osquery/packs' e crea un nuovo file di configurazione dei pacchetti 'fim.conf'.

cd /usr/share/osquery/packs
vim fim.conf

Incolla le configurazioni di seguito.

{
  "queries": {
    "file_events": {
      "query": "SELECT * FROM file_events;",
      "removed": false,
      "interval": 300
    }
  },
  "file_paths": {
    "homes": [
      "/root/.ssh/%%",
      "/home/%/.ssh/%%"
    ],
      "etc": [
      "/etc/%%"
    ],
      "home": [
      "/home/%%"
    ],
      "tmp": [
      "/tmp/%%"
    ],
      "www": [
      "/var/www/%%"
      ]
  }
}

Salva ed esci.

Ora torna alla directory di configurazione '/etc/osquery' e modifica il file osquery.conf.

cd /etc/osquery/
vim osquery.conf

Aggiungi la configurazione dei pacchetti di monitoraggio dell'integrità dei file all'interno della sezione "pacchetti".

    "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
        "fim": "/usr/share/osquery/packs/fim.conf"
    }

Salva ed esci, quindi riavvia il servizio osqueryd.

systemctl restart osqueryd


Nota:

Continua a controllare il file di configurazione JSON utilizzando il linter JSON 'http://jsonlint.com/' e assicurati che non ci siano errori.

Fase 5 - Test

Testeremo i pacchetti di monitoraggio dell'integrità dei file creando un nuovo file nella directory definita "home" e "www".

Vai alla directory '/var/www/' e crea un nuovo file chiamato 'howtoforge.md'.

cd /var/www/
touch howtoforge.md

Vai alla directory '/home/tuoutente/' e crea un nuovo file chiamato 'hakase-labs.md'.

cd /home/vagrant/
touch hakase-labs.md

Ora controlleremo tutti i log monitorati utilizzando la modalità interattiva in tempo reale osqueryi ei log dei risultati di osquery.

osqueryi

Esegui il comando osqueryi di seguito.

osqueryi --config-path /etc/osquery/osquery.conf

Ora controlla tutti i log sulle modifiche ai file nella tabella 'file_events'.

Per le modifiche globali.

select * from file_events;

Per la directory 'home'.

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";

Per la directory principale web 'www'.

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";

registro dei risultati di osqueryd

Vai alla directory '/var/log/osquery' e otterrai il file 'osqueryd.results.log'.

cd /var/log/osquery/
ls -lah osqueryd.results.log

Filtra i log di osquery usando il comando 'grep'.

grep -rin howtoforge.md osqueryd.results.log
grep -rin hakase-labs.md osqueryd.results.log

Vedrai che le informazioni su quei file sono state create.

L'installazione e la configurazione di File Integrity Monitoring (FIM) su Linux Server Ubuntu e CentOS utilizzando osquery è stata completata con successo.


Linux
  1. Come creare un file in Linux utilizzando Terminale/riga di comando

  2. Come configurare il server di file FTP vsftpd su Redhat 7 Linux

  3. Cos'è NFS e come installarlo su Linux

  4. Come dividere iso o file usando il comando "split" in Linux

  5. Come installare un file .dsc su Linux

Come configurare il server multimediale in streaming utilizzando Jellyfin in Linux

Come formattare i programmi Shell usando Shfmt in Linux

Come configurare il firewall con UFW su Linux

Come configurare il firewall con Gufw su desktop Linux

Come configurare un file server di base utilizzando simpleHTTPserver

Come installare lo strumento di monitoraggio del sistema Gtop in Linux