Cómo configurar la supervisión de la integridad de los archivos (FIM) con osquery en Linux

Osquery es un sistema operativo de código abierto de instrumentación, monitorización y análisis. Creado por Facebook, expone un sistema operativo como una base de datos relacional de alto rendimiento que puede consultarse mediante consultas basadas en SQL.

Osquery es un software multiplataforma, se puede instalar en Linux, Windows, MacOS y FreeBSD. Nos permite explorar el perfil de todos esos sistemas operativos, su rendimiento, comprobar su seguridad, etc., mediante consultas basadas en SQL.

En este tutorial, te mostraremos cómo configurar la Monitorización de la Integridad de los Archivos (FIM) utilizando osquery. Utilizaremos los sistemas operativos Linux Ubuntu 18.04 y CentOS 7.

Requisitos previos

  • Linux (Ubuntu o CentOS)
  • Privilegios de root
  • Primera guía de osquery completada

Qué haremos

  1. Instalar osquery en un servidor Linux
  2. Habilitar el Consumo de Syslog para osquery
  3. Configuración básica de osquery
  4. Configurar la Monitorización de Integridad de Archivos de osquery
  5. Probar

Paso 1 – Instalar osquery en el Servidor Linux

Osquery proporciona su propio repositorio para la instalación en todas las plataformas, y el primer paso que vamos a hacer es instalar el paquete osquery DESDE el repositorio oficial de osquery.

En Ubuntu

Añade la clave osquery al sistema.

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

Añade el repositorio osquery e instala el paquete.

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 al sistema.

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

Añade y activa el repositorio osquery, e instala el paquete.

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 -y

Espera a que se instalen todos los paquetes.

Instalar osquery

Nota:

Si aparece el error del comando yum-config-manager.

sudo: yum-config-manager: command not found

Instala el paquete ‘yum-utils’.

yum -y install yum-utils

Paso 2 – Habilitar el consumo de Syslog en osquery

Osquery proporciona funciones para leer o consumir registros del sistema en el MacOS de Apple utilizando el Apple System Log (ASL), y para Linux es utilizando el syslog.

En este paso, habilitaremos el consumo de syslog para osquery a través del rsyslog.

En Ubuntu

Instala el paquete rsyslog utilizando el comando apt que aparece a continuación.

sudo apt install rsyslog -y

En CentOS

Instala el paquete rsyslog utilizando el siguiente comando yum.

sudo yum install rsyslog -y

Una vez completada la instalación, ve al directorio ‘/etc/rsyslog.d’ y crea un nuevo archivo de configuración osquery.conf.

cd /etc/rsyslog.d/
vim osquery.conf

Pega allí la siguiente configuración.

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

Guarda y sal.

Configura osquery para leer el syslog

Paso 3 – Configuración básica osquery

La configuración por defecto de osquery es ‘osquery.conf’, normalmente ubicado en el directorio ‘/etc/osquery’. Existen ejemplos de configuración de osquery ‘/usr/share/osquery/osquery.conf’ y ejemplos de configuración de paquetes de osquery.

En este paso, conoceremos los componentes de la configuración de osquery, crearemos la configuración personalizada de osquery y, a continuación, desplegaremos osqueryd como servicio.

La configuración de osquery formateada como un archivo JSON contiene las especificaciones de configuración de osquery que se describen a continuación.

  • Opciones: forma parte del comando CLI de osqueryd y determina el inicio y la inicialización de la aplicación.
  • Programación: Define el flujo de los nombres de las consultas programadas a los detalles de la consulta.
  • Decoradores: Se utilizan para añadir «decoraciones» adicionales a los resultados y a los registros de instantáneas.
  • Paquetes: un grupo de las consultas programadas.
  • Más información: Ruta de archivos, YARA, Prometheus, Vistas, EC2, Configuración de Chef.

Ve al directorio ‘/etc/osquery’ y crea una nueva configuración personalizada ‘osquery.conf’.

cd /etc/osquery/
vim osquery.conf

Pega allí las siguientes configuraciones.

{
    "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": "hakase-labs",
        "enable_syslog": "true",
        "syslog_pipe_path": "/var/osquery/syslog_pipe",
        "force": "true",
        "audit_allow_sockets": "true",
        "schedule_default_interval": "3600"
    },


    "schedule": {
        "crontab": {
            "query": "SELECT * FROM crontab;",
            "interval": 300
        },
        "system_info": {
            "query": "SELECT hostname, cpu_brand, physical_memory FROM system_info;",
            "interval": 3600
        },
        "ssh_login": {
            "query": "SELECT username, time, host FROM last WHERE type=7",
            "interval": 360
        }
    },

    "decorators": {
        "load": [
            "SELECT uuid AS host_uuid FROM system_info;",
            "SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;"
        ]
    },

    "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf"
    }
}

Guarda y sal.

Nota:

  • Estamos utilizando el ‘filesystem’ como config y plugins logger.
  • Define la ruta del logger al directorio ‘/var/log/osquery’.
  • Habilita el syslog pip al archivo ‘/var/syslog/syslog_pipe’.
  • En el programador, definimos tres consultas para comprobar el crontab, la información del sistema y el inicio de sesión ssh.
  • Habilita los paquetes osquery llamados ‘osquery-monitoring’, y los archivos packs ubicados en el directorio ‘/usr/share/osquery/packs’.

Ahora inicia el servicio demonio osqueryd y habilítalo para que se inicie cada vez que arranque el sistema.

systemctl start osqueryd
systemctl enable osqueryd

Y reinicia el servicio rsyslog.

systemctl restart rsyslog

La configuración básica de osquery ha finalizado.

Paso 4 – Configurar la Monitorización de la Integridad de los Archivos (FIM) mediante osquery

Osquery proporciona Monitorización de la Integridad de los Ficheros en Linux y MacOS Darwin utilizando inotify y FSEvents. Simplemente, monitoriza y detecta cualquier cambio de archivos en el directorio definido utilizando el ‘file_path’y luego almacena toda la actividad en la tabla file_events.

En este paso, configuraremos osquery para que supervise directorios importantes como home, directorio ssh, etc, tmp, y el directorio raíz de la web www utilizando paquetes FIM personalizados.

Ve al directorio ‘/usr/share/osquery/packs’ y crea un nuevo archivo de configuración de packs ‘fim.conf’.

cd /usr/share/osquery/packs
vim fim.conf

Pega las configuraciones a continuación.

{
  "queries": {
    "file_events": {
      "query": "SELECT * FROM file_events;",
      "removed": false,
      "interval": 300
    }
  },
  "file_paths": {
    "homes": [
      "/root/.ssh/%%",
      "/home/%/.ssh/%%"
    ],
      "etc": [
      "/etc/%%"
    ],
      "home": [
      "/home/%%"
    ],
      "tmp": [
      "/tmp/%%"
    ],
      "www": [
      "/var/www/%%"
      ]
  }
}

Guarda y sal.

Ahora vuelve al directorio de configuración ‘/etc/osquery’ y edita el archivo osquery.conf.

cd /etc/osquery/
vim osquery.conf

Añade la configuración de los paquetes de Monitorización de la Integridad de los Archivos dentro de la sección ‘paquetes’.

    "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
        "fim": "/usr/share/osquery/packs/fim.conf"
    }

supervisión de archivos osquery

Guarda y sal, luego reinicia el servicio osqueryd.

systemctl restart osqueryd

Reinicia osqueryd

Nota:

Sigue comprobando el archivo de configuración JSON utilizando el linter JSON‘http://jsonlint.com/‘ y asegúrate de que no hay ningún error.

Paso 5 – Pruebas

Probaremos los paquetes de Monitorización de la Integridad de los Archivos creando un nuevo archivo en el directorio definido ‘home’ y ‘www’.

Ve al directorio ‘/var/www/’ y crea un nuevo archivo llamado ‘howtoforge.md’.

cd /var/www/
touch howtoforge.md

Ve al directorio ‘/home/tuusuario/’ y crea un nuevo archivo llamado ‘hakase-labs.md’.

cd /home/vagrant/
touch hakase-labs.md

Ahora comprobaremos todos los registros de monitorización utilizando el modo interactivo en tiempo real osqueryi y los registros de los resultados de osquery.

Probar la configuración de osquery

osqueryi

Ejecuta el siguiente comando osqueryi.

osqueryi --config-path /etc/osquery/osquery.conf

Ahora comprueba todos los logs sobre cambios de archivos en la tabla ‘file_events’.

Para cambios globales.

select * from file_events;

Para el directorio ‘home’.

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";

Para el directorio raíz web ‘www’.

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";

Utilizar osqueryi

registro de resultados osqueryd

Ve al directorio ‘/var/log/osquery’ y obtendrás el archivo ‘osqueryd.results.log’.

cd /var/log/osquery/
ls -lah osqueryd.results.log

Filtra los registros de osquery utilizando el comando ‘grep’.

grep -rin howtoforge.md osqueryd.results.log
grep -rin hakase-labs.md osqueryd.results.log

Verás información sobre los archivos que se han creado.

registro de resultados de osqueryd

La instalación y configuración de la Monitorización de la Integridad de los Ficheros (FIM) en los servidores Linux Ubuntu y CentOS mediante osquery se ha completado con éxito.

Referencia

También te podría gustar...