Cómo monitorear su servidor Linux usando osquery

instalar osquery

Osquery es un software de monitoreo, consulta y análisis del sistema operativo de código abierto. Creado por Facebook, expone un sistema operativo como una base de datos relacional de alto rendimiento que se puede consultar mediante consultas basadas en SQL.

Osquery es un software multiplataforma, se puede instalar en Linux, Windows, MacOS y FreeBSD. Osquery nos permite explorar el perfil del sistema operativo, el rendimiento, la seguridad y muchas más métricas mediante el uso de consultas basadas en SQL.

En este tutorial, le mostraré cómo instalar osquery en las distribuciones de Linux Ubuntu 18.04 LTS y CentOS 7. Instalaremos osquery, aprenderemos a usar el modo interactivo ‘osqueryi’ y cómo monitorear un sistema en vivo usando osquery.

requisitos previos

  • Sistema operativo Linux (Ubuntu 18.04 o CentOS 7)
  • Privilegios de raíz

Lo que haremos

  • Instalar osquery en el sistema operativo Linux
  • Uso básico del modo interactivo osqueryi
  • Sistema de Monitoreo usando osquery

Paso 1: instale osquery en el sistema operativo Linux

osquery proporciona su propio repositorio para cada plataforma. En este paso, instalaremos el paquete osquery desde el repositorio oficial de osquery.

en Ubuntu

Añade la clave osquería.

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY

Instale el paquete osquery en Ubuntu.

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

En CentOS

Añade la clave osquería.

curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery

Instale el paquete osquery en CentOS 7.

sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
sudo yum-config-manager --enable osquery-s3-rpm
sudo yum install osquery

Espere a que se instalen todos los paquetes.

instalar osquery

Paso 2: uso básico del modo interactivo osqueryi

osquery proporciona dos interfaces principales para los usuarios, osqueryi y osqueryd.

osqueryi es la consola de consulta interactiva de osquery. Es como el shell de comandos ‘mysql’ en MySQL y el shell ‘psql’ en la base de datos PostgreSQL.

En este paso, aprenderemos el uso básico del modo interactivo ‘osqueryi’.

Escriba el comando ‘osqueryi’ en la terminal del servidor y obtendrá el modo de consola interactiva osquery.

osqueryi

A continuación, aprenderemos sobre el comando básico del modo de consola osqueryi.

Muestra todos los comandos básicos disponibles en el modo interactivo osqueryi.

.help

usando el comando osqueryi

Muestra las configuraciones y ajustes actuales de osquery.

.show

Mostrar configuración osquery

Osquery proporciona múltiples modos de vista para mostrar los resultados de la consulta. El modo predeterminado es el modo ‘bonito’.

Ahora cambiaremos el modo de visualización de los resultados de la consulta; para esta guía, utilizaremos el modo «línea».

.mode csv
.mode list
.mode column
.mode line
.mode pretty

Osquery expone el sistema operativo como un sistema de base de datos relacional. Toda la información sobre el sistema se almacena en las tablas osquery y podemos explorar toda la información del sistema consultando todas las tablas disponibles.

Para obtener una lista de todas las tablas disponibles en el osquery, ejecute el siguiente comando.

.tables

Obtener una lista de todas las tablas

Una vez que sepamos todas las tablas disponibles en el sistema osquery, nos fijaremos en las columnas.

Use el siguiente comando para obtener el esquema (columnas, tipos) de las tablas.

.schema users
.schema processes

Obtener columnas osquery

Y obtendrá todas las columnas de esquema de la tabla.

Paso 3: supervisión básica de Linux mediante consulta

En este paso, monitorearemos un sistema Linux en vivo usando osquery. Supervisaremos la información del perfil del sistema, los usuarios, las interfaces de red, etc. a través del modo interactivo osqueryi.

Obtener información del sistema

Mostrar detalles sobre el hardware del sistema.

SELECT * FROM system_info;
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

Mostrar detalles del hardware del sistema

Obtener la versión del sistema operativo

Muestra la información actual del sistema operativo, incluida la versión del sistema operativo, la plataforma, el parche del sistema operativo y el nombre en clave.

SELECT * FROM os_version;

Mostrar detalles sobre el sistema operativo

Ver la versión y los módulos del kernel

Para comprobar la información del kernel del sistema, osquery proporciona las tablas ‘kernel_info’ y ‘kernel_modules’.

Muestra el kernel utilizado por el sistema. Publicidad

SELECT * FROM kernel_info;

Muestra todos los módulos del kernel cargados en el sistema.

SELECT * FROM kernel_modules LIMIT 5;

obtener detalles sobre el kernel de Linux usado

Comprobación del repositorio y los paquetes

osquery proporciona tablas para verificar repositorios y paquetes instalados tanto en Linux Ubuntu como en CentOS.

– En Ubuntu

En Ubuntu, podemos verificar los repositorios disponibles a través de ‘apt_sources’ y verificar los paquetes instalados a través de ‘deb_packages’.

Compruebe todos los repositorios de Ubuntu disponibles.

SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;

Verifique todos los paquetes instalados usando la tabla deb_packages.

SELECT * FROM deb_packages;

Muestra solo el nombre del paquete y la versión.

SELECT name, version FROM deb_packages ORDER BY name;

Comprobar paquetes instalados en Ubuntu

Para un paquete específico, agregue el filtro de nombre.

SELECT name, version FROM deb_packages WHERE name="nginx";

obtener detalles sobre un paquete específico, en este caso nginx

– En CentOS

En CentOS, podemos verificar el repositorio disponible a través de ‘yum_sources’ y verificar los paquetes instalados a través de ‘rpm_packages’.

Consulte todos los repositorios de CentOS disponibles.

SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources;

Verifique el repositorio habilitado agregando el filtro ‘habilitado’.

SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;

Obtener detalles del paquete en CentOS

Verifique todos los paquetes instalados usando la tabla rpm_packages.

SELECT * FROM rpm_packages;
SELECT name, version FROM rpm_packages ORDER BY name;

Para un nombre de paquete específico, agregue el filtro de nombre.

SELECT name, version FROM rpm_packages WHERE name="firewalld";

Detalles sobre el cortafuegos

Montar información del disco

Podemos usar la tabla de montajes para verificar todos los detalles sobre la unidad del sistema, incluidos los inodos libres, las banderas, el tipo, etc.

Compruebe todos los discos montados por el sistema.

SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;

Para el tipo específico de dispositivo.

SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="ext4";
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="tmpfs";

Obtener soportes de disco

Información de memoria

Comprobación de la memoria del sistema en bytes.

SELECT * FROM memory_info;

Obtener detalles de la memoria

Información de la interfaz de red

Verificando la dirección de red usando ‘interface_addresses’.

SELECT * FROM interface_addresses;

Información de la interfaz de red

Comprobación de los detalles de la interfaz de red mediante ‘interface_details’.

SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;

Detalles de la interfaz de red

Tiempo de actividad del servidor

Comprobación del tiempo de actividad del servidor.

SELECT * FROM uptime;

Usuario de control

osqery proporciona tablas detalladas para comprobar los usuarios del sistema. Podemos usar la tabla ‘usuarios’ para verificar todos los usuarios en el sistema, usar la tabla ‘último’ para verificar el último inicio de sesión de los usuarios y usar ‘logged_in_users’ para obtener el usuario conectado con el shell activo.

Para verificar todos los usuarios disponibles en el servidor, use la tabla de ‘usuarios’.

SELECT * FROM users;

Para usuarios normales, podemos especificar el uid en ‘>=1000’.

SELECT * FROM users WHERE uid>=1000;

Detalles del usuario del sistema

Para verificar los últimos usuarios que iniciaron sesión, use la tabla ‘última’.

SELECT * FROM last;

Último acceso

Para usuarios normales, complete ‘tipo’ hasta ‘7’.

SELECT username, time, host FROM last WHERE type=7;

Obtener detalles solo sobre usuarios normales

Comprobando el usuario conectado con shell activo, use las tablas ‘logged_in_users’.

SELECT * FROM logged_in_users;

Información del cortafuegos de las tablas IP

Con la tabla ‘tablas’, podemos verificar todas las reglas disponibles del firewall, incluida la cadena, la política, la IP src/dst y el puerto, etc.

Mostrar todas las reglas de iptables.

SELECT * FROM iptables;

Especifique la regla usando la consulta personalizada a continuación.

SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain="POSTROUTING" order by src_ip;

Información del cortafuegos de las tablas IP

Información del proceso

Podemos verificar todo el proceso de solicitud usando la tabla de ‘procesos’. Proporciona información detallada sobre el proceso, incluidos pid, nombre, ruta, comando, etc.

Consulta de procesos básicos para verificar todas las aplicaciones en ejecución.

SELECT * FROM processes;

Especifique columnas para pid, etc., ruta y el comando.

SELECT pid, name, path, cmdline FROM processes;

Detalles sobre los procesos de Linux

Comprobación del trabajo cron

Verifique el trabajo cron disponible y la hora de ejecución del script usando la tabla ‘crontab’.

SELECT * FROM crontab;

cronjobs

Archivo binario SUID

SUID (Establecer el ID de usuario del propietario en la ejecución) es un tipo especial de permisos de archivo otorgados a un archivo y, en su mayoría, a archivos ejecutables binarios.

Compruebe todos los disponibles dicho archivo binario.

SELECT * FROM suid_bin;

Especifique el nombre de usuario y el nombre del grupo.

SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;

Lista de archivos SUID

Y todo lo anterior es el monitoreo básico del sistema Linux usando osquery.

Deja una respuesta

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