Wie man Osquery unter Debian 10 installiert

osquery ist ein freies und Open-Source-Werkzeug, das von Facebook entwickelt wurde und zum Abfragen von betriebssystembezogenen Informationen verwendet werden kann, darunter Speicherverbrauch, installierte Pakete, Prozessinformationen, Login-Benutzer, Listening-Ports und viele mehr. Es kann auf verschiedenen Betriebssystemen ausgeführt werden, darunter Windows, Linux, FreeBSD und MacOS. Es ist ein sehr nützliches Werkzeug für eine Vielzahl von Anwendungsfällen zur Behebung von Leistungs- und Betriebsproblemen. Es wird mit vielen Werkzeugen geliefert, die Ihnen bei der Analyse und Überwachung des Betriebssystems helfen.

In diesem Tutorial werden wir lernen, wie man Osquery unter Debian 10 installiert und verwendet.

Voraussetzungen

  • Einen Server, auf dem Debian 10 läuft.
  • Auf Ihrem Server ist ein Root-Passwort konfiguriert.

Erste Schritte

Bevor Sie beginnen, ist es eine gute Idee, das Paket Ihres Systems auf die neueste Version zu aktualisieren. Sie können alle Pakete mit dem folgenden Befehl aktualisieren:

apt-get update -y
apt-get upgrade -y

Sobald alle Pakete aktualisiert sind, starten Sie Ihr System neu, um die Änderungen zu übernehmen.

Installieren von osquery

Standardmäßig ist Osquery im Standard-Repository von Debian 10 nicht verfügbar. Daher müssen Sie das Osquery-Repository in Ihrem System hinzufügen.

Laden Sie zunächst den GPG-Schlüssel herunter und fügen Sie ihn mit dem folgenden Befehl hinzu:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B

Fügen Sie dann das Osquery-Repository mit folgendem Befehl hinzu:

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

Aktualisieren Sie als nächstes das Repository und installieren Sie Osquery mit folgendem Befehl:

apt-get update -y
apt-get install osquery -y

Wenn die Installation beendet ist, starten Sie den Osquery-Dienst mit folgendem Befehl:

osqueryctl start osqueryd

Sie können den Status der Osquery auch mit dem folgenden Befehl überprüfen:

osqueryctl status osqueryd

Sie sollten die folgende Ausgabe sehen:

? osqueryd.service - The osquery Daemon
   Loaded: loaded (/lib/systemd/system/osqueryd.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 15:21:57 UTC; 6s ago
  Process: 25333 ExecStartPre=/bin/sh -c if [ ! -f $CONFIG_FILE ]; then echo {} > $CONFIG_FILE; fi (code=exited, status=0/SUCCESS)
  Process: 25334 ExecStartPre=/bin/sh -c if [ ! -f $FLAG_FILE ]; then touch $FLAG_FILE; fi (code=exited, status=0/SUCCESS)
  Process: 25336 ExecStartPre=/bin/sh -c if [ -f $LOCAL_PIDFILE ]; then mv $LOCAL_PIDFILE $PIDFILE; fi (code=exited, status=0/SUCCESS)
 Main PID: 25337 (osqueryd)
    Tasks: 13 (limit: 4701)
   Memory: 6.4M
   CGroup: /system.slice/osqueryd.service
           ??25337 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf
           ??25339 /usr/bin/osqueryd

Apr 19 15:21:57 debian10 systemd[1]: Starting The osquery Daemon...
Apr 19 15:21:57 debian10 systemd[1]: Started The osquery Daemon.
Apr 19 15:21:57 debian10 osqueryd[25337]: osqueryd started [version=4.2.0]
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261158 25339 events.cpp:863] Event publisher not enabled: auditeventpublisher: Publish
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261485 25339 events.cpp:863] Event publisher not enabled: syslog: Publisher disabled v

Arbeiten mit Osquery

osquery kommt mit drei nützlichen Komponenten osqueryi, osqueryd und osqueryctl. osqueryi ist eine interaktive osquery-Shell und kommuniziert nicht mit einem Dämon. Sie können die Shell verwenden, um Abfragen auszuführen und den aktuellen Zustand Ihres Betriebssystems zu erkunden. osqueryd ist der Host-Überwachungs-Daemon, der zur Planung von Abfragen und zur Aufzeichnung von Zustandsänderungen des Betriebssystems verwendet werden kann. osqueryctl ist ein Hilfsskript zum Testen der Konfiguration.

