Überwachung der Dateiintegrität unter Linux mit OSQuery

- 819
- 71
- Hr. Moritz Bozsik
Das grundlegende Konzept, das an der Verwendung der OSQuery -Anwendung beteiligt ist. Die Daten werden in Tabellen gespeichert, die mithilfe von Mitarbeitern abgefragt werden können Sql
Syntax direkt über die Osqueryi
Schale oder über die Osqueryd
Dämon.
In diesem Tutorial sehen wir, wie die Anwendung installiert wird, wie Sie grundlegende Abfragen ausführen und wie Sie verwendet werden Fim
(Überwachung der Dateiintegrität) als Teil Ihres Linux -Systemverwaltungsjobs.
In diesem Tutorial lernen Sie:
- So installieren Sie OSQuery
- So listen Sie die verfügbaren Tabellen auf
- So führen Sie Abfragen aus der Osqueryi -Shell durch
- So verwenden Sie den Osqueryd -Daemon, um die Dateiintegrität zu überwachen

Softwareanforderungen und Konventionen verwendet
- Grundkenntnisse über SQL -Konzepte
- Root -Berechtigungen zur Ausführung von Verwaltungsaufgaben
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | Verteilungsunabhängige |
Software | Osquery |
Andere | |
Konventionen | # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können |
Installation
Wir haben im Grunde zwei Optionen zu installieren Osquery
: Der erste besteht darin, das entsprechende Paket für unser System von der offiziellen Website herunterzuladen. Die zweite, normalerweise bevorzugt, besteht darin, das OSQuery -Repository zu unseren Vertriebssoftwarequellen hinzuzufügen. Hier werden wir beide Optionen kurz untersuchen.

