GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar osquery en Debian 10

osquery es una herramienta gratuita y de código abierto desarrollada por Facebook que se puede utilizar para consultar información relacionada con el sistema operativo, incluido el uso de memoria, paquetes instalados, información de procesos, usuarios de inicio de sesión, puertos de escucha y muchos más. Se puede ejecutar en varios sistemas operativos, incluidos Windows, Linux, FreeBSD y MacOS. Es una herramienta muy útil para una variedad de casos de uso para solucionar problemas de rendimiento y operativos. Viene con muchas herramientas que lo ayudan a realizar análisis y monitoreo del sistema operativo.

En este tutorial, aprenderemos cómo instalar y usar osquery en Debian 10.

Requisitos

  • Un servidor que ejecuta Debian 10.
  • Se ha configurado una contraseña raíz en su servidor.

Cómo empezar

Antes de comenzar, es una buena idea actualizar el paquete de su sistema a la última versión. Puede actualizar todos los paquetes con el siguiente comando:

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

Una vez que todos los paquetes estén actualizados, reinicie su sistema para aplicar los cambios.

Instalar osquery

De forma predeterminada, osquery no está disponible en el repositorio predeterminado de Debian 10. Por lo tanto, deberá agregar el repositorio osquery en su sistema.

Primero, descargue y agregue la clave GPG con el siguiente comando:

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

A continuación, agregue el repositorio osquery con el siguiente comando:

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

A continuación, actualice el repositorio e instale osquery con el siguiente comando:

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

Una vez finalizada la instalación, inicia el servicio de osquery con el siguiente comando:

osqueryctl start osqueryd

También puede verificar el estado de osquery con el siguiente comando:

osqueryctl status osqueryd

Debería ver el siguiente resultado:

? 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

Trabajando con osquery

osquery viene con tres componentes útiles, osqueryi, osqueryd y osqueryctl. El osqueryi es un shell interactivo de osquery y no se comunica con un demonio. Puede usar el shell para ejecutar consultas y explorar el estado actual de su sistema operativo. osqueryd es el demonio de monitoreo de host que se puede usar para programar consultas y registrar cambios de estado del sistema operativo. osqueryctl es un script auxiliar para probar la configuración.

Puede ejecutar el siguiente comando para conectarse al shell de osquery:

osqueryi

Deberías obtener el siguiente resultado:

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

A continuación, ejecute el comando .help para ver todas las opciones disponibles con osquery:

osquery> .help

Deberías obtener el siguiente resultado:

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> 

Hay muchas tablas disponibles para consulta. Puede listar todas las tablas con el siguiente comando:

osquery> .table

Deberías obtener el siguiente resultado:

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

Puede encontrar la información del sistema utilizando la tabla anterior con osquery.

Sistema de Monitoreo con osquery

Puede monitorear el uso de la memoria, la información del proceso, el espacio en disco, los usuarios que inician sesión y mucho más con osquery.

Primero, inicie el shell de osquery con el siguiente comando:

osqueryi

A continuación, puede obtener la información del nombre de host de su sistema, el núcleo de la CPU y la memoria física con el siguiente comando:

osquery> select hostname,cpu_physical_cores,physical_memory from system_info;

Deberías obtener el siguiente resultado:

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

Para obtener la información sobre el archivo ssh_config, ejecute la siguiente consulta:

osquery> select * from ssh_configs;

Deberías obtener el siguiente resultado:

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> 

Para obtener una lista de todos los usuarios en su sistema, ejecute la siguiente consulta:

osquery> SELECT * FROM users;

Deberías obtener el siguiente resultado:

+-------+-------+------------+------------+-----------------+------------------------------------+----------------------+-------------------+------+
| 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 desea enumerar todos los usuarios que no son del sistema en su sistema, ejecute la siguiente consulta:

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

Deberías obtener el siguiente resultado:

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

Para obtener la lista de usuarios actualmente conectados, ejecute la siguiente consulta:

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

Deberías obtener el siguiente resultado:

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

Para mostrar la información de la memoria de su sistema, ejecute la siguiente consulta:

osquery> select * from memory_info;

Deberías obtener el siguiente resultado:

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

Para encontrar la carga promedio de su sistema, ejecute la siguiente consulta:

osquery> select * from load_average;

Deberías obtener el siguiente resultado:

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

Para obtener una lista de los primeros cinco paquetes en su sistema, ejecute la siguiente consulta:

osquery> select * from deb_packages top limit 5;

Deberías obtener el siguiente resultado:

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

Para obtener información sobre los procesos en ejecución en su sistema, ejecute la siguiente consulta:

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

Deberías obtener el siguiente resultado:

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

Para encontrar todos los inicios de sesión anteriores, ejecute la siguiente consulta:

osquery> select * from last;

Deberías obtener el siguiente resultado:

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

Para enumerar todos los trabajos programados por crontab, ejecute la siguiente consulta:

osquery> select command, path from crontab ;

Deberías obtener el siguiente resultado:

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

Para encontrar todos los puertos abiertos en su sistema, ejecute la siguiente consulta:

osquery> select * from listening_ports;

Deberías obtener el siguiente resultado:

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

Para enumerar los 5 procesos más activos, ejecute la siguiente consulta:

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

Deberías obtener el siguiente resultado:

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

Conclusión

En el tutorial anterior, aprendimos cómo instalar y usar osquery en Debian 10. osquery es una herramienta muy útil para encontrar puertas traseras, malware o cualquier proceso zombie en su sistema. Para obtener más información sobre osquery, visite la página de documentación de osquery.


Debian
  1. Cómo instalar R en Debian 9

  2. Cómo instalar R en Debian 10

  3. Cómo instalar Apache ZooKeeper en Debian 10

  4. Cómo instalar Ionic Framework en Debian 10

  5. Cómo instalar WildFly en Debian 11

Cómo instalar Go en Debian 10

Cómo instalar LEMP en Debian 7

Cómo instalar Flectra en Debian 10

Cómo instalar OpenNebula en Debian 10

Cómo instalar TeamViewer en Debian 10

Cómo instalar Go en Debian