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 *