Sie können den folgenden Befehl ausführen, um sich mit der Osquery-Shell zu verbinden:

osqueryi

Sie sollten folgende Ausgabe erhalten: Sie sollten folgende Ausgabe erhalten

Using a virtual database. Need help, type '.help'

Führen Sie als Nächstes den Befehl .help aus, um alle mit Osquery verfügbaren Optionen anzuzeigen:

osquery> .help

Sie sollten die folgende Ausgabe erhalten:

Welcome to the osquery shell. Please explore your OS!
You are connected to a transient 'in-memory' virtual database.

.all [TABLE]     Select all from a table
.bail ON|OFF     Stop after hitting an error
.echo ON|OFF     Turn command echo on or off
.exit            Exit this program
.features        List osquery's features and their statuses
.headers ON|OFF  Turn display of headers on or off
.help            Show this message
.mode MODE       Set output mode where MODE is one of:
                   csv      Comma-separated values
                   column   Left-aligned columns see .width
                   line     One value per line
                   list     Values delimited by .separator string
                   pretty   Pretty printed SQL results (default)
.nullvalue STR   Use STRING in place of NULL values
.print STR...    Print literal STRING
.quit            Exit this program
.schema [TABLE]  Show the CREATE statements
.separator STR   Change separator used by output mode
.socket          Show the osquery extensions socket path
.show            Show the current values for various settings
.summary         Alias for the show meta command
.tables [TABLE]  List names of tables
.types [SQL]     Show result of getQueryColumns for the given query
.width [NUM1]+   Set column widths for "column" mode
.timer ON|OFF      Turn the CPU timer measurement on or off
osquery> 

Es sind viele Tabellen zur Abfrage verfügbar. Sie können alle Tabellen mit dem folgenden Befehl auflisten:

osquery> .table

Sie sollten die folgende Ausgabe erhalten:

  => acpi_tables
  => apparmor_profiles
  => apt_sources
  => arp_cache
  => atom_packages
  => augeas
  => authorized_keys
  => block_devices
  => carbon_black_info
  => carves
  => chrome_extensions
  => cpu_time
  => cpuid
  => crontab
  => curl
  => curl_certificate
  => deb_packages
  => device_file
  => device_hash
  => device_partitions
  => disk_encryption
  => dns_resolvers
  => docker_container_labels
  => docker_container_mounts

Sie können die verschiedenen Systeminformationen über die obige Tabelle mit osquery finden.

System mit osquery überwachen

Mit osquery können Sie Speicherverbrauch, Prozessinformationen, Plattenplatz, Login-Benutzer und vieles mehr überwachen.

Starten Sie zunächst die osquery-Shell mit dem folgenden Befehl:

osqueryi

Als nächstes können Sie die Informationen über den Hostnamen Ihres Systems, den CPU-Kern und den physischen Speicher mit dem folgenden Befehl abrufen:

osquery> select hostname,cpu_physical_cores,physical_memory from system_info;

Sie sollten die folgende Ausgabe erhalten:

+------------+--------------------+-----------------+
| hostname   | cpu_physical_cores | physical_memory |
+------------+--------------------+-----------------+
| debian10   | 1                  | 1032937472      |
+------------+--------------------+-----------------+

Um die Informationen über die ssh_config-Datei zu erhalten, führen Sie die folgende Abfrage aus:

osquery> select * from ssh_configs;

Sie sollten die folgende Ausgabe erhalten: Sie sollten die folgende Ausgabe erhalten:

W0419 15:47:17.043509 25397 virtual_table.cpp:959] The ssh_configs table returns data based on the current user by default, consider JOINing against the users table
W0419 15:47:17.043740 25397 virtual_table.cpp:974] Please see the table documentation: https://osquery.io/schema/#ssh_configs
+-----+--------+--------------------------+---------------------+
| uid | block  | option                   | ssh_config_file     |
+-----+--------+--------------------------+---------------------+
| 0   | host * | sendenv lang lc_*        | /etc/ssh/ssh_config |
| 0   | host * | hashknownhosts yes       | /etc/ssh/ssh_config |
| 0   | host * | gssapiauthentication yes | /etc/ssh/ssh_config |
+-----+--------+--------------------------+---------------------+
osquery> 

Um eine Liste aller Benutzer in Ihrem System zu erhalten, führen Sie die folgende Abfrage aus:

osquery> SELECT * FROM users;

Sie sollten die folgende Ausgabe erhalten:

