825
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'
Ahora, instale el osquería paquete:
sudo apt-get install -y osquery
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*
Cuando esté dentro del shell de OSQuery, puede obtener ayuda ejecutando el .ayuda función.
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
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
O si en el caparazón interactivo:
.tables
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.
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;
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;
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="/";
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";
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;
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;
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.
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.
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.
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
Para exportar en formato JSON, utilice el –json marcar así:
osqueryi "select * from uptime;" --json > uptime.json
También puede crear una salida JSON con formato usando el –json_pretty bandera.
osqueryi "select * from uptime;" --json_pretty > uptime.json
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!