GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer osquery sur Debian 10

osquery est un outil gratuit et open source développé par Facebook qui peut être utilisé pour interroger des informations relatives au système d'exploitation, notamment l'utilisation de la mémoire, les packages installés, les informations de processus, les utilisateurs de connexion, ports d'écoute et bien d'autres. Il peut être exécuté sur plusieurs systèmes d'exploitation, notamment Windows, Linux, FreeBSD et MacOS. C'est un outil très utile pour une variété de cas d'utilisation pour résoudre les problèmes de performances et de fonctionnement. Il est livré avec de nombreux outils qui vous aident à effectuer des analyses et une surveillance du système d'exploitation.

Dans ce tutoriel, nous allons apprendre à installer et à utiliser osquery sur Debian 10.

Prérequis

  • Un serveur exécutant Debian 10.
  • Un mot de passe root est configuré sur votre serveur.

Mise en route

Avant de commencer, c'est une bonne idée de mettre à jour le package de votre système vers la dernière version. Vous pouvez mettre à jour tous les packages avec la commande suivante :

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

Une fois tous les packages mis à jour, redémarrez votre système pour appliquer les modifications.

Installer osquery

Par défaut, osquery n'est pas disponible dans le référentiel par défaut de Debian 10. Vous devrez donc ajouter le référentiel osquery dans votre système.

Tout d'abord, téléchargez et ajoutez la clé GPG avec la commande suivante :

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

Ensuite, ajoutez le référentiel osquery avec la commande suivante :

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

Ensuite, mettez à jour le référentiel et installez osquery avec la commande suivante :

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

Une fois l'installation terminée, démarrez le service osquery avec la commande suivante :

osqueryctl start osqueryd

Vous pouvez également vérifier l'état d'osquery avec la commande suivante :

osqueryctl status osqueryd

Vous devriez voir le résultat suivant :

? 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

Travailler avec osquery

osquery est livré avec trois composants utiles osqueryi, osqueryd et osqueryctl. L'osqueryi est un shell interactif osquery et ne communique pas avec un démon. Vous pouvez utiliser le shell pour exécuter des requêtes et explorer l'état actuel de votre système d'exploitation. osqueryd est le démon de surveillance de l'hôte qui peut être utilisé pour planifier des requêtes et enregistrer les changements d'état du système d'exploitation. osqueryctl est un script d'aide pour tester la configuration.

Vous pouvez exécuter la commande suivante pour vous connecter au shell osquery :

osqueryi

Vous devriez obtenir le résultat suivant :

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

Ensuite, exécutez la commande .help pour voir toutes les options disponibles avec osquery :

osquery> .help

Vous devriez obtenir le résultat suivant :

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> 

De nombreuses tables sont disponibles pour les requêtes. Vous pouvez lister toutes les tables avec la commande suivante :

osquery> .table

Vous devriez obtenir le résultat suivant :

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

Vous pouvez trouver les différentes informations système en utilisant le tableau ci-dessus avec osquery.

Système de surveillance avec osquery

Vous pouvez surveiller l'utilisation de la mémoire, traiter les informations, l'espace disque, les utilisateurs de connexion et bien d'autres avec osquery.

Tout d'abord, lancez le shell osquery avec la commande suivante :

osqueryi

Ensuite, vous pouvez obtenir les informations sur le nom d'hôte de votre système, le cœur du processeur et la mémoire physique avec la commande suivante :

osquery> select hostname,cpu_physical_cores,physical_memory from system_info;

Vous devriez obtenir le résultat suivant :

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

Pour obtenir les informations sur le fichier ssh_config, exécutez la requête suivante :

osquery> select * from ssh_configs;

Vous devriez obtenir le résultat suivant :

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> 

Pour obtenir une liste de tous les utilisateurs de votre système, exécutez la requête suivante :

osquery> SELECT * FROM users;

Vous devriez obtenir le résultat suivant :

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

Si vous souhaitez répertorier tous les utilisateurs non système de votre système, exécutez la requête suivante :

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

Vous devriez obtenir le résultat suivant :

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

Pour obtenir la liste des utilisateurs actuellement connectés, exécutez la requête suivante :

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

Vous devriez obtenir le résultat suivant :

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

Pour afficher les informations sur la mémoire de votre système, exécutez la requête suivante :

osquery> select * from memory_info;

Vous devriez obtenir le résultat suivant :

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

Pour trouver la charge moyenne de votre système, exécutez la requête suivante :

osquery> select * from load_average;

Vous devriez obtenir le résultat suivant :

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

Pour obtenir une liste des cinq premiers packages de votre système, exécutez la requête suivante :

osquery> select * from deb_packages top limit 5;

Vous devriez obtenir le résultat suivant :

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

Pour obtenir des informations sur les processus en cours d'exécution dans votre système, exécutez la requête suivante :

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

Vous devriez obtenir le résultat suivant :

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

Pour trouver toutes les connexions précédentes, exécutez la requête suivante :

osquery> select * from last;

Vous devriez obtenir le résultat suivant :

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

Pour lister toutes les tâches planifiées par crontab, lancez la requête suivante :

osquery> select command, path from crontab ;

Vous devriez obtenir le résultat suivant :

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

Pour trouver tous les ports ouverts dans votre système, exécutez la requête suivante :

osquery> select * from listening_ports;

Vous devriez obtenir le résultat suivant :

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

Pour répertorier les 5 processus les plus actifs, exécutez la requête suivante :

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

Vous devriez obtenir le résultat suivant :

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

Conclusion

Dans le didacticiel ci-dessus, nous avons appris à installer et à utiliser osquery dans Debian 10. osquery est un outil très utile pour trouver des portes dérobées, des logiciels malveillants ou tout processus zombie dans votre système. Pour plus d'informations sur osquery, visitez la page de documentation d'osquery.


Debian
  1. Comment installer R sur Debian 9

  2. Comment installer R sur Debian 10

  3. Comment installer Apache ZooKeeper sur Debian 10

  4. Comment installer Ionic Framework sur Debian 10

  5. Comment installer WildFly sur Debian 11

Comment installer Go sur Debian 10

Comment installer LEMP dans Debian 7

Comment installer Odoo sur Debian 10

Comment installer OpenNebula sur Debian 10

Comment installer TeamViewer sur Debian 10

Comment installer Go sur Debian