GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So überwachen Sie die Sicherheit von Linux-Servern mit Osquery

Osquery ist ein von Facebook entwickeltes Open-Source-Tool zur Überwachung von Sicherheitsbedrohungen. Es wird zum Abfragen von Systeminformationen verwendet, einschließlich Systemversion, Kernelinformationen, laufende Prozesse, Speicherinformationen, Überwachungsports, Anmeldebenutzer und mehr. Osquery hilft Systemadministratoren beim Schreiben von SQL-Abfragen, um verschiedene Arten von Bedrohungen zu identifizieren, zu untersuchen und zu beseitigen. Es unterstützt mehrere Betriebssysteme, darunter Windows, Linux, FreeBSD und macOS.

In diesem Beitrag erklären wir, wie man Osquery unter Ubuntu 20.04 installiert und verwendet.

Voraussetzungen

  • Ein Ubuntu 20.04-Server auf der Atlantic.Net Cloud Platform
  • Ein auf Ihrem Server konfiguriertes Root-Passwort

Schritt 1 – Atlantic.Net Cloud-Server erstellen

Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 20.04 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.

Sobald Sie sich bei Ihrem Ubuntu 20.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.

apt-get update -y

Schritt 2 – Osquery installieren

Installieren Sie zuerst die erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt-get install gnupg2 software-properties-common wget unzip -y

Fügen Sie als Nächstes den Osquery-GPG-Schlüssel mit dem folgenden Befehl hinzu:

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY

Als nächstes fügen Sie das Osquery-Repository mit dem folgenden Befehl zu APT hinzu:

add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'

Sobald das Repository hinzugefügt wurde, aktualisieren Sie das Repository und installieren Sie Osquery mit dem folgenden Befehl:

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

Schritt 3 – Verbindung zur Osquery-Konsole herstellen

Osquery bietet eine interaktive Shell zum Ausführen von Abfragen und Erkunden des aktuellen Zustands Ihres Betriebssystems.

Sie können sich mit dem folgenden Befehl mit der Osquery-Shell verbinden:

osqueryi

Sobald Sie verbunden sind, sollten Sie die folgende Ausgabe erhalten:

Using a virtual database. Need help, type '.help'
osquery>
ein

Zeigen Sie als Nächstes die Standardeinstellungen von Osquery mit dem folgenden Befehl an:

osquery> .show

Sie sollten die folgende Ausgabe sehen:

osquery - being built, with love.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
osquery 4.9.0
using SQLite 3.35.5

General settings:
     Flagfile: 
       Config: filesystem (/etc/osquery/osquery.conf)
       Logger: filesystem (/var/log/osquery/)
  Distributed: tls
     Database: ephemeral
   Extensions: core
       Socket: /root/.osquery/shell.em

Shell settings:
         echo: off
      headers: on
         mode: pretty
    nullvalue: ""
       output: stdout
    separator: "|"
        width: 

Non-default flags/options:
  database_path: /root/.osquery/shell.db
  disable_database: true
  disable_events: true
  disable_logging: true
  disable_watchdog: true
  extensions_socket: /root/.osquery/shell.em
  hash_delay: 0
  logtostderr: true
  stderrthreshold: 0

Osquery hat viele Tabellen, die für Abfragen verfügbar sind. Sie können sie mit dem folgenden Befehl auflisten:

osquery> .tables

Beispielausgabe:

  => acpi_tables
  => apparmor_events
  => apparmor_profiles
  => apt_sources
  => arp_cache
  => atom_packages
  => augeas
  => authorized_keys
  => azure_instance_metadata
  => azure_instance_tags
  => block_devices
  => bpf_process_events
  => bpf_socket_events
  => carbon_black_info
  => carves
  => chrome_extension_content_scripts
  => chrome_extensions
  => cpu_time
  => cpuid
  => crontab
  => curl
  => curl_certificate
  => deb_packages
  => device_file
  => device_hash
  => device_partitions
  => disk_encryption
  => dns_resolvers
  => docker_container_fs_changes
  => docker_container_labels
  => docker_container_mounts
  => docker_container_networks
  => docker_container_ports 

Osquery hat mehrere Modi, um die Abfrageausgabe anzuzeigen. Hier verwenden wir den Zeilenmodus, um die Ausgabe anzuzeigen.

