Bestandsintegriteitsmonitoring (FIM) opzetten met osquery op Linux
Osquery is een open bron besturingssysteem instrumentatie, monitoring, en analyse. Het is gemaakt door Facebook en stelt een besturingssysteem bloot als een krachtige relationele databank die met SQL-gebaseerde queries kan worden bevraagd.
Osquery is een multiplatform software, die geïnstalleerd kan worden op Linux, Windows, MacOS, en FreeBSD. Het stelt ons in staat om met behulp van SQL-gebaseerde queries het profiel, de prestaties, de veiligheidscontrole enz. van al die besturingssystemen te onderzoeken.
In deze handleiding laten we je zien hoe je File Integrity Monitoring (FIM) kunt instellen met osquery. We gebruiken hiervoor de Linux besturingssystemen Ubuntu 18.04 en CentOS 7.
Vereisten
- Linux (Ubuntu of CentOS)
- Root voorrechten
- Voltooide eerste osquery gids
Wat we zullen doen
- Installeer osquery op Linux Server
- Syslog Verbruik inschakelen voor osquery
- Basis osquery configuratie
- Bestandsintegriteitsbewaking osquery configureren
- Testen van
Stap 1 – Installeer osquery op Linux Server
Osquery stelt zijn eigen repository ter beschikking voor installatie op alle platforms, en de eerste stap die we gaan doen is het osquery pakket installeren VANUIT de officiële osquery repository.
Op Ubuntu
Voeg de osquery sleutel aan het systeem toe.
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Voeg de osquery repository toe en installeer het pakket.
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main' sudo apt install osquery -y
Op CentOS
Voeg de osquery sleutel aan het systeem toe.
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
Voeg de osquery repository toe en activeer deze, en installeer het pakket.
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
Wacht tot alle pakketten geïnstalleerd zijn.
Opmerking:
Als je de foutmelding krijgt over het yum-config-manager commando.
sudo: yum-config-manager: command not found
Installeer het ‘yum-utils’ pakket.
yum -y install yum-utils
Stap 2 – Schakel Syslog Verbruik in osquery in
Osquery biedt mogelijkheden om systeem logs te lezen of te consumeren op de Apple MacOS met het Apple System Log (ASL), en voor Linux is dat met het syslog.
In deze stap zullen we de syslog consumptie voor osquery inschakelen via het rsyslog.
Op Ubuntu
Installeer het rsyslog pakket met het onderstaande apt commando.
sudo apt install rsyslog -y
Op CentOS
Installeer het rsyslog pakket met het onderstaande yum commando.
sudo yum install rsyslog -y
Nadat de installatie voltooid is, ga je naar de map ‘/etc/rsyslog.d’ en maak je een nieuw configuratiebestand osquery.conf.
cd /etc/rsyslog.d/ vim osquery.conf
Plak er de volgende configuratie in.
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")
Sla op en sluit af.
Stap 3 – Basis configuratie osquery
De standaard configuratie van osquery is ‘osquery.conf’, dat gewoonlijk in de map ‘/etc/osquery’ staat. Er zijn voorbeelden van de osquery configuratie ‘/usr/share/osquery/osquery.conf’ en voorbeelden van osquery packs configuratie.
In deze stap leren we de osquery configuratie-onderdelen kennen, maken we de aangepaste osquery configuratie, en zetten dan de osqueryd als dienst uit.
osquery configuratie geformatteerd als een JSON bestand bevat osquery configuratie specificaties die hieronder beschreven worden.
- Opties: onderdeel van het osqueryd CLI commando en het bepaalt de apps start en initialisatie.
- Schema: Bepaalt de stroom van de geplande query namen naar de query details.
- Decoratoren: Gebruikt om extra “versieringen” toe te voegen aan resultaten en snapshot logs.
- Packs: een groep van de geplande query’s.
- Meer: Bestandspad, YARA, Prometheus, Views, EC2, Chef Configuratie.
Ga naar de ‘/etc/osquery’ directory en maak een nieuwe aangepaste configuratie ‘osquery.conf’.
cd /etc/osquery/ vim osquery.conf
Plak er de volgende configuraties in.
{ "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" } }
Sla op en sluit af.
Opmerking:
- We gebruiken het ‘bestandssysteem’ als config en logger plugins.
- Definieer het loggerpad naar de ‘/var/log/osquery’ directory.
- Schakel de syslog pip in naar het bestand ‘/var/syslog/syslog_pipe’.
- Op de scheduler definiëren we drie query’s voor het controleren van de crontab, systeeminfo, en ssh login.
- Schakel de osquery packs met de naam ‘osquery-monitoring’ in, en de packs bestanden staan in de map ‘/usr/share/osquery/packs’.
Start nu de osqueryd daemon dienst en zet hem aan om elke keer bij het opstarten van het systeem te starten.
systemctl start osqueryd systemctl enable osqueryd
En start de rsyslog dienst opnieuw.
systemctl restart rsyslog
De basisinstelling osquery is voltooid.
Stap 4 – Configureer File Integrity Monitoring (FIM) met osquery
Osquery biedt File Integrity Monitoring op Linux en MacOS Darwin met de programma’s inotify en FSEvents. Eenvoudig bewaakt en detecteert het elke verandering van bestanden op de gedefinieerde directory met het ‘file_path’en slaat dan alle activiteit op in de file_events tabel.
In deze stap zullen we osquery configureren om belangrijke mappen zoals home, ssh directory, etc, tmp, en de www web root directory te bewaken met aangepaste FIM pakketten.
Ga naar de ‘/usr/share/osquery/packs’ directory en maak een nieuw packs configuratiebestand ‘fim.conf’.
cd /usr/share/osquery/packs vim fim.conf
Plak de configuraties hieronder.
{ "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/%%" ] } }
Bewaar en sluit af.
Ga nu terug naar de configuratiemap ‘/etc/osquery’ en bewerk het osquery.conf bestand.
cd /etc/osquery/ vim osquery.conf
Voeg de configuratie File Integrity Monitoring packs toe binnen de sectie ‘packs’.
"packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf", "fim": "/usr/share/osquery/packs/fim.conf" }
Bewaar en sluit af, en start dan de osqueryd service opnieuw.
systemctl restart osqueryd
Opmerking:
Blijf het JSON configuratiebestand controleren met de JSON linter‘http://jsonlint.com/‘ en controleer of er geen fout optreedt.
Stap 5 – Testen
We zullen de File Integrity Monitoring pakketten testen door een nieuw bestand aan te maken op de gedefinieerde directory ‘home’ en ‘www’.
Ga naar de ‘/var/www/’ directory en maak een nieuw bestand aan met de naam ‘howtoforge.md’.
cd /var/www/ touch howtoforge.md
Ga naar de ‘/home/youruser/’ directory en maak een nieuw bestand aan met de naam ‘hakase-labs.md’.
cd /home/vagrant/ touch hakase-labs.md
Nu zullen we alle logs controleren die de real-time interactieve modus osqueryi bewaken en de logs van de osquery resultaten.
osqueryi
Voer het onderstaande osqueryi commando uit.
osqueryi --config-path /etc/osquery/osquery.conf
Bekijk nu alle logs over bestandswijzigingen in de tabel ‘file_events’.
Voor globale veranderingen.
select * from file_events;
Voor de ‘home’ directory.
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";
Voor de ‘www’ web root directory.
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";
logboek over resultaten van osqueryd
Ga naar de ‘/var/log/osquery’ directory en je krijgt het ‘osqueryd.results.log’ bestand.
cd /var/log/osquery/ ls -lah osqueryd.results.log
Filter de osquery logs met het ‘grep’ commando.
grep -rin howtoforge.md osqueryd.results.log grep -rin hakase-labs.md osqueryd.results.log
Je krijgt info te zien over die bestanden die aangemaakt zijn.
De installatie en configuratie van de File Integrity Monitoring (FIM) op Linux Server Ubuntu en CentOS met osquery is met succes voltooid.