Monitoreo del sistema usando OSQuery en Ubuntu – TrucosInformaticos

Ubuntu

El monitoreo del sistema es crucial para mantener la seguridad y el rendimiento de cualquier sistema informático. Con el auge de las amenazas y ataques cibernéticos, es esencial contar con las herramientas adecuadas para monitorear y proteger su sistema. OSQuery es una herramienta de código abierto que proporciona una manera simple y efectiva de monitorear varios aspectos de su sistema Ubuntu.

En esta publicación de blog, discutiremos cómo instalar OSQuery en Ubuntu y cómo usarlo para monitorear su sistema. Cubriremos varias consultas que se pueden usar para monitorear procesos, usuarios, conexiones de red y más.

Requisitos

Si bien OSQuery funciona en la mayoría de las plataformas, este tutorial utilizará una máquina Ubuntu Server 22.04.

Puedes visitar el Página de descargas de OSQuery para ver todas las opciones disponibles.

Instalación de OSQuery

El primer paso para usar OSQuery es instalarlo en su sistema Ubuntu. OSQuery se puede instalar a través del repositorio oficial de OSQuery, que se puede agregar al administrador de paquetes de Ubuntu usando los siguientes comandos:

Agregue la clave OSQuery GPG a su máquina:

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

Instale el repositorio OSQuery:

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

os consulta

Ahora, instale el osquería paquete:

sudo apt-get install -y osquery

mesas de osquería

Una vez instalado OSQuery, tendrá acceso a tres componentes o comandos.

  • osqueryd — El demonio OSQuery. Este comando se puede usar para programar y ejecutar consultas en segundo plano.
  • osqueryi — El shell interactivo de OSQuery. Puede usar este comando cuando ejecuta consultas de forma manual e interactiva.
  • osqueryctl — La secuencia de comandos auxiliar para controlar el demonio OSQuery, como detener, iniciar, reiniciar y verificar el estado del demonio.

Uso de los comandos de OSQuery

Hay dos formas de usar el osqueryi herramienta: como shell interactivo y como herramienta de línea de comandos independiente.

Para ingresar al shell interactivo de OSQuery, ejecute el siguiente comando.

sudo osquery*i*

ejemplos de osquería

Cuando esté dentro del shell de OSQuery, puede obtener ayuda ejecutando el .ayuda función.

osquery linux

Para salir del shell, ejecute .salida o .abandonar.

Cuando se utiliza como una herramienta de línea de comandos, puede ejecutar osqueryi con opciones y banderas. Para obtener todas las opciones y banderas disponibles, ejecute:

osqueryi --help

osquería ventana acoplable

Listado de todas las tablas

Piense en OSQuery como una base de datos que tiene varias tablas. Cada tabla contiene datos sobre el sistema, incluidos procesos, usuarios, etc. Y, al igual que una base de datos, puede ejecutar consultas SQL en estas tablas. Pero, ¿qué mesas están disponibles? Para averiguarlo, ejecute el siguiente comando para enumerarlos.

osqueryi -L

consultas osquery

O si en el caparazón interactivo:

.tables

herramienta osquería

Esquema de tabla de listado

Las tablas tienen campos, y para averiguar qué campos tiene una tabla en particular, ejecute este comando en el shell interactivo.

.schema [TABLE]

O en la línea de comando.

osqueryi ".schema [TABLE]"

Por ejemplo, para mostrar la información del sistema esquema de tabla:

osqueryi ".schema system_info"

Como puede ver a continuación, el resultado devolvió todos los campos de la tabla. Ahora sabe qué campos puede devolver cuando ejecuta una consulta.

usando osquería

Mostrar información del sistema

Esta consulta muestra el nombre de la computadora, el tamaño de la memoria y la marca de la CPU del sistema local.

select computer_name,physical_memory,cpu_brand from system_info;

nombre de la computadora osquery

Mostrar usuarios registrados

Cuando necesite monitorear quién inicia sesión en un sistema, tal vez para atrapar a usuarios no autorizados y bloquear el acceso, puede ejecutar la siguiente consulta.

SELECT * FROM logged_in_users;

osquery usuarios registrados

Calcular espacio libre en disco

Una de las estadísticas cruciales para monitorear en un sistema es el espacio de almacenamiento. La siguiente consulta devuelve el espacio libre y usado en la unidad raíz ‘/dev/raíz‘ y todas las unidades coincidentes ‘/dev/sd%1.

SELECT 
path, 
ROUND(('10e-10' * blocks_available * blocks_size), 1) AS 'free (GB)', 
ROUND( 
100 - (blocks_available * 1.0 / blocks * 1.0) * 100, 
1 
) AS 'used %', 
device, 
type 
FROM 
mounts 
WHERE 
device like '/dev/sd%1' 
or path="/";

espacio en disco osquery utilizado

