Mantener en óptimas condiciones nuestros equipos es uno de los objetivos fundamentales de todo administrador de sistemas y personal de soporte o gestión IT ya que de esto depende que toda la arquitectura funcione adecuadamente.
Las herramientas forenses son una utilidad que viene bien tener siempre a mano pues pueden ayudarnos a detectar movimientos negativos en nuestro sistema. A veces nuestro equipo parece esta fuera de sí y realizar comportamientos extraños y es por ello que herramientas como la que hoy presentamos pueden salvarnos de un final peor.
Aunque existen múltiples herramientas que nos permiten llevar un control sobre diversos aspectos tanto a nivel de hardware como de software en esta oportunidad hablaremos de una herramienta que nos dará la posibilidad de transformar nuestro Sistema Operativo en una base de datos para realizar las diversas consultas, en tiempo real, sobre el estado de múltiples parámetros: Osquery.
Su funcionamiento está basado en consultas, similar a SQWL, mediante las cuales podremos realizar tareas como:
- Comprobar el estado y administración del Firewall.
- Verificar la integridad de los directorios.
- Realizar auditorías de seguridad, entre muchas otras tareas
- Osqueryi: Es el Shell interactivo de la aplicación mediante el cual podremos realizar las consultas en tiempo real.
- Osqueryd: Es un daemon o demonio para configurar y realizar consultas en segundo plano.
- Osqueryctl: Es un conjunto de comandos para validar la configuración de Osquery.
1. Cómo instalar Osquery en Ubuntu 17.04
En primer lugar será necesario instalar el repositorio oficial para que todo funcione de la forma esperada, para ello ejecutamos lo siguiente:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
Una vez instalada la llave procedemos a instalar el repositorio:
sudo add-apt-repository "deb [arch=amd64] https://osquery-packages.s3.amazonaws.com/xenial xenial main"
Una vez instalado actualizamos los paquetes del repositorio ejecutando el siguiente comando:
sudo apt-get update
Una vez actualizado procedemos con la instalación de Osquery ejecutando lo siguiente:
sudo apt-get install osquery
Una vez instalado podremos ver los diversos parámetros a usar ejecutando el siguiente comando:
osqueryd –help
Si deseamos visualizar las opciones de los flags ejecutaremos lo siguiente:
osqueryi --help
Ejecutar Osqueryi es la forma más común para consultar todas las tablas de consulta ofrecidas por la aplicación, podemos ejecutar lo siguiente.
osqueryi –verbose
Esta es la Shell interactiva de la aplicación. Para salir de la consola ejecutaremos .exit.
2. Cómo configurar el acceso de Osquery al log del sistema Ubuntu 17.04
Para permitir que Osquery acceda al log del sistema operativo con el fin de realizar las consultas de una manera mucho más avanzada debemos modificar el archivo /etc/rsyslog.conf usando el editor preferido:
sudo nano /etc/rsyslog.conf
En este archivo agregaremos lo siguiente:
template( name="OsqueryCsvFormat" type="string" string="%timestamp:::date-rfc3339,csv%,%hostname:::csv%,%syslogseverity:::csv%,%syslogfacility-text:::csv%,%syslogtag:::csv%,%msg:::csv%\n" ) *.* action(type="ompipe" Pipe="/var/osquery/syslog_pipe" template="OsqueryCsvFormat")
Guardamos los cambios usando las teclas Ctrl + O y salimos del editor usando Ctrl + X. Reiniciamos el demonio Syslog para aplicar los cambios ejecutando lo siguiente:
sudo systemctl restart rsyslog
3. Cómo crear el archivo de configuración de Osquery en Ubuntu 17.04
Es importante crear un archivo de configuración de Osquery ya que de este modo facilitamos la ejecución del mismo.
Aunque Osquery no cuenta con un archivo de configuración por defecto, si incluye un archivo de ejemplo en la ruta /etc/osquery. Deben existir tres secciones en el archivo de configuración:
- Una lista de consultas programadas listas para ser ejecutadas
- Una lista de demonios y ajustes de características.
- Una lista de paquetes a usar.
A continuación desplegamos las opciones que usaremos con Osquery en Ubuntu 17.04:
- Config_plugin: Allí es donde Osquery leerá los parámetros de configuración.
- Logger_plugin: Indica donde serán escritos los resultados de las consultas.
- Logger_path: Es la ruta del directorio donde se encontrará información como advertencias, errores y demás resultados.
- Disable_logging: Si establecemos su valor en false de habilitar el registro.
- Log_result_events: Si establecemos su valor en verdadero cada línea indicará un cambio de estado.
- Schedule_splay_percent: Limita el número de consultas.
- Pidfile: Identifica el proceso Osquery.
- Events_expiry: Indica el tiempo en segundos en que la consulta permanecerá disponible.
- Database_path: Es la ruta a la base de datos de Osquery.
- Verbose: Activa o desactiva mensajes.
- Worker_threads: Hace referencia al número de subprocesos usados al ejecutar la consulta.
- Enable_monitor: Activa o desactiva el monitor de programación.
- Disable_events: Nos permite deshabilitar el registro de eventos de osquery.
- Disable_audit: Deshabilita el proceso de auditoría del sistema operativo.
- Audit_allow_config: Habilita al auditor de auditoria a modificar la configuración de auditoria.
- Audit_allow_sockets: Permite al auditor agregar reglas de asociadas a los sockets.
- Host_identifier: identifica el equipo donde se está ejecutando Osquery.
- Enable_syslog: Permite que Osquery recopile la información del Syslog de Ubuntu.
- Schedule_default_interval: Permite establecer el valor de una consulta programada.
A continuación crearemos el archivo osquery.conf ejecutando lo siguiente:
sudo nano /etc/osquery/osquery.conf
Este archivo usará el formato JSON. Allí debemos registrar las siguientes líneas:
{ "options": { "config_plugin": "filesystem", "logger_plugin": "filesystem", "logger_path": "/var/log/osquery", "disable_logging": "false", "log_result_events": "true", "schedule_splay_percent": "10", "pidfile": "/var/osquery/osquery.pidfile", "events_expiry": "3600", "database_path": "/var/osquery/osquery.db", "verbose": "false", "worker_threads": "2", "enable_monitor": "true", "disable_events": "false", "disable_audit": "false", "audit_allow_config": "true", "host_identifier": "hostname", "enable_syslog": "true", "audit_allow_sockets": "true", "schedule_default_interval": "3600" },
Ahora agregaremos las siguientes líneas asociadas a la programación de las consultas:
"schedule": { "crontab": { "query": "SELECT * FROM crontab;", "interval": 300 } },
Adicional podremos agregar otro tipo de consultas llamada Decoradores las cuales preceden a los datos de consultas ya ejecutadas.
Para esto agregaremos lo siguiente:
"decorators": { "load": [ "SELECT uuid AS host_uuid FROM system_info;", "SELECT user AS username FROM logged_in_users ***** BY time DESC LIMIT 1;" ] },
Finalmente podemos especificar a donde se dirige Osquery para listar paquetes, para ello agregamos lo siguiente:
"packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf", "incident-response": "/usr/share/osquery/packs/incident-response.conf", "it-compliance": "/usr/share/osquery/packs/it-compliance.conf", "vuln-management": "/usr/share/osquery/packs/vuln-management.conf" } }
Guardamos los cambios usando las teclas Ctrl + O y salimos del editor. Podemos comprobar el archivo ejecutando el siguiente comando:
sudo osqueryctl config-check
4. Cómo usar Osquery en Ubuntu 17.04
Una vez configurado estos archivos podremos iniciar Osquery con un archivo de configuración, para ello ejecutaremos lo siguiente:
sudo osqueryi --config_path /etc/osquery/osquery.conf –verbose
Una vez accedamos a la consola ingresaremos lo siguiente:
; select * from logged_in_users ;
Con esta consulta vemos que usuario están conectados actualmente, para conocer los anteriores inicios de sesión ejecutaremos lo siguiente:
; select * from last ;
Para visualizar las tareas programadas en crontab usaremos la siguiente línea:
; select command, path from crontab ;
Así es como contamos con múltiples tipos de consulta usando Osquery en Ubuntu 17. Siempre podremos iniciar la herramienta ejecutando el siguiente comando.
sudo systemctl start osquerydSi quieres tener el control sobre todo lo que ocurre en tu equipo es bueno que utilices herramientas como esta, sobre todo, para temas de seguridad. Además de ello también puedes monitorizar tu sistema Ubuntu y ver todo lo que ocurre en él con el siguiente tutorial.