Monitorare il sistema con osquery

Mattepuffo's logo
Monitorare il sistema con osquery

Monitorare il sistema con osquery

osquery è un ottimo software, grauito e multipiattaforma, creato da Facebook per interrogare e monitorare il sistema come se fosse un database.

Infatti useremo delle istruzioni SQL per interrogare qualsiasi aspetto del sistema.

E' disponibile per Linux, macOS, Windows e FreeBSD; e si compone di due parti:

  • osqueryi -> la shella interattiva
  • osqueryd -> un demone di monitoraggio che permette di schedulare queries e controllare eventuali cambiamenti

Noi vedremo solo il primo; innanzitutto scaricate il pacchetto adeguato al vostro sistema alla pagina di download.

Io l'ho testato su Ubuntu scaricando il pacchetto per Debian.

Una volta installato aprite un terminale e digitate questo comando:

$ osqueryi

Si avvierà la shell; qualcosa di familiare a chi ha usato i database.

Proviamo qualche query:

SELECT DISTINCT process.name, listening.port, process.pid 
FROM processes AS process 
JOIN listening_ports AS listening ON process.pid = listening.pid;

+---------------+------+-------+
| name          | port | pid   |
+---------------+------+-------+
| xfce4-session | 0    | 2116  |
| systemd       | 0    | 1874  |
| dbus-daemon   | 0    | 1979  |
| pulseaudio    | 0    | 2255  |
| osqueryi      | 0    | 10657 |
| dbus-daemon   | 0    | 2177  |
| gvfsd-trash   | 0    | 2521  |
+---------------+------+-------+

Come vedete, si possono addirittura eseguire JOIN; qui abbiamo interrogato i processi, ma le possibilità sono praticamente infinite:

SELECT device, device_alias, path, type
FROM mounts;
+-------------+-----------------------+---------------------------------+-----------------+
| device      | device_alias          | path                            | type            |
+-------------+-----------------------+---------------------------------+-----------------+
| sysfs       | sysfs                 | /sys                            | sysfs           |
| proc        | proc                  | /proc                           | proc            |
| udev        | udev                  | /dev                            | devtmpfs        |
| devpts      | devpts                | /dev/pts                        | devpts          |
| tmpfs       | tmpfs                 | /run                            | tmpfs           |
| /dev/sda1   | /dev/sda1             | /                               | ext4            |
| securityfs  | securityfs            | /sys/kernel/security            | securityfs      |
| tmpfs       | tmpfs                 | /dev/shm                        | tmpfs           |
| tmpfs       | tmpfs                 | /run/lock                       | tmpfs           |
| tmpfs       | tmpfs                 | /sys/fs/cgroup                  | tmpfs           |
| cgroup2     | cgroup2               | /sys/fs/cgroup/unified          | cgroup2         |
| cgroup      | cgroup                | /sys/fs/cgroup/systemd          | cgroup          |
| pstore      | pstore                | /sys/fs/pstore                  | pstore          |
| bpf         | bpf                   | /sys/fs/bpf                     | bpf             |
| cgroup      | cgroup                | /sys/fs/cgroup/hugetlb          | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/net_cls,net_prio | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/perf_event       | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/memory           | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/cpuset           | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/freezer          | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/blkio            | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/rdma             | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/cpu,cpuacct      | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/devices          | cgroup          |
| cgroup      | cgroup                | /sys/fs/cgroup/pids             | cgroup          |
| systemd-1   | systemd-1             | /proc/sys/fs/binfmt_misc        | autofs          |
| hugetlbfs   | hugetlbfs             | /dev/hugepages                  | hugetlbfs       |
| mqueue      | mqueue                | /dev/mqueue                     | mqueue          |
| debugfs     | debugfs               | /sys/kernel/debug               | debugfs         |
| configfs    | configfs              | /sys/kernel/config              | configfs        |
| fusectl     | fusectl               | /sys/fs/fuse/connections        | fusectl         |
| /dev/loop0  | /dev/loop0            | /snap/lsd/51                    | squashfs        |
| /dev/loop1  | /dev/loop1            | /snap/core/6130                 | squashfs        |
| Documenti   | /home/matte/Documenti | /media/sf_Documenti             | vboxsf          |
| tmpfs       | tmpfs                 | /run/user/1000                  | tmpfs           |
| gvfsd-fuse  | gvfsd-fuse            | /run/user/1000/gvfs             | fuse.gvfsd-fuse |
| binfmt_misc | binfmt_misc           | /proc/sys/fs/binfmt_misc        | binfmt_misc     |
+-------------+-----------------------+---------------------------------+-----------------+

SELECT * FROM os_version;
+--------+---------------------------+-------+-------+-------+-----------------+-----------
| name   | version                   | major | minor |platform | platform_like | codename |
+--------+---------------------------+-------+-------+-------+-------+----------+----------
| Ubuntu | 18.10 (Cosmic Cuttlefish) | 18    | 10    | ubuntu   | debian        | cosmic   |
+--------+---------------------------+-------+-------+-------+-------+----------+----------

Nel sito ufficiale esiste la pagina Schema, dovete potete tutte le possibili "tabelle" e colonne da interrogare.

Buon divertimento!

Enjoy!


Condividi

Commentami!