Calcular hash de archivo

OSQuery también puede calcular el hash de archivo de un archivo consultando el picadillo mesa. Por ejemplo, la siguiente consulta devuelve el hash SHA256 del /etc/sudoers y /etc/contraseña archivos Esta consulta sería útil si desea monitorear si los archivos han cambiado.

SELECT 
path, 
sha256 
FROM 
hash 
WHERE 
path="/etc/sudoers" 
or path="/etc/passwd";

hachís osquery

Mostrar procesos intensivos en memoria

En los casos en que el sistema se quede sin RAM, sería bueno verificar qué procesos pueden estar experimentando un alto uso de memoria.

Esta consulta enumera los diez procesos principales que utilizan la mayor cantidad de memoria consultando el procesos mesa. El resultado se mostrará en orden descendente por el valor de la memoria utilizada.

SELECT 
pid as 'Process ID', 
name as 'Process Name', 
CAST (ROUND((resident_size * 0.0000010), 0) as int) AS 'Private Memory (M)', 
CAST (ROUND((total_size * 0.0000010), 0) as int) AS 'Virtual Memory (M)' 
FROM 
processes 
ORDER BY 
total_size DESC 
LIMIT 
10;

identificación del proceso osquery

Mostrar recuento de contenedores de Docker

Cuando ejecuta Docker en el servidor y desea ver rápidamente el recuento de contenedores y el recuento por estado, consulte el docker_info tabla, como se muestra a continuación.

SELECT 
containers, 
containers_running as running, 
containers_paused as paused, 
containers_stopped as stopped 
FROM 
docker_info;

mostrar el recuento de contenedores de Docker

Lista de contenedores de Docker en ejecución

¿Qué tal enumerar todos los contenedores en ejecución? Puedes consultar el docker_containers mesa así.

SELECT 
SUBSTRING(id, 1, 12) as id, 
name, 
pid, 
status, 
command 
FROM 
docker_containers;

Hay dos contenedores Docker en ejecución en este ejemplo, como puede ver a continuación.

lista de contenedores Docker en ejecución

Ejecutar consultas desde archivos

También puede usar archivos como entrada además de ejecutar consultas dentro del shell interactivo o pasar la consulta al osqueryi dominio. De esta manera, puede almacenar diferentes consultas SQL en archivos separados.

Por ejemplo, copie el código a continuación y guárdelo en un archivo llamado procesos_puertos_de_escucha_con_nombre_de_usuario.sql. Esta consulta devolverá los procesos con puertos de escucha, incluido el nombre de usuario propietario del proceso.

SELECT 
listening_ports.pid as processid, 
processes.name as processname, 
users.username, 
listening_ports.port, 
listening_ports.address 
FROM 
listening_ports 
JOIN processes ON listening_ports.pid = processes.pid 
JOIN users ON processes.uid = users.uid 
LIMIT 
5;

Una vez guardado el archivo de consulta, ejecute el osqueryi comando a continuación en la terminal.

sudo osqueryi < processes_listening_ports_with_username.sql

Y debería obtener un resultado similar a la captura de pantalla a continuación.

Ejecutar consultas desde archivos

Nota. Puede encontrar los archivos de consulta SQL de ejemplo en este repositorio GitHub.

Exportación de resultados de OSQuery a un archivo

También puede exportar los resultados de OSQuery a archivos cuando ejecuta el comando desde la terminal. Por ejemplo, exportemos el tiempo de actividad de la computadora a un archivo de texto.

osqueryi "select * from uptime;" > uptime.txt

El resultado es el siguiente.

Exportación de resultados de OSQuery

Como puede ver, el formato predeterminado no es fácil de leer o sería difícil de analizar con herramientas de automatización. Los formatos más comunes son CSV y JSON, y OSQuery puede exportar a esos formatos.

Para exportar en formato CSV, utilice el –csv –separador [VALUE] banderas

osqueryi "select * from uptime;" --csv --separator , > uptime.csv

osquería csv

Para exportar en formato JSON, utilice el –json marcar así:

osqueryi "select * from uptime;" --json > uptime.json

tiempo de actividad de la osquería

También puede crear una salida JSON con formato usando el –json_pretty bandera.

osqueryi "select * from uptime;" --json_pretty > uptime.json

osqueryi

Conclusión

Este tutorial le mostró cómo ejecutar consultas en su sistema utilizando la herramienta OSQuery. La sintaxis de OSQuery utiliza el formato SQL familiar para recuperar información de muchas tablas.

Hay más en OSQuery que simplemente ejecutar consultas de forma interactiva. También le permite configurar consultas programadas con automatización y crear diferentes archivos de configuración para diferentes conjuntos de monitoreo.

Depende de usted llevar su juego OSQuery a un nivel superior. ¡Buena suerte!

5/5 - (92 votos)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *