GNU/Linux >> Tutoriales Linux >  >> Linux

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

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, mediante 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 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:instalar 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

Agrega 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

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.

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:habilitar 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.

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 osqueryd CLI y determina el inicio y la inicialización de las aplicaciones.
  • Programación:defina el flujo de los nombres de consultas programadas a los detalles de la consulta.
  • Decoradores:se utiliza para agregar "decoraciones" adicionales a los resultados y registros de instantáneas.
  • Paquetes:un grupo de consultas de programación.
  • 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 el crontab, la información del sistema y el 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:configurar el monitoreo de integridad de archivos (FIM) mediante 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"
    }

Guarde y salga, luego reinicie el servicio osqueryd.

systemctl restart osqueryd


Nota:

Continúe revisando el archivo de configuración de JSON usando el linter de 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.

osqueryi

Ejecute el siguiente comando osqueryi.

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

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

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

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.

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


Linux
  1. Cómo crear un archivo en Linux usando Terminal/Línea de comando

  2. Cómo configurar el servidor de archivos FTP vsftpd en Redhat 7 Linux

  3. Qué es NFS y cómo instalarlo en Linux

  4. Cómo dividir iso o archivo usando el comando 'dividir' en Linux

  5. Cómo instalar un archivo .dsc en Linux

Cómo configurar el servidor de transmisión de medios usando Jellyfin en Linux

Cómo formatear programas Shell usando Shfmt en Linux

Cómo configurar un cortafuegos con UFW en Linux

Cómo configurar el cortafuegos con Gufw en el escritorio de Linux

Cómo configurar un servidor de archivos básico usando simpleHTTPserver

Cómo instalar la herramienta de monitoreo del sistema Gtop en Linux