Führen Sie den folgenden Befehl aus, um den Zeilenmodus festzulegen:

osquery> .mode line

Schritt 4 – Verwendung von Osquery

Um Informationen über Ihr laufendes Betriebssystem zu erhalten, führen Sie Folgendes aus:

osquery> SELECT * FROM system_info;

Beispielausgabe:

          hostname = ubuntu2004
              uuid = a83cffe2-50f4-4fea-9ef4-423853fdc122
          cpu_type = x86_64
       cpu_subtype = 6
         cpu_brand = QEMU Virtual CPU version 2.5+
cpu_physical_cores = 1
 cpu_logical_cores = 1
     cpu_microcode = 0x1
   physical_memory = 2084278272
   hardware_vendor = QEMU
    hardware_model = Standard PC (i440FX + PIIX, 1996)
  hardware_version = pc-i440fx-bionic
   hardware_serial = 
      board_vendor = 
       board_model = 
     board_version = 
      board_serial = 
     computer_name = ubuntu2004
    local_hostname = ubuntu2004

Um die Ausgabe der Systeminformationen zu filtern, führen Sie Folgendes aus:

osquery> SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

Beispielausgabe:

       hostname = ubuntu2004
       cpu_type = x86_64
physical_memory = 2084278272
hardware_vendor = QEMU
 hardware_model = Standard PC (i440FX + PIIX, 1996)

Um Ihre Betriebssystemversion anzuzeigen, führen Sie Folgendes aus:

osquery> SELECT * FROM os_version;

Beispielausgabe:

         name = Ubuntu
      version = 20.04 LTS (Focal Fossa)
        major = 20
        minor = 4
        patch = 0
        build = 
     platform = ubuntu
platform_like = debian
     codename = focal
         arch = x86_64

Um Ihre Kernel-Informationen anzuzeigen, führen Sie Folgendes aus:

osquery> SELECT * FROM kernel_info;

Beispielausgabe:

  version = 5.4.0-29-generic
arguments = ro net.ifnames=0 biosdevname=0 console=ttyS0 console=tty0
     path = /boot/vmlinuz-5.4.0-29-generic
   device = UUID=29a0b164-1ba1-45a7-b23a-cdb98f23edbc

Führen Sie Folgendes aus, um alle Listening-Ports mit dem Dienstnamen und der PID anzuzeigen:

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';

Beispielausgabe:

 name = unbound
 port = 53
  pid = 3407

 name = sshd
 port = 22
  pid = 649

 name = unbound
 port = 953
  pid = 3407

 name = darkstat
 port = 666
  pid = 6100

 name = darkstat
 port = 667
  pid = 6109

 name = apt-cacher-ng
 port = 3142
  pid = 4071

 name = ntpd
 port = 123
  pid = 483

Um Informationen für das Apache-Paket anzuzeigen, führen Sie Folgendes aus:

osquery> SELECT name, version FROM deb_packages WHERE name="apache2";

Beispielausgabe:

+---------+-------------------+
| name    | version           |
+---------+-------------------+
| apache2 | 2.4.41-4ubuntu3.4 |
+---------+-------------------+

Um Informationen zum Systemspeicher anzuzeigen, führen Sie Folgendes aus:

osquery> SELECT * FROM memory_info;

Beispielausgabe:

+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
| memory_total | memory_free | buffers  | cached    | swap_cached | active    | inactive  | swap_total | swap_free |
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
| 2084278272   | 1358233600  | 44519424 | 520896512 | 0           | 406622208 | 222449664 | 495411200  | 495411200 |
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+

Um Informationen zu allen Netzwerkschnittstellen anzuzeigen, führen Sie Folgendes aus:

osquery> SELECT * FROM interface_addresses;

Beispielausgabe:

+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
| interface | address                       | mask                                    | broadcast     | point_to_point | type    |
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
| lo        | 127.0.0.1                     | 255.0.0.0                               |               | 127.0.0.1      | unknown |
| eth0      | 69.87.221.220                 | 255.255.255.0                           | 69.87.221.255 |                | unknown |
| lo        | ::1                           | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff |               |                | unknown |
| eth0      | fe80::200:45ff:fe57:dddc%eth0 | ffff:ffff:ffff:ffff::                   |               |                | unknown |
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+

