Monitoraggio file · 6 min read · Nov 03, 2025

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

Osquery è uno strumento open source per l’istrumentazione, il monitoraggio e l’analisi del sistema operativo. 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 multi-piattaforma, può essere installato su Linux, Windows, MacOS e FreeBSD. Ci consente di esplorare tutti i profili di quei sistemi operativi, le prestazioni, il controllo della sicurezza, ecc., utilizzando query basate su SQL.

In questo tutorial, ti mostreremo come configurare il monitoraggio dell’integrità dei file (FIM) utilizzando osquery. Utilizzeremo i sistemi operativi Linux Ubuntu 18.04 e CentOS 7.

Prerequisiti

  • Linux (Ubuntu o CentOS)
  • Privilegi di root
  • Completato il primo guida osquery

Cosa faremo

  1. Installare osquery sul server Linux
  2. Abilitare il consumo di Syslog per osquery
  3. Configurazione di base di osquery
  4. Configurare il monitoraggio dell’integrità dei file osquery
  5. Testare

Passo 1 - Installare osquery sul server Linux

Osquery fornisce il proprio repository per l’installazione su tutte le piattaforme, 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

Aspetta che tutti i pacchetti siano installati.

Installare osquery

Nota:

Se ricevi l’errore riguardo al comando yum-config-manager.

sudo: yum-config-manager: command not found

Installa il pacchetto ‘yum-utils’.

yum -y install yum-utils

Passo 2 - Abilitare il consumo di Syslog in osquery

Osquery fornisce funzionalità per leggere o consumare i log di sistema su Apple MacOS utilizzando l’Apple System Log (ASL), e per Linux utilizza il syslog.

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

Su Ubuntu

Installa il pacchetto rsyslog utilizzando il comando apt qui sotto.

sudo apt install rsyslog -y

Su CentOS

Installa il pacchetto rsyslog utilizzando il comando yum qui sotto.

sudo yum install rsyslog -y

Dopo che l’installazione è completata, vai nella directory ‘/etc/rsyslog.d’ e crea un nuovo file di configurazione osquery.conf.

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

Incolla la seguente configurazione lì.

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.

Configura osquery per leggere il syslog

Passo 3 - Configurazione di base di osquery

La configurazione predefinita di osquery è ‘osquery.conf’, di solito situata nella directory ‘/etc/osquery’. Ci sono campioni della configurazione di osquery in ‘/usr/share/osquery/osquery.conf’ e campioni di configurazione dei pacchetti osquery.

In questo passo, impareremo i componenti della configurazione di osquery, creeremo la configurazione personalizzata di osquery e poi deployeremo osqueryd come servizio.

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

  • Opzioni: parte del comando CLI di osqueryd e determina l’avvio e l’inizializzazione delle app.
  • Programmazione: definisce il flusso dei nomi delle query programmate ai dettagli della query.
  • Decoratori: utilizzati per aggiungere ulteriori “decorazioni” ai risultati e ai log degli snapshot.
  • Pacchetti: un gruppo di query programmate.
  • Altro: Percorso del file, YARA, Prometheus, Visualizzazioni, EC2, Configurazione Chef.

Vai nella directory ‘/etc/osquery’ e crea una nuova configurazione personalizzata ‘osquery.conf’.

cd /etc/osquery/  
vim osquery.conf

Incolla le seguenti configurazioni lì.

{
    "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 ‘filesystem’ come plugin di configurazione e logger.
  • Definisci il percorso del logger nella directory ‘/var/log/osquery’.
  • Abilita il pipe syslog nel file ‘/var/syslog/syslog_pipe’.
  • Nello scheduler, definiamo tre query per controllare il crontab, le informazioni di sistema e il login ssh.
  • Abilita i pacchetti osquery chiamati ‘osquery-monitoring’, e i file dei pacchetti si trovano nella directory ‘/usr/share/osquery/packs’.

Ora avvia il servizio daemon osqueryd e abilitalo per avviarsi ogni volta all’avvio del sistema.

systemctl start osqueryd  
systemctl enable osqueryd

E riavvia il servizio rsyslog.

systemctl restart rsyslog

La configurazione di base di osquery è stata completata.

Passo 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 poi memorizza tutta l’attività nella tabella file_events.

In questo passo, configureremo osquery per monitorare directory importanti come home, directory ssh, ecc., tmp e la directory radice www utilizzando pacchetti FIM personalizzati.

Vai nella 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 qui sotto.

{
  "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 nella directory di configurazione ‘/etc/osquery’ ed edita 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 ‘packs’.

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

monitoraggio dei file osquery

Salva ed esci, poi riavvia il servizio osqueryd.

systemctl restart osqueryd

Riavvia osqueryd

Nota:

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

Passo 5 - Testare

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

Vai nella directory ‘/var/www/‘ e crea un nuovo file chiamato ‘howtoforge.md’.

cd /var/www/  
touch howtoforge.md

Vai nella directory ‘/home/youruser/‘ e crea un nuovo file chiamato ‘hakase-labs.md’.

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

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

Testare la configurazione osquery

osqueryi

Esegui il comando osqueryi qui sotto.

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

Ora controlla tutti i log riguardanti le 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 radice web ‘www’.

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

Utilizzando osqueryi

log dei risultati di osqueryd

Vai nella directory ‘/var/log/osquery’ e troverai il file ‘osqueryd.results.log’.

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

Filtra i log di osquery utilizzando il comando ‘grep’.

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

Vedrai informazioni su quei file che sono stati creati.

log dei risultati di osqueryd

L’installazione e la configurazione del monitoraggio dell’integrità dei file (FIM) su Linux Server Ubuntu e CentOS utilizzando osquery è stata completata con successo.

Riferimenti

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.