GNU/Linux >> Tutoriels Linux >  >> Linux

Comment surveiller la sécurité du serveur Linux avec Osquery

Osquery est un outil open source de surveillance des menaces de sécurité développé par Facebook. Il est utilisé pour interroger les informations système, notamment la version du système, les informations sur le noyau, les processus en cours d'exécution, les informations sur la mémoire, les ports d'écoute, les utilisateurs de connexion, etc. Osquery aide les administrateurs système à écrire des requêtes SQL pour identifier, sonder et éliminer divers types de menaces. Il prend en charge plusieurs systèmes d'exploitation, dont Windows, Linux, FreeBSD et macOS.

Dans cet article, nous expliquerons comment installer et utiliser Osquery sur Ubuntu 20.04.

Prérequis

  • Un serveur Ubuntu 20.04 sur la plate-forme cloud Atlantic.Net
  • Un mot de passe root configuré sur votre serveur

Étape 1 - Créer un serveur cloud Atlantic.Net

Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 20.04 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.

Une fois que vous êtes connecté à votre serveur Ubuntu 20.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.

apt-get update -y

Étape 2 - Installer Osquery

Tout d'abord, installez les dépendances requises à l'aide de la commande suivante :

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

Ensuite, ajoutez la clé Osquery GPG avec la commande suivante :

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

Ensuite, ajoutez le référentiel Osquery à APT à l'aide de la commande suivante :

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

Une fois le référentiel ajouté, mettez à jour le référentiel et installez Osquery avec la commande suivante :

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

Étape 3 - Connectez-vous à la console Osquery

Osquery fournit un shell interactif pour exécuter des requêtes et explorer l'état actuel de votre système d'exploitation.

Vous pouvez vous connecter au shell Osquery en utilisant la commande suivante :

osqueryi

Une fois connecté, vous devriez obtenir le résultat suivant :

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

Ensuite, affichez les paramètres par défaut d'Osquery à l'aide de la commande suivante :

osquery> .show

Vous devriez voir le résultat suivant :

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 a beaucoup de tables disponibles pour la requête. Vous pouvez les lister avec la commande suivante :

osquery> .tables

Exemple de sortie :

  => 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 a plusieurs modes pour afficher la sortie de la requête. Ici, nous allons utiliser le mode ligne pour afficher la sortie.

Pour définir le mode ligne, exécutez la commande suivante :

osquery> .mode line

Étape 4 - Comment utiliser Osquery

Pour obtenir des informations sur votre système d'exploitation en cours d'exécution, exécutez :

osquery> SELECT * FROM system_info;

Exemple de sortie :

          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

Pour filtrer la sortie des informations système, exécutez :

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

Exemple de sortie :

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

Pour afficher la version de votre système d'exploitation, exécutez :

osquery> SELECT * FROM os_version;

Exemple de sortie :

         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

Pour afficher les informations de votre noyau, exécutez :

osquery> SELECT * FROM kernel_info;

Exemple de sortie :

  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

Pour afficher tous les ports d'écoute avec le nom du service et le PID, exécutez :

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

Exemple de sortie :

 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

Pour afficher les informations du package Apache, exécutez :

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

Exemple de sortie :

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

Pour afficher les informations sur la mémoire système, exécutez :

osquery> SELECT * FROM memory_info;

Exemple de sortie :

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

Pour afficher les informations de toutes les interfaces réseau, exécutez :

osquery> SELECT * FROM interface_addresses;

Exemple de sortie :

+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
| 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 |
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+

Pour vérifier la disponibilité du système, exécutez :

osquery> SELECT * FROM uptime;

Exemple de sortie :

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

Pour répertorier tous les utilisateurs dont l'UID est supérieur à 1 000, exécutez :

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

Exemple de sortie :

+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
| 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 |      |
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+

Pour vérifier les derniers utilisateurs connectés, exécutez :

osquery> SELECT * FROM last;

Exemple de sortie :

+----------+-------+------+------+------------+-----------------+
| 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 |
+----------+-------+------+------+------------+-----------------+

Pour afficher tous les utilisateurs connectés, exécutez :

osquery> SELECT * FROM logged_in_users;

Exemple de sortie :

+-----------+----------+------------+------------------+------------+------+
| 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 |
+-----------+----------+------------+------------------+------------+------+

Conclusion

Dans le guide ci-dessus, nous avons expliqué comment installer et utiliser Osquery pour obtenir des données du système d'exploitation en exécutant des requêtes basées sur SQL. C'est un outil très utile et facile à utiliser pour trouver des portes dérobées, des logiciels malveillants, des processus zombies, etc. Commencez dès aujourd'hui avec Osquery sur votre VPS d'Atlantic.Net !


Linux
  1. Comment surveiller votre serveur Linux ?

  2. 5 conseils pour démarrer avec la sécurité des serveurs Linux

  3. Comment surveiller les performances du système Linux avec Sysstat

  4. Comment travailler avec le client SFTP sous Linux - 10 commandes sftp

  5. Comment puis-je enregistrer le serveur Linux avec le serveur DNS Windows

Comment surveiller les serveurs Linux à l'aide de CloudStats

Comment surveiller l'utilisation du réseau avec nload sous Linux

Comment gérer à distance un serveur Linux avec SSH

Comment surveiller vos serveurs Linux avec Checkmk

Comment surveiller la santé du serveur Linux avec des outils de ligne de commande

Comment vérifier les paramètres du serveur VPS avec la commande Linux