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
- Installa osquery su Linux Server
- Abilita il consumo di Syslog per osquery
- Configurazione osquery di base
- Configura il monitoraggio dell'integrità dei file osquery
- 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.