+-------+-------+------------+------------+-----------------+------------------------------------+----------------------+-------------------+------+
| uid   | gid   | uid_signed | gid_signed | username        | description                        | directory            | shell             | uuid |
+-------+-------+------------+------------+-----------------+------------------------------------+----------------------+-------------------+------+
| 0     | 0     | 0          | 0          | root            | root                               | /root                | /bin/bash         |      |
| 1     | 1     | 1          | 1          | daemon          | daemon                             | /usr/sbin            | /usr/sbin/nologin |      |
| 2     | 2     | 2          | 2          | bin             | bin                                | /bin                 | /usr/sbin/nologin |      |
| 3     | 3     | 3          | 3          | sys             | sys                                | /dev                 | /usr/sbin/nologin |      |
| 4     | 65534 | 4          | 65534      | sync            | sync                               | /bin                 | /bin/sync         |      |
| 5     | 60    | 5          | 60         | games           | games                              | /usr/games           | /usr/sbin/nologin |      |
| 6     | 12    | 6          | 12         | man             | man                                | /var/cache/man       | /usr/sbin/nologin |      |
| 7     | 7     | 7          | 7          | lp              | lp                                 | /var/spool/lpd       | /usr/sbin/nologin |      |

Wenn Sie alle Nicht-Systembenutzer in Ihrem System auflisten wollen, führen Sie die folgende Abfrage aus:

osquery> select * from users where uid <= 1000 limit 3;

Sie sollten die folgende Ausgabe erhalten:

+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+
| uid | gid | uid_signed | gid_signed | username | description | directory | shell             | uuid |
+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+
| 0   | 0   | 0          | 0          | root     | root        | /root     | /bin/bash         |      |
| 1   | 1   | 1          | 1          | daemon   | daemon      | /usr/sbin | /usr/sbin/nologin |      |
| 2   | 2   | 2          | 2          | bin      | bin         | /bin      | /usr/sbin/nologin |      |
+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+

Um die Liste der aktuell angemeldeten Benutzer zu erhalten, führen Sie die folgende Abfrage aus:

osquery> select * from logged_in_users where type = 'user';

Sie sollten die folgende Ausgabe erhalten: Sie sollten die folgende Ausgabe erhalten:

+------+------+-------+--------------+------------+-------+
| type | user | tty   | host         | time       | pid   |
+------+------+-------+--------------+------------+-------+
| user | root | pts/0 | 27.61.217.59 | 1587309538 | 19279 |
| user | root | pts/1 | 27.61.217.59 | 1587310737 | 25378 |
| user | root | pts/2 | 27.61.217.59 | 1587310997 | 25394 |
+------+------+-------+--------------+------------+-------+

Um die Speicherinformationen Ihres Systems anzuzeigen, führen Sie die folgende Abfrage aus:

osquery> select * from memory_info;

Sie sollten die folgende Ausgabe erhalten:

+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
| memory_total | memory_free | buffers  | cached     | swap_cached | active    | inactive  | swap_total | swap_free |
+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
| 4138455040   | 2407211008  | 79745024 | 1384751104 | 0           | 556371968 | 954744832 | 0          | 0         |
+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
osquery> 

Um die durchschnittliche Auslastung Ihres Systems zu ermitteln, führen Sie die folgende Abfrage aus:

osquery> select * from load_average;

Sie sollten die folgende Ausgabe erhalten:

+--------+----------+
| period | average  |
+--------+----------+
| 1m     | 0.000000 |
| 5m     | 0.000000 |
| 15m    | 0.000000 |
+--------+----------+
osquery> 

Um eine Liste der ersten fünf Pakete in Ihrem System zu erhalten, führen Sie die folgende Abfrage aus:

osquery> select * from deb_packages top limit 5;

Sie sollten die folgende Ausgabe erhalten:

+-------------------+------------+--------------+------+-------+----------+
| name              | version    | source       | size | arch  | revision |
+-------------------+------------+--------------+------+-------+----------+
| acpi-support-base | 0.142-8    | acpi-support | 43   | all   | 8        |
| acpid             | 1:2.0.31-1 |              | 146  | amd64 | 1        |
| adduser           | 3.118      |              | 849  | all   |          |
| apparmor          | 2.13.2-10  |              | 1833 | amd64 | 10       |
| apt               | 1.8.2      |              | 4064 | amd64 |          |
+-------------------+------------+--------------+------+-------+----------+

Um Informationen über laufende Prozesse in Ihrem System zu erhalten, führen Sie die folgende Abfrage aus:

