Cómo configurar el monitoreo de integridad de archivos (FIM) usando osquery en Linux

instalar osquery

Osquery es un sistema operativo de código abierto para instrumentación, monitoreo y análisis. 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. Nos permite explorar el perfil, el rendimiento, las comprobaciones de seguridad, etc. de todos esos sistemas operativos, utilizando consultas basadas en SQL.

En este tutorial, le mostraremos cómo configurar el Monitoreo de integridad de archivos (FIM) usando osquery. Usaremos los sistemas operativos Linux Ubuntu 18.04 y CentOS 7.

requisitos previos

  • Linux (Ubuntu o CentOS)
  • Privilegios de ra√≠z
  • Primera gu√≠a osquery completada

Lo que haremos

  1. Instalar osquery en el servidor Linux
  2. Habilitar el consumo de Syslog para osquery
  3. Configuración básica de osquery
  4. Configurar osquery de monitoreo de integridad de archivos
  5. Pruebas

Paso 1: instale osquery en el servidor Linux

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

en Ubuntu

Agregue la clave osquery al sistema.

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

Agregue el repositorio osquery e instale el paquete.

sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y

En CentOS

Agregue la clave osquery al sistema.

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

Agregue y habilite el repositorio osquery e instale 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

Espere a que se instalen todos los paquetes.

instalar osquery

Nota:

Si obtiene el error sobre el comando yum-config-manager.

sudo: yum-config-manager: command not found

Instale el paquete ‘yum-utils’.

yum -y install yum-utils

Paso 2: habilite el consumo de Syslog en osquery

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

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

en Ubuntu

Instale el paquete rsyslog usando el comando apt a continuación.

sudo apt install rsyslog -y

En CentOS

Instale el paquete rsyslog usando el comando yum a continuación.

sudo yum install rsyslog -y

Una vez completada la instalaci√≥n, vaya al directorio ‘/etc/rsyslog.d’ y cree un nuevo archivo de configuraci√≥n osquery.conf.

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

Pegue la siguiente configuración allí.

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

Guardar y Salir.

Configurar osquery para leer el syslog

Paso 3 РConfiguración básica osquery

La configuraci√≥n predeterminada de osquery es ‘osquery.conf’, normalmente ubicada en el directorio ‘/etc/osquery’. Hay ejemplos de la configuraci√≥n de osquery ‘/usr/share/osquery/osquery.conf’ y ejemplos de configuraci√≥n de paquetes de osquery.

En este paso, aprenderemos sobre los componentes de configuración de osquery, crearemos la configuración de osquery personalizada y luego implementaremos osqueryd como un 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: parte del comando CLI de osqueryd y determina el inicio y la inicializaci√≥n de las aplicaciones.
  • Programaci√≥n: defina el flujo de los nombres de las consultas programadas a los detalles de la consulta.
  • Decoradores: se utiliza para agregar ¬ędecoraciones¬Ľ adicionales a los registros de resultados e instant√°neas.
  • Packs: conjunto de consultas de horarios.
  • M√°s: Ruta de archivo, YARA, Prometheus, Vistas, EC2, Configuraci√≥n de Chef.

Vaya al directorio ‘/etc/osquery’ y cree una nueva configuraci√≥n personalizada ‘osquery.conf’.

cd /etc/osquery/
vim osquery.conf

Pegue las siguientes configuraciones allí.

{
    "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"
    }
}

Guardar y Salir.

Nota:

  • Estamos usando el ‘sistema de archivos’ como complementos de configuraci√≥n y registrador.
  • Defina la ruta del registrador al directorio ‘/var/log/osquery’.
  • Habilite el pip de syslog en el archivo ‘/var/syslog/syslog_pipe’.
  • En el programador, definimos tres consultas para verificar crontab, informaci√≥n del sistema e inicio de sesi√≥n ssh.
  • Habilite los paquetes de osquery llamados ‘osquery-monitoring’ y los archivos de paquetes ubicados en el directorio ‘/usr/share/osquery/packs’.

Ahora inicie el servicio del demonio osqueryd y permita que se inicie cada vez que se inicia el sistema.

systemctl start osqueryd
systemctl enable osqueryd

Y reinicie el servicio rsyslog.

systemctl restart rsyslog

Se ha completado osquery de configuración básica.

Paso 4: configure el monitoreo de integridad de archivos (FIM) usando osquery

Osquery proporciona monitoreo de integridad de archivos en Linux y MacOS Darwin usando inotify y FSEvents. Simplemente, monitorea y detecta cualquier cambio de archivos en el directorio definido usando ‘file_path’ y luego almacena toda la actividad en la tabla file_events.

En este paso, configuraremos osquery para monitorear directorios importantes como home, directorio ssh, etc., tmp y el directorio raíz www web usando paquetes FIM personalizados.

Vaya al directorio ‘/usr/share/osquery/packs’ y cree un nuevo archivo de configuraci√≥n de paquetes ‘fim.conf’.

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

Pegue 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/%%"
      ]
  }
}

Guardar y Salir.

Ahora regrese al directorio de configuraci√≥n ‘/etc/osquery’ y edite el archivo osquery.conf.

cd /etc/osquery/
vim osquery.conf

Agregue la configuraci√≥n de paquetes de monitoreo de integridad de archivos dentro de la secci√≥n ‘paquetes’.

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

monitoreo de archivos osquery

Guarde y salga, luego reinicie el servicio osqueryd.

systemctl restart osqueryd

reiniciar osqueryd

Nota:

Siga revisando el archivo de configuraci√≥n JSON usando el filtro JSON ‘http://jsonlint.com/‘ y aseg√ļrese de que no haya ning√ļn error.

Paso 5 – Prueba

Probaremos los paquetes de monitoreo de integridad de archivos creando un nuevo archivo en el directorio definido ‘home’ y ‘www’.

Vaya al directorio ‘/var/www/’ y cree un nuevo archivo llamado ‘howtoforge.md’.

cd /var/www/
touch howtoforge.md

Vaya al directorio ‘/home/youruser/’ y cree un nuevo archivo llamado ‘hakase-labs.md’.

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

Ahora revisaremos todos los registros de monitoreo usando el modo interactivo en tiempo real osqueryi y los registros de los resultados de osquery.

Probando la configuración de osquery

osqueryi

Ejecute el comando osqueryi a continuación.

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

Ahora verifique todos los registros sobre cambios de archivos en la tabla ‘file_events’.

Por cambios globales.

select * from file_events;

Para el directorio ‘inicio’.

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

Usando osqueryi

registro de resultados de osqueryd

Vaya al directorio ‘/var/log/osquery’ y obtendr√° el archivo ‘osqueryd.results.log’.

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

Filtre los registros de osquery usando el comando ‘grep’.

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

Verá que se ha creado información sobre esos archivos.

registro de resultados de osqueryd

La instalación y configuración de File Integrity Monitoring (FIM) en Linux Server Ubuntu y CentOS usando osquery se completó con éxito.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *