Cómo monitorear la integridad de los archivos en Linux usando Osquery
- 2926
- 171
- Berta Solano
El concepto básico involucrado con el uso de la aplicación Osquery es la "abstracción tabular" de muchos aspectos del sistema operativo, como procesos, usuarios, etc. Los datos se almacenan en tablas que se pueden consultar utilizando Sql
Sintaxis, directamente a través del Osqueryi
caparazón, o a través del Osqueryd
demonio.
En este tutorial veremos cómo instalar la aplicación, cómo ejecutar consultas básicas y cómo usar Fim
(Monitoreo de integridad de archivos) como parte de su trabajo de administración de sistemas de Linux.
En este tutorial aprenderás:
- Cómo instalar Osquery
- Cómo enumerar las tablas disponibles
- Cómo realizar consultas desde el shell de Osqueryi
- Cómo usar el demonio Osqueryd para monitorear la integridad de los archivos
Requisitos y convenciones de software utilizados
- Conocimientos básicos de los conceptos SQL
- Permisos de raíz para realizar tareas administrativas
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Independiente de la distribución |
Software | Úsquería |
Otro | |
Convenciones | # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominiops - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado |
Instalación
Básicamente tenemos dos opciones para instalar Úsquería
: El primero consiste en descargar el paquete apropiado para nuestro sistema desde el sitio web oficial; El segundo, generalmente preferido, es agregar el repositorio de Osquery a nuestras fuentes de software de distribución. Aquí exploraremos brevemente ambas opciones.
Instalación a través del paquete
Desde el sitio web oficial de Osquery es posible descargar firmado debutante
y rpm
paquetes o más tarballs genéricos. Como lo primero que seleccionamos la versión que queremos instalar, luego descargamos un paquete.
El consejo es seleccionar la última versión disponible (4.1.2 en el momento de la escritura). Una vez que se descarga el paquete, podemos instalarlo utilizando nuestro Administrador de paquetes de distribución. Por ejemplo, para instalar el software en un sistema Fedora (suponiendo que el paquete se encuentre en nuestro directorio de trabajo actual), ejecutaríamos:
$ sudo dnf instalación ./OSQUERY-4.1.2-1.Linux.x86_64.rpm
Usando un repositorio
Como alternativa podemos agregar el rpm
o debutante
repositorio de nuestra distribución. Si estamos utilizando una distribución basada en RPM, podemos ejecutar los siguientes comandos para lograr la tarea:
$ curl -l https: // pkg.Úsquería.IO/RPM/GPG | sudo tee/etc/pki/rpm-gpg/rpm-gpg-key-osquery $ sudo yum-config-manager --add-repo https: // pkg.Úsquería.IO/RPM/OSQUERY-S3-RPM.Repo $ sudo yum-config-manager-insequery-s3-rpm-repo $ sudo yum instalación
Con los comandos de Linux arriba, agregamos la tecla GPG Pulic utilizada para firmar los paquetes a nuestro sistema, luego agregamos el repositorio. Finalmente, instalamos el paquete de Osquery. Darse cuenta de beque
, En versiones recientes de Fedora y Centos/Rhel es solo un enlace simbólico a DNF
, Entonces, cuando invocamos el primero, el segundo se usa en su lugar.
Si estamos ejecutando una distribución basada en Debian, en su lugar, podemos agregar el repositorio de DEB a nuestras fuentes de software ejecutando:
$ sudo apt-key adv-keyserver keyserver.ubuntu.com--recv-keys 1484120aC4e9f8a1a577aeeeeeeeeee97a80c63c9d8b80b $ sudo add-apt-repository 'deb [arch = amd64] https: // pkg.Úsquería.IO/Deb Deb Main '$ sudo apt-get actualización $ sudo apt-get install oSquery
Una vez que el paquete está instalado, podemos echar un vistazo al uso básico del software.
Uso básico
Osquery nos permite monitorear varios aspectos de un sistema operativo que adopta una "abstracción tabular", utilizando una sintaxis SQL similar a la utilizada en sqlite
bases de datos. Las consultas se ejecutan en tablas que resume varios aspectos del sistema operativo, como procesos y servicios.
Podemos ejecutar las consultas directamente usando el Osqueryi
caparazón interactivo, o podemos programarlos a través del Osqueryd
demonio. Aquí hay un ejemplo de una consulta para enumerar todas las tablas disponibles (la lista completa con la descripción de las tablas también se puede encontrar
en línea):
$ OSQUERYI OSQUERY> .Tablas => ACPI_TABLES => apt_sources => arp_cache => Atom_packages => augeas => autorized_keys => block_devices => carbon_black_info => falles => chrome_extensions => cpu_time => cpuid => crontab => curl => curl_certificate => deb_packages > device_file => device_hash => device_partitions => disk_encryption => dns_resolvers => docker_container_labels => docker_container_mounts => docker_container_networks => docker_container_ports => docker_container_processes => docker_container_stats => docker_containers => docker_image_labels => docker_images => docker_info => docker_network_labels => docker_networks => docker_version => docker_volume_labels => docker_volumes => ec2_instance_metadata => ec2_instance_tags => elf_dynamic => elf_info => eft_sections => eLf_segments => Elf_symbols => etc_hosts => etc_prots grupos =>hardware_events => hash => Intel_me_info => interface_addresses => interface_details => interface_ipv6 => iPtables => kernel_info => kernel_integity => kernel_modules => kenel_hosts => last => listen_ports => lldp_neighbors > md_devices => md_drives => md_personalities => memoria_array_mapped_addresses => memoria_arrays => memoria_device_mapped_addresses => memoria_devices => memoria_error_info => Memory_info => Memory_map => Monta => msr => npm_packages => => osquery_extensions => osquery_flags => osquery_info => osquery_packs => osquery_registry => osquery_schedule => pci_devices => plataforma_info => portage_keywords => portage_packages => portage_use => process_envs => process_events =>>> proceso => process_open_files =>Process_open_sockets => procesos => prometheus_metrics => python_packages => rutas => rpm_package_files => rpm_packages => selinux_events => sharw => shared_memory => shell_history => smart_drive_info => smbios_tables => soce_evalk_evals => > syslog_events => system_controls => system_info => time => ulimit_info => endtime => usb_devices => user_events => user_groups => user_ssh_keys => ussers => yara => yara_events => yum_sources
Ejecutando el Osqueryi
Comando Entramos en el shell interactivo; De esto, podemos emitir nuestras consultas e instrucciones. Aquí hay otro ejemplo de una consulta, esta vez para enumerar todos los procesos de ejecución pid
y nombre
. La consulta se realiza en el proceso
Tabla (la salida de la consulta se ha truncado por conveniencia):
Osquery> Seleccionar PID, nombre de los procesos; +-------+------------------------------------+| PID | nombre | +-------+------------------------------------+| 1 | Systemd | | 10 | rcu_sched | | 10333 | KWorker/U16: 5-Events_Unbound | | 10336 | KWorker/2: 0-Events | | 11 | migración/0 | | 11002 | KWORKER/U16: 1-KCRYPTD/253: 0 | | 11165 | KWorker/1: 1-Events | | 11200 | KWorker/1: 3 eventos | | 11227 | Bash | | 11368 | Osqueryi | | 11381 | KWorker/0: 0-Events | | 11395 | Contenido web | | 11437 | KWorker/0: 2 eventos | | 11461 | KWORKER/3: 2-EVENTS_POWER_EFFIENCE | | 11508 | KWorker/2: 2 | | 11509 | KWorker/0: 1-Events | | 11510 | KWORKER/U16: 2-KCRYPTD/253: 0 | | 11530 | Bash | […] | +-------+------------------------------------+
Copiar Incluso es posible realizar consultas en tablas unidas usando el UNIRSE
Declaración, al igual que solemos hacer en bases de datos relacionales. En el siguiente ejemplo realizamos una consulta en el procesos
mesa, unida con el usuarios
uno a través del uid
columna:
OSQuery> Seleccionar procesos.PID, procesos.Nombre, usuarios.Nombre de usuario de los procesos Unirse a los usuarios en los procesos.uid = usuarios.uid; +-------+-------------------------------+--------- ---------+ | PID | nombre | nombre de usuario | +-------+-------------------------------+--------- ---------+ | 1 | Systemd | raíz | | 10 | rcu_sched | raíz | | 11 | migración/0 | raíz | | 11227 | Bash | EGDOC | | 11368 | Osqueryi | EGDOC | | 13 | CPUHP/0 | raíz | | 14 | CPUHP/1 | raíz | | 143 | Kintegityd | raíz | | 144 | Kblockd | raíz | | 145 | blkcg_punt_bio | raíz | | 146 | tpm_dev_wq | raíz | | 147 | ata_sff | raíz | […] | 9130 | Contenido web | EGDOC | | 9298 | Contenido web | EGDOC | | 9463 | GVFSD-Metadata | EGDOC | | 9497 | GVFSD-NETWork | EGDOC | | 9518 | GVFSD-DNSSD | EGDOC | +-------+-------------------------------+------------------+
Copiar Monitoreo de integridad de archivos (FIM)
Hasta ahora usamos Úsquería
a través del caparazón interactivo: Osqueryi
. Usar Fim
(Monitoreo de integridad de archivos), queremos usar el Osqueryd
demonio en su lugar. A través del archivo de configuración, proporcionamos una lista de los archivos que queremos monitorear. Eventos como los cambios de atributo que involucran los archivos y directorios especificados se registran en el file_events
mesa. El demonio ejecuta una consulta en esta tabla después de un intervalo de tiempo específico y notifica en los registros cuando se encuentran nuevos registros. Veamos un ejemplo de configuración.
Configuración
El archivo de configuración principal para Osquery es /etc/osquery/osquery.confusión
. El archivo no existe de forma predeterminada, por lo que debemos crearlo. La configuración se proporciona en Json
formato. Supongamos que queremos monitorear todos los archivos y directorios en /etc
; Así es como configuraríamos la aplicación:
"Opciones": "Disable_events": "False", "programar": "file_events": "consulta": "seleccione * de file_events;", "intervalo": 300, "file_paths": "etcétera etcétera/%%" ], ,
Copiar Analicemos la configuración anterior. En primer lugar, en el opción
Sección, establecemos deshabilitar_EVENTS
a "FALSO"
, Para habilitar los eventos de archivo.
Después de eso, creamos el cronograma
Sección: Dentro de esta sección podemos describir y crear varias consultas programadas con nombre. En nuestro caso, creamos una consulta que selecciona todas las columnas del file_events
tabla, que está destinada a ser ejecutada cada 300
segundos (5 minutos).
Después de programar la consulta, creamos el file_paths
sección, donde especificamos los archivos a ser monitoreados. En esta sección, cada clave representa el nombre de un conjunto de archivos a ser monitoreados (una categoría en la jerga de Osquery). En este caso, la clave "ETC" hace referencia a una lista con solo una entrada, /etc/%%
.
Que De %
El símbolo representa? Al especificar rutas de archivo podemos usar estándar (*
) o SQL (De %
) comodines. Si se proporciona un solo comodín, selecciona todos los archivos y directorios existentes en el nivel especificado. Si se proporciona un comodín doble, selecciona todos los archivos y carpetas recursivamente. Por ejemplo, el /etc/%
La expresión coincide con todos los archivos y carpetas un nivel en /etc
, mientras /etc/%%
coincide con todos los archivos y carpetas en /etc
recursivamente.
Si necesitamos, también podemos excluir archivos específicos de la ruta que proporcionamos, utilizando el excluir_paths
Sección en el archivo de configuración. En la sección solo podemos hacer referencia a categorías definidas en el file_paths
Sección, ("etc" en este caso). Proporcionamos la lista de archivos que se excluirán:
"Exclude_paths": "etc": ["/etc/alias"]
Copiar Justo como ejemplo, excluimos el /etc/alias
Archivo desde la lista. Así es como se ve nuestra configuración final:
"Opciones": "Disable_events": "false", "programar": "file_events": "consulta": "seleccione * de file_events;", "intervalo": 20, "file_paths": "etc": ["/etc/%%"], "Exclude_paths": "etc": ["/etc/aliases"]
Copiar Comenzando el demonio
Con nuestra configuración en su lugar, podemos iniciar el Osqueryd
demonio:
$ sudo systemctl start Osqueryd
Para hacer que el demonio comience automáticamente en el arranque, debemos ejecutar:
$ sudo systemctl habilita osqueyd
Una vez que el demonio se está ejecutando, podemos verificar nuestros trabajos de configuración. Solo como ejemplo, modificaremos los permisos del /etc/fstab
archivo, cambiándolos de 644
a 600
:
$ sudo chmod 600 /etc /fstab
Ahora podemos verificar el cambio en el archivo se ha registrado leyendo el /var/log/Osquery/Osqueryd.resultados.registro
archivo. Aquí está la última línea del archivo (embellecido):
"name": "file_events", "hostIdentifier": "fingolfin", "calendtime": "lun 30 de diciembre 19:57:31 2019 UTC", "untime": 1577735851, "Epoch": 0, "contador": 0, "LognumericsAsnumbers": False, "Columnas": "Acción": "Attributes_Modified", "Atime": "1577735683", "Categoría": "etc", "ctime": "15777735841", "GID": " 0 "," Hashed ":" 0 "," inode ":" 262147 "," md5 ":" "," modo ":" 0600 "," mtime ":" 1577371335 "," sha1 ":" ",", "," Sha256 ":" "," tamaño ":" 742 "," Target_path ":"/etc/fstab "," Time ":" 15777735841 "," Transaction_id ":" 0 "," uid ":" 0 ", "Acción": "Agregado"
Copiar En el registro de arriba, podemos ver claramente que un Atributos_modificado
La acción (línea 10) ocurrió en el Target_path
"/Etc/fstab" (línea 23), que es parte del "etc" categoría
(Línea 12). Es importante notar que si consultamos el file_events
mesa del Osqueryi
Shell, no veremos filas, desde el Osqueryd
demonio y Osqueryi
No te comunices.
Conclusiones
En este tutorial vimos los conceptos básicos involucrados en el uso del Úsquería
Aplicación, que resume varios conceptos del sistema operativo utilizando datos tabulares, podemos consultar utilizando la sintaxis SQL. Vimos cómo instalar la aplicación, cómo realizar consultas básicas utilizando el Osqueryi
shell, y finalmente cómo configurar el monitoreo de archivos utilizando el Osqueryd
demonio. Acabamos de rascar la superficie de lo que la aplicación puede hacer; Como siempre, el consejo es echar un vistazo a la documentación del proyecto para un conocimiento más profundo.
Tutoriales de Linux relacionados:
- Cosas para instalar en Ubuntu 20.04
- La mejor herramienta de monitoreo de sistemas para Linux
- Ubuntu 20.04 Monitoreo del sistema con widgets de Conky
- Ubuntu 22.04 Monitoreo del sistema con widgets de Conky
- Una introducción a la automatización, herramientas y técnicas de Linux
- Optimización de rendimiento de Linux: herramientas y técnicas
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Cosas para instalar en Ubuntu 22.04
- Cómo Grep Correntemente para el texto en scripts bash
- Archivos de configuración de Linux: los 30 principales más importantes