osquery> SELECT DISTINCT processes.name, listening_ports.port, processes.pid FROM listening_ports JOIN processes USING (pid) WHERE listening_ports.address = '0.0.0.0';

Sie sollten die folgende Ausgabe erhalten:

+------+------+-----+
| name | port | pid |
+------+------+-----+
| sshd | 22   | 729 |
+------+------+-----+

Um alle vorherigen Anmeldungen zu finden, führen Sie die folgende Abfrage aus:

osquery> select * from last;

Sie sollten folgende Ausgabe erhalten: Sie sollten folgende Ausgabe erhalten:

+----------+-------+-------+------+------------+--------------+
| username | tty   | pid   | type | time       | host         |
+----------+-------+-------+------+------------+--------------+
| root     | pts/0 | 1448  | 7    | 1587365277 | 27.61.217.41 |
| root     | pts/1 | 13392 | 7    | 1587368569 | 27.61.217.41 |
|          | pts/0 | 1004  | 8    | 1587376329 |              |
|          | pts/1 | 13321 | 8    | 1587376821 |              |
|          | ttyS0 | 748   | 8    | 1587465619 |              |
|          | tty1  | 749   | 8    | 1587465619 |              |
| root     | pts/0 | 1057  | 7    | 1587465664 | 27.61.217.9  |
| root     | pts/1 | 1375  | 7    | 1587465846 | 27.61.217.9  |
+----------+-------+-------+------+------------+--------------+

Um alle von crontab geplanten Jobs aufzulisten, führen Sie die folgende Abfrage aus:

osquery> select command, path from crontab ;

Sie sollten die folgende Ausgabe erhalten: Ein Server, auf dem Debian 10 läuft:

+----------------------------------------------------------------------------------------------------------------------------------------+-------------------+
| command                                                                                                                                | path              |
+----------------------------------------------------------------------------------------------------------------------------------------+-------------------+
| root cd / && run-parts --report /etc/cron.hourly                                                                                       | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )                                                       | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )                                                      | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )                                                     | /etc/crontab      |
| root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi | /etc/cron.d/mdadm |

Um alle offenen Ports in Ihrem System zu finden, führen Sie die folgende Abfrage aus:

osquery> select * from listening_ports;

Sie sollten die folgende Ausgabe erhalten: Sie sollten die folgende Ausgabe erhalten:

+------+------+----------+--------+------------+-----+--------+----------------------------------------+---------------+
| pid  | port | protocol | family | address    | fd  | socket | path                                   | net_namespace |
+------+------+----------+--------+------------+-----+--------+----------------------------------------+---------------+
| 444  | 53   | 6        | 2      | 127.0.0.53 | 13  | 14910  |                                        | 4026531993    |
| 729  | 22   | 6        | 2      | 0.0.0.0    | 3   | 16940  |                                        | 4026531993    |
| 664  | 3306 | 6        | 2      | 127.0.0.1  | 69  | 15824  |                                        | 4026531993    |
| 544  | 6379 | 6        | 2      | 127.0.0.1  | 6   | 15472  |                                        | 4026531993    |
| 729  | 22   | 6        | 10     | ::         | 4   | 16951  |                                        | 4026531993    |
| 544  | 6379 | 6        | 10     | ::1        | 7   | 15473  |                                        | 4026531993    |
| 759  | 80   | 6        | 10     | ::         | 4   | 17009  |                                        | 4026531993    |
| 444  | 53   | 17       | 2      | 127.0.0.53 | 12  | 14909  |                                        | 4026531993    |
| 405  | 58   | 255      | 10     | ::         | 15  | 16039  |                                        | 4026531993    |

Um die Top 5 der aktivsten Prozesse aufzulisten, führen Sie die folgende Abfrage aus:

osquery> select count(pid) as total, name from processes group by name order by total desc limit 5;

Sie sollten die folgende Ausgabe erhalten:

+-------+---------+
| total | name    |
+-------+---------+
| 4     | sshd    |
| 3     | apache2 |
| 2     | systemd |
| 2     | bash    |
| 2     | agetty  |
+-------+---------+

Schlußfolgerung

In der obigen Anleitung haben wir gelernt, wie man Osquery in Debian 10 installiert und verwendet. osquery ist ein sehr nÃ?tzliches Werkzeug, um jegliche HintertÃ?ren, Malware oder jeden Zombie-Prozess in Ihrem System zu finden. Für weitere Informationen über Osquery besuchen Sie die Osquery-Dokumentationsseite.

Das könnte Dich auch interessieren …