Um die Systemverfügbarkeit zu überprüfen, führen Sie Folgendes aus:

osquery> SELECT * FROM uptime;

Beispielausgabe:

+------+-------+---------+---------+---------------+
| days | hours | minutes | seconds | total_seconds |
+------+-------+---------+---------+---------------+
| 0    | 1     | 55      | 5       | 6905          |
+------+-------+---------+---------+---------------+

Um alle Benutzer aufzulisten, deren UID größer als 1000 ist, führen Sie Folgendes aus:

osquery> SELECT * FROM users WHERE uid>=1000;

Beispielausgabe:

+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
| uid   | gid   | uid_signed | gid_signed | username | description | directory    | shell             | uuid |
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
| 65534 | 65534 | 65534      | 65534      | nobody   | nobody      | /nonexistent | /usr/sbin/nologin |      |
| 65534 | 65534 | 65534      | 65534      | nobody   | nobody      | /            | /usr/sbin/nologin |      |
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+

Führen Sie Folgendes aus, um die zuletzt angemeldeten Benutzer zu überprüfen:

osquery> SELECT * FROM last;

Beispielausgabe:

+----------+-------+------+------+------------+-----------------+
| username | tty   | pid  | type | time       | host            |
+----------+-------+------+------+------------+-----------------+
| root     | pts/0 | 1013 | 7    | 1629008887 | 106.213.193.155 |
| root     | pts/1 | 3372 | 7    | 1629010656 | 106.213.193.155 |
| root     | pts/2 | 4158 | 7    | 1629013021 | 106.213.193.155 |
+----------+-------+------+------+------------+-----------------+

Um alle angemeldeten Benutzer anzuzeigen, führen Sie Folgendes aus:

osquery> SELECT * FROM logged_in_users;

Beispielausgabe:

+-----------+----------+------------+------------------+------------+------+
| type      | user     | tty        | host             | time       | pid  |
+-----------+----------+------------+------------------+------------+------+
| boot_time | reboot   | ~          | 5.4.0-29-generic | 1629008369 | 0    |
| init      |          | /dev/tty1  |                  | 1629008378 | 491  |
| init      |          | /dev/ttyS0 |                  | 1629008378 | 484  |
| login     | LOGIN    | ttyS0      |                  | 1629008378 | 484  |
| login     | LOGIN    | tty1       |                  | 1629008378 | 491  |
| runlevel  | runlevel | ~          | 5.4.0-29-generic | 1629008383 | 53   |
| user      | root     | pts/0      | 106.213.193.155  | 1629008887 | 1013 |
| user      | root     | pts/1      | 106.213.193.155  | 1629010656 | 3372 |
| user      | root     | pts/2      | 106.213.193.155  | 1629013021 | 4158 |
+-----------+----------+------------+------------------+------------+------+

Schlussfolgerung

In der obigen Anleitung haben wir erklärt, wie man Osquery installiert und verwendet, um Daten vom Betriebssystem abzurufen, indem man SQL-basierte Abfragen ausführt. Es ist ein sehr nützliches und benutzerfreundliches Tool, um Backdoors, Malware, Zombie-Prozesse und mehr zu finden. Beginnen Sie noch heute mit Osquery auf Ihrem VPS von Atlantic.Net!


Linux
  1. 5 Tipps für den Einstieg in die Linux-Serversicherheit

  2. So überwachen Sie die Linux-Systemleistung mit Sysstat

  3. Überwachen Sie Linux-Server mit Prometheus und Grafana

  4. Wie überwache ich die Netzwerknutzung mit nload unter Linux?

  5. So richten Sie einen Linux-Server als Router mit NAT ein

So überwachen Sie Linux-Server mit CloudStats

So überwachen Sie die Netzwerknutzung mit nload unter Linux

So verwalten Sie einen Linux-Server mit SSH aus der Ferne

So überwachen Sie Ihre Linux-Server mit Checkmk

So überwachen Sie den Zustand von Linux-Servern mit Befehlszeilentools

So überprüfen Sie die VPS-Serverparameter mit dem Linux-Befehl