Installieren über Paket
Auf der offiziellen OSQuery -Website kann der unterschriebene heruntergeladen werden Deb
Und Drehzahl
Pakete oder generische Tarballs. Als erstes wählen wir die Version, die wir installieren möchten, aus, dann laden wir ein Paket herunter.
Der Rat ist, die neueste verfügbare Version (4) auszuwählen (4).1.2 Im Moment des Schreibens). Sobald das Paket heruntergeladen wurde. Um die Software beispielsweise auf einem Fedora -System zu installieren (vorausgesetzt, das Paket befindet sich in unserem aktuellen Arbeitsverzeichnis) würden wir ausführen:
$ sudo dnf install ./Osquery-4.1.2-1.Linux.x86_64.Drehzahl
Mit einem Repository
Alternative können wir das hinzufügen Drehzahl
oder Deb
Repository zu unserer Verteilung. Wenn wir eine RPM-basierte Verteilung verwenden, können wir die folgenden Befehle ausführen, um die Aufgabe zu erfüllen:
$ curl -l https: // pkg.Osquery.IO/RPM/GPG | sudo tee/etc/pki/rpm-gpg/rpm-gpg-key-osquery $ sudo yum-config-manager --add-repo https: // pkg.Osquery.IO/RPM/OSQuery-S3-RPM.Repo $ sudo yum-config-Manager-ABLEABLE OSQUERY-S3-UPM-REPO $ sudo yum Installieren Sie OSQuery
Mit den obigen Linux -Befehlen fügen wir die GPG -Puliktaste hinzu. Schließlich installieren wir das OSQuery -Paket. Beachte das Yum
, In jüngsten Versionen von Fedora und Centos/Rhel ist nur ein symbolischer Zusammenhang zu DNF
, Wenn wir also das erstere aufrufen, wird der letztere stattdessen verwendet.
Wenn wir eine debianbasierte Verteilung ausführen, können wir das Deb-Repository zu unseren Softwarequellen hinzufügen, indem wir ausführen:
$ sudo apt-key adv-Keyserver Keyserver.Ubuntu.com-recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B $ sudo add-apt-repository 'Deb [Arch = AMD64] https: // pkg.Osquery.IO/DEB Deb Main '$ sudo apt-get Update $ sudo Apt-Get Install OSQuery
Sobald wir das Paket installiert sind, können wir uns die Basisnutzung der Software ansehen.
Grundnutzung
Mit OSQuery können wir verschiedene Aspekte eines Betriebssystems überwachen, das eine „tabellarische Abstraktion“ annimmt, wobei eine SQL -Syntax ähnlich der verwendet wird sqlite
Datenbanken. Die Abfragen werden auf Tabellen ausgeführt, die verschiedene Betriebssystemaspekte wie Prozesse und Dienste abstrahieren.
Wir können die Abfragen direkt mit dem ausführen Osqueryi
interaktive Schale oder wir können sie über die planen Osqueryd
Dämon. Hier ist ein Beispiel für eine Abfrage, um alle verfügbaren Tabellen aufzulisten (die vollständige Liste mit der Beschreibung der Tabellen kann auch gefunden werden
online):
$ osqueryi osquery> .Tabellen => acpi_tables => APT_SOURCES => ARP_CACHE => ATOM_PACKAGES => AURSEAS => Authorized_keys => Block_Devices => carbon_black_info => carves => Chrome_extension => cpu_time => cpuid => crontab => curll => curll => curll_certification => deb_> crontab => curll => curll => curll => curll_certification => deb_> crontab => curll => curll_> curll_certification => deb_> crontab => curll => curll => curll_certifical > device_file => device_hash => device_partitions => disk_encryption => dns_resolvers => docker_container_labels => docker_container_mounts => docker_container_networks => docker_container_ports => docker_container_processes => docker_container_stats => docker_containers => docker_image_labels => docker_images => docker_info => docker_network_labels => docker_networks => docker_version => docker_volume_labels => docker_volumes => ec2_instance_metadata => ec2_instance_tags => elf_dynamic => elf_info => elf_sections => elf_segments => elf_symbols => etc_hosts => etc_protocols => etc_services => file => file_events => firefox_addons => Gruppen =>hardware_events => hash => intel_me_info => interface_addresses => interface_details => interface_ipv6 => iptables => kernel_info => kernel_integrity => kernel_modules => known_hosts => last => listening_ports => lldp_neighbors => load_average => logged_in_users => magic = > md_devices => md_drives => md_personalities => memory_array_mapped_addresses => memory_arrays => memory_device_mapped_addresses => memory_devices => memory_error_info => memory_info => memory_map => mounts => msr => npm_packages => oem_strings => opera_extensions => os_version => osquery_events => osquery_extensions => osquery_flags => osquery_info => osquery_packs => osquery_registry => osquery_schedule => pci_devices => platform_info => portage_keywords => portage_packages => portage_use => process_envs => process_events => process_file_events => process_memory_map => process_namespaces => process_open_files =>process_open_sockets => processes => prometheus_metrics => python_packages => routes => rpm_package_files => rpm_packages => selinux_events => Shadow => Shared_memmem => smartly_InfoGSho => smbiSho => smartly_Info- > syslog_events => system_controls => system_info => time => ulimit_info => Uptime => usb_devices => user_events => user_groups => user_ssh_keys => user => yara => yara_events => yum_sources
Ausführen der Osqueryi
Befehl Wir geben die interaktive Shell ein. Daraus können wir unsere Fragen und Anweisungen ausstellen. Hier ist ein weiteres Beispiel für eine Abfrage, diesmal, um alle laufenden Prozesse aufzulisten PID
Und Name
. Die Abfrage wird auf der durchgeführt Verfahren
Tabelle (die Ausgabe der Abfrage wurde aus Gründen der Bequemlichkeit abgeschnitten):
OSQuery> PID auswählen, Name aus Prozessen; +-------+--------------------------------+| PID | Name | +-------+--------------------------------+| 1 | systemd | | 10 | rcu_Sching | | 10333 | KWERKER/U16: 5-EVENTS_UNBOART | | 10336 | KWERKER/2: 0-Events | | 11 | Migration/0 | | 11002 | KWERKER/U16: 1-KCRYPTD/253: 0 | | 11165 | KWERKER/1: 1-Events | | 11200 | KWERKER/1: 3-EVENTS | | 11227 | Bash | | 11368 | Osqueryi | | 11381 | KWERKER/0: 0-Events | | 11395 | Webinhalt | | 11437 | KWERKER/0: 2-Events | | 11461 | KWERKER/3: 2-EVENTS_POWER_EFITIENT | | 11508 | KWERKER/2: 2 | | 11509 | KWERKER/0: 1-Events | | 11510 | KWERKER/U16: 2-KCRYPTD/253: 0 | | 11530 | Bash | […] | +-------+------------------------------------+
Kopieren Es ist sogar möglich, Abfragen an zusammengefügten Tischen mit dem durchzuführen VERBINDEN
Anweisung, genau wie wir es in relationalen Datenbanken tun. Im folgenden Beispiel führen wir eine Anfrage an der durch Prozesse
Tabelle, zusammen mit der Benutzer
eins über die uid
Spalte:
OSQuery> Prozesse auswählen.PID, Prozesse.Name, Benutzer.Benutzername aus Prozessen verbinden Benutzer zu Prozessen.UID = Benutzer.uid; +-------+-------------------------------+--------- ----------+ | PID | Name | Benutzername | +-------+-------------------------------+--------- ----------+ | 1 | systemd | Wurzel | | 10 | rcu_Sching | Wurzel | | 11 | Migration/0 | Wurzel | | 11227 | Bash | EGDOC | | 11368 | Osqueryi | EGDOC | | 13 | CPUHP/0 | Wurzel | | 14 | CPUHP/1 | Wurzel | | 143 | Kintegrityd | Wurzel | | 144 | kblockd | Wurzel | | 145 | BLKCG_PUNT_BIO | Wurzel | | 146 | tpm_dev_wq | Wurzel | | 147 | ata_sff | Wurzel | […] | 9130 | Webinhalt | EGDOC | | 9298 | Webinhalt | EGDOC | | 9463 | gvfsd-metadata | EGDOC | | 9497 | GVFSD-Network | EGDOC | | 9518 | GVFSD-DNSSD | EGDOC | +-------+-------------------------------+------------------+
Kopieren Überwachung der Dateiintegrität (FIM)
Bis jetzt haben wir benutzt Osquery
über die interaktive Shell: Osqueryi
. Benutzen Fim
(Überwachung der Dateiintegrität), wir möchten die verwenden Osqueryd
Dämon stattdessen. Über die Konfigurationsdatei geben wir eine Liste der von uns überwachen wir überwachten Dateien an. Ereignisse wie Attributänderungen mit den angegebenen Dateien und Verzeichnissen werden in der aufgezeichnet Datei_Events
Tisch. Der Daemon führt nach einem bestimmten Zeitintervall eine Abfrage in dieser Tabelle aus und benachrichtigt in den Protokollen, wenn neue Datensätze gefunden werden. Sehen wir uns ein Konfigurationsbeispiel an.
Konfigurationsaufbau
Die Hauptkonfigurationsdatei für OSQuery ist /etc/osquery/osquery.Conf
. Die Datei existiert nicht standardmäßig, daher müssen wir sie erstellen. Die Konfiguration wird in angegeben JSON
Format. Angenommen, wir möchten alle Dateien und Verzeichnisse unter überwachen /usw
; So konfigurieren wir die Anwendung:
"Optionen": "disable_events": "false", "Zeitplan": "File_Events": "Query": "Select * aus File_Events;", "Interval": 300, "Datei_Paths": "etc": ["/etc/%%"],,,
Kopieren Lassen Sie uns die obige Konfiguration analysieren. Erstens in der Optionen
Abschnitt, wir setzen deaktivieren_events
Zu "FALSCH"
, Um Dateiereignisse zu aktivieren.
Danach haben wir das geschaffen Zeitplan
Abschnitt: In diesem Abschnitt können wir verschiedene genannte geplante Abfragen beschreiben und erstellen. In unserem Fall haben wir eine Abfrage erstellt, die alle Spalten aus dem auswählt Datei_Events
Tabelle, die alle ausgeführt werden soll 300
Sekunden (5 Minuten).
Nach der Planung der Abfrage haben wir die erstellt Datei_Paths
Abschnitt, in dem wir die zu überwachenden Dateien angegeben haben. In diesem Abschnitt stellt jeder Schlüssel den Namen eines zu überwachenden Dateien dar (eine Kategorie im OSQuery -Jargon). In diesem Fall bezieht sich auf die Schlüsselkompetenz auf eine Liste mit nur einem Eintrag, /usw/%%
.
Was zum %
Symbol steht für? Wenn Sie Dateipfade angeben, können wir Standard verwenden (Standard*
) oder SQL (%
) Platzhalter. Wenn eine einzelne Wildcard bereitgestellt wird, wählt sie alle Dateien und Verzeichnisse aus, die auf der angegebenen Ebene vorhanden sind. Wenn eine doppelte Wildcard bereitgestellt wird, wird alle Dateien und Ordner rekursiv ausgewählt. Zum Beispiel die /usw/%
Der Ausdruck entspricht allen Dateien und Ordnern eine Ebene unter /usw
, während /usw/%%
entspricht allen Dateien und Ordnern unter /usw
rekursiv.
Wenn wir müssen, können wir auch bestimmte Dateien von dem von uns bereitgestellten Pfad ausschließen, indem wir die ausschließen_Paths
Abschnitt in der Konfigurationsdatei. Im Abschnitt können wir nur in der definierten Kategorien verweisen Datei_Paths
Abschnitt ("etc" in diesem Fall). Wir geben die Liste der ausgeschlossenen Dateien an:
"exclude_paths": "etc": ["/etc/aliase"]
Kopieren Nur als Beispiel haben wir das ausgeschlossen /etc/aliase
Datei aus der Liste. So sieht unsere endgültige Konfiguration aus:
"Optionen": "disable_events": "false", "Zeitplan": "File_Events": "Query": "Select * aus File_Events;", "Intervall": 20, "Datei_Paths": "usw.": ["/etc/%%"], "exklued_paths": "etc": ["/etc/aliase"]
Kopieren Den Daemon starten
Mit unserer Konfiguration können wir das starten Osqueryd
Dämon:
$ sudo systemctl starten osqueryd
Um den Daemon automatisch beim Boot zu starten, müssen wir ausführen:
$ sudo systemctl aktivieren osqueyd
Sobald der Dämon ausgeführt wird, können wir unsere Konfiguration überprüfen. Genau zum Beispiel werden wir die Berechtigungen der Berechtigungen ändern /etc/fstab
Datei, sie von ändern 644
Zu 600
:
$ sudo chmod 600 /etc /fstab
Wir können nun überprüfen, ob die Änderung in die Datei aufgezeichnet wurde, indem Sie das lesen /var/log/osquery/osqueryd.Ergebnisse.Protokoll
Datei. Hier ist die letzte Zeile der Datei (verschönert):
"Name": "File_Events", "HostIdentifier": "Fingolfin", "Calendartime": "Mo 30. Dezember 19:57:31 2019 UTC", "Unixtime": 1577735851, "Epoch": "Counter": 0, "lognumericsAsnumbers": Falsch, "Spalten": "Aktion": "Attribute_Modified", "Atime": "1577735683", "Kategorie": "usw.", "CTime": "1577735841", "GID": "GID": ":": " 0 "," Hashed ":" 0 "," Inode ":" 262147 "," Md5 ":" "," Modus ":" 0600 "," Mtime ":" 1577371335 "," SHA1 ":" ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," SHA256 ":" "," Größe ":" 742 "," target_path ":"/etc/fstab "," Zeit ":" 1577735841 "," transaction_id ":" 0 "," uid ":" 0 ",, "Aktion": "hinzugefügt"
Kopieren Im obigen Protokoll können wir deutlich sehen, dass eine Attribute_Modified
Aktion (Zeile 10) trat auf dem auf Zielpfad
"/Etc/fstab" (Zeile 23), der Teil des "etc" ist Kategorie
(Zeile 12). Es ist wichtig zu bemerken, dass, wenn wir das abfragen Datei_Events
Tisch aus dem Osqueryi
Shell, wir werden keine Zeilen sehen, da die Osqueryd
Dämon, und Osqueryi
Nicht kommunizieren.
Schlussfolgerungen
In diesem Tutorial haben wir die grundlegenden Konzepte gesehen Osquery
Anwendung, die verschiedene Betriebssystemkonzepte mit tabellarischen Daten abstrahiert. Wir können mit der SQL -Syntax abfragen. Wir haben gesehen Osqueryi
Shell und schließlich, wie die Dateiüberwachung mithilfe der Dateiüberwachung eingerichtet wird Osqueryd
Dämon. Wir haben gerade die Oberfläche dessen, was die Anwendung tun kann, kratzt. Wie immer lautet der Rat, sich die Projektdokumentation für ein ausführlicheres Wissen anzusehen.
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Bestes Systemüberwachungstool für Linux
- Ubuntu 20.04 Systemüberwachung mit Conky -Widgets
- Ubuntu 22.04 Systemüberwachung mit Conky -Widgets
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Linux -Leistungsoptimierung: Tools und Techniken
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Dinge zu installieren auf Ubuntu 22.04
- So grep für Text in Bash -Skripten korrekt Grep
- Linux -Konfigurationsdateien: Top 30 am wichtigsten