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 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.
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
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, nos fijaremos en 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
Mostrar 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 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;
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;
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;
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’.
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;
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.
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";
Información de memoria
Comprobación de la memoria del sistema en bytes.
SELECT * FROM memory_info;
Información de la interfaz de red
Verificando la dirección de red usando ‘interface_addresses’.
SELECT * FROM interface_addresses;
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;
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;
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 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 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;
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;
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;
Y todo lo anterior es el monitoreo básico del sistema Linux usando osquery.