GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo monitorear su servidor Linux usando 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

  • SO 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:instalar 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 osquery.

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 osquery.

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.

Paso 2:uso básico del modo interactivo de 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 consola osqueryi.

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

.help

Muestra las configuraciones y ajustes actuales de osquery.

.show

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

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

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

.schema users
.schema processes

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

Muestra detalles sobre el hardware del sistema.

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

Obtener la versión del sistema operativo

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

SELECT * FROM os_version;

Ver versión y módulos del kernel

Para verificar la información del kernel del sistema, osquery proporciona las tablas 'kernel_info' y 'kernel_modules'.

Muestra el núcleo utilizado por el sistema.

SELECT * FROM kernel_info;

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

SELECT * FROM kernel_modules LIMIT 5;

Revisando Repositorio y 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;

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

SELECT name, version FROM deb_packages WHERE name="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'.

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

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

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.

Verifique 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";

Información de la memoria

Comprobando la memoria del sistema en bytes.

SELECT * FROM memory_info;

Información de interfaz de red

Verificando la dirección de red usando 'interface_addresses'.

SELECT * FROM interface_addresses;

Verificando los detalles de la interfaz de red usando 'interface_details'.

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

Tiempo de actividad del servidor

Comprobando el 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;

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

SELECT * FROM last;

Para usuarios normales, complete 'tipo' hasta '7'.

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

Comprobando el usuario que ha iniciado sesión con shell activo, use las tablas 'logged_in_users'.

SELECT * FROM logged_in_users;

Información del cortafuegos de tablas IP

Con la tabla 'tablas', podemos comprobar todas las reglas disponibles del cortafuegos, incluida la cadena, la política, la IP y el puerto src/dst, etc.

Mostrar todas las reglas de iptables.

SELECT * FROM iptables;

Especifique la regla utilizando 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 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., la ruta y el comando.

SELECT pid, name, path, cmdline FROM processes;

Comprobando trabajo cron

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

SELECT * FROM crontab;

Archivo binario SUID

SUID (Configurar 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 archivos binarios disponibles.

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;

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


Linux
  1. Supervise su servidor Linux con Checkmk

  2. ¿Cómo monitorear su servidor Linux?

  3. Cómo medir el rendimiento en su servidor Linux VPS

  4. Cómo usar OpenSSH para conectarse a su servidor Linux

  5. Cómo monitorear la seguridad del servidor Linux con Osquery

Cómo monitorear sus servidores Linux con Checkmk

Cómo verificar la carga de su servidor en el sistema Linux

Cómo verificar el tiempo de actividad de su servidor Linux

Cómo configurar un demonio Rsync en su servidor Linux

Cómo:usar lsof:10 comandos esenciales para solucionar problemas de su servidor Linux

Cómo configurar un cortafuegos en su servidor Linux