Cómo instalar Fleet Osquery Manager en Rocky Linux 9

Fleet es un gestor de osquery de código abierto que puede utilizarse para mantener estaciones de trabajo y servidores seguros y llevar un inventario preciso de todos tus dispositivos. Fleet permite realizar consultas programables en directo, transmitir registros y obtener visibilidad en tiempo real de servidores, contenedores y dispositivos como portátiles y ordenadores locales.

Con fleet, puedes identificar vulnerabilidades en tus dispositivos. Esto significa que fleet identificará automáticamente software, aplicaciones y paquetes obsoletos, vulnerables o comprometidos. Además, fleet identificará configuraciones erróneas de los dispositivos y problemas de inscripción en MDM. Fleet puede ser útil para las industrias de TI, seguridad o cualquier dispositivo de supervisión del cumplimiento.

Fleet también permite y automatiza los flujos de trabajo de seguridad en una sola aplicación. Puedes recopilar eventos mediante osquery/agente desde múltiples servidores y dispositivos. A continuación, almacena los datos recopilados en un único lugar al que se puede acceder a través de los paneles de control de Fleet o mediante un terminal a través de fleetctl.

En este tutorial, desplegarás Fleet Osquery Manager en un servidor Ubuntu 22.04. Esta guía incluye la instalación del servidor MySQL, el servidor Redis y el despliegue seguro del servidor de bases de datos MySQL. Al final, habrás asegurado Fleet Osquery Manager, que te permite monitorizar hosts, identificar vulnerabilidades en hosts, verificar cambios realizados con otros sistemas y también configurar consultas personalizadas para la monitorización de tu host.

Requisitos previos

Para completar este tutorial, debes tener los siguientes requisitos:

  • Un servidor Linux que ejecute Rocky Linux 9.
  • Un usuario no root con privilegios de administrador sudo/root.
  • Un SELinux ejecutándose en modo permisivo.
  • Un nombre de dominio apuntando a la dirección IP del servidor.
  • Certificados SSL/TLS generados y verificados.

Cuando todos los requisitos estén en su sitio, estarás listo para iniciar la instalación de Fleet Osquery Manager.

Instalación del Servidor MySQL

En esta sección, instalarás el servidor MySQL, iniciarás y activarás el servicio MySQL, establecerás la contraseña raíz de MySQL y también configurarás la instalación segura del servidor MySQL mediante‘mysql_secure_installation‘.

En este tutorial, el servidor MySQL se utilizará para almacenar datos e información del Gestor de Flotas. Instalarás el servidor MySQL desde el repositorio oficial de Rocky Linux. Instálalo ejecutando el siguiente comando dnf.

sudo dnf install mysql-server

Introduce y cuando se te pida confirmación y pulsa ENTER para continuar.

instalar servidor mysql

Ya has instalado el servidor MySQL, que se utilizará como base de datos para la flota. Antes de configurar el servidor MySQL, inicia y activa el servicio MySQL con el siguiente comando systemctl.

sudo systemctl start mysqld
sudo systemctl enable mysqld

Después, verifica el servidor MySQL para asegurarte de que el servicio se está ejecutando.

sudo systemctl status mysqld

Deberías recibir una salida similar a ésta – La salida ‘activo (en ejecución)‘ confirma que el servidor MySQL está en ejecución. Y la salida ‘...; activado; ...’ confirma que el servidor MySQL se iniciará automáticamente al arrancar el sistema.

verificar mysql

Con el servidor MySQL en funcionamiento, puedes configurar la contraseña de root del servidor MySQL. Accede al shell de MySQL utilizando el comando‘mysql‘ que aparece a continuación.

sudo mysql

Ejecuta la siguiente consulta para establecer una contraseña para el usuario raíz de MySQL y, a continuación, cierra la sesión en el shell de MySQL. Asegúrate de cambiar la contraseña en la siguiente consulta.

ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "toor?p4ssw0rd";
exit

configurar contraseña raíz mysql

A continuación, ejecuta el siguiente comando«mysql_secure_installation» para asegurar la instalación de tu servidor MySQL.

sudo mysql_secure_installation

Cuando se te solicite, introduce tu contraseña de root de MySQL. A continuación, también se te preguntará por las siguientes configuraciones de MySQL:

  • ¿Instalar el componente VALIDAR CONTRASEÑA en MySQL? Introduce Y para confirmar.
  • Introduce la política de contraseña numérica que deseas utilizar. Selecciona la política que prefieras para tu servidor MySQL.
  • ¿Cambiar la contraseña raíz de MySQL? Introduce n para No.
  • ¿Quitar el usuario anónimo por defecto de MySQL? Introduce Y.
  • ¿Desactivar el inicio de sesión remoto para el usuario raíz de MySQL? Introduce Y.
  • ¿Eliminar la prueba de base de datos por defecto del servidor MySQL? Introduce Y.
  • ¿Recargar los privilegios de la tabla para aplicar los cambios? Introduce Y para confirmar.

Ya has instalado el servidor MySQL, configurado la contraseña raíz de MySQL y asegurado el despliegue de MySQL. A continuación, instalarás Redis, que se utilizará para poner en cola las consultas distribuidas y almacenar en caché los datos para el gestor de flotas osquery.

Instalación del servidor Redis

En esta sección, instalarás el servidor Redis en Rocky Linux 9, iniciarás y habilitarás Redis, y verificarás el estado del servidor Redis para asegurarte de que se está ejecutando. Redis se utilizará para ingerir y poner en cola los resultados de las consultas distribuidas, almacenar datos en caché, etc.

Introduce el siguiente comando para instalar Redis en tu servidor Rocky Linux.

sudo dnf install redis

Confirma la instalación escribiendo y y pulsando ENTER para continuar.

instalar redis

Una vez instalado Redis, ejecuta el siguiente comando systemctl para iniciar y habilitar el servidor Redis.

sudo systemctl start redis
sudo systemctl enable redis

A continuación, verifica el servicio Redis introduciendo el siguiente comando. Esto asegurará que el servicio Redis se está ejecutando y está habilitado.

sudo systemctl status redis

Obtendrás una salida como ésta – La salida ‘activo (en ejecución)‘ confirma que el servidor Redis está en ejecución. La salida ‘…; enabled;…’ confirma que el servidor Redis está habilitado y se ejecutará automáticamente al iniciar el sistema.

verificar redis

Configurar la base de datos MySQL y el usuario

En esta sección, crearás una nueva base de datos MySQL y un nuevo usuario que utilizará el gestor de osquery fleet. Crearás una nueva base de datos y un nuevo usuario a través del intérprete de comandos de MySQL y, a continuación, comprobarás la lista de usuarios y privilegios del nuevo usuario de MySQL.

Accede al shell de MySQL mediante el comando mysql que aparece a continuación. Asegúrate de introducir tu contraseña de root de MySQL cuando se te solicite.

sudo mysql -u root -p

Para crear una nueva base de datos MySQL y un nuevo usuario, ejecuta las siguientes consultas MySQL. En este ejemplo, crearás la base de datos fleetdb y el usuario fleetadmin. Además, asegúrate de cambiar la contraseña en la siguiente consulta.

CREATE DATABASE fleetdb;
CREATE USER fleetadmin@localhost IDENTIFIED BY 'S3curep4ssw0rd--=';
GRANT ALL PRIVILEGES ON fleetdb.* TO fleetadmin@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Resultado:

crear usuario de base de datos

Comprueba la lista de usuarios MySQL utilizando la siguiente consulta. Y deberías ver el nuevo usuario MySQL fleetadmin añadido y el servidor MySQL disponible.

SELECT USER,host FROM mysql.user;

Resultado:

mostrar usuarios

Ahora verifica los privilegios del usuario MySQL fleetadmin. Deberías ver que el usuario fleetadmin tiene privilegios para acceder a la base de datos fleetdb.

SHOW GRANTS FOR fleetadmin@localhost;

Salida:

mostrar privilegios

Escribe‘quit‘ para salir del intérprete de comandos MySQL.

Con la base de datos MySQL y el servidor Redis instalados, y la nueva base de datos y usuario también creados, ya puedes iniciar la instalación de fleet osquery manager.

Descargar Fleet Osquery Manager

Fleet osquery manager está disponible como un único archivo binario que proporciona lo siguiente:

  • El servidor web TLS de Fleet (no se necesita un servidor web externo, pero admite un proxy si se desea)
  • La interfaz web de Fleet
  • La API REST de gestión de aplicaciones de la Flota
  • Los puntos finales de la API osquery de Fleet

En cuanto a fleetctl, es la interfaz de línea de comandos de la flota que te permite gestionar el despliegue, las configuraciones, la integración y los informes de la flota desde la línea de comandos.

En este paso, descargarás el paquete binario fleet y fleetctl de la página oficial de GitHub. En el momento de escribir esto, la última versión de fleet y fleetctl es la v4.26.

En primer lugar, añade el nuevo usuario del sistema«fleet» introduciendo el siguiente comando.

sudo useradd -r -d /opt/fleet -s /usr/sbin/nologin fleet

Descarga el paquete fleet y fleetctl mediante el siguiente comando curl. En el momento de escribir esto, la última versión de fleet es la v4.26.

curl -LO https://github.com/fleetdm/fleet/releases/download/fleet-v4.26.0/fleet_v4.26.0_linux.tar.gz
curl -LO https://github.com/fleetdm/fleet/releases/download/fleet-v4.26.0/fleetctl_v4.26.0_linux.tar.gz

setup usuario descargar flota

Una vez descargado, extrae el paquete fleet y fleetctl mediante el siguiente comando tar.

tar xf fleet_v4.26.0_linux.tar.gz
tar xf fleetctl_v4.26.0_linux.tar.gz

A continuación, copia el archivo binario de fleet y fleetctl en el directorio‘/usr/bin‘. Con esto, ya puedes ejecutar el comando fleet y fleetctl desde tu terminal.

cp fleet_v4.26.0_linux/fleet /usr/bin/
cp fleetctl_v4.26.0_linux/fleetctl /usr/bin/

extraer flota y fleetctl

Ahora ejecuta el siguiente comando para asegurarte de que el directorio ‘/usr/bin‘ está disponible en la variable de entorno PATH. Cuando esté disponible, ahora podrás ejecutar los comandos fleet y fleetctl con sudo.

echo $PATH

Comprueba la ruta binaria completa de los comandos fleet y fleetctl. Ambos archivos binarios están disponibles en el directorio‘/usr/bin‘.

which fleet
which fleetctl

Verifica la versión de fleet y fleetctl utilizando el siguiente comando.

fleet version
fleetctl --version

Deberías recibir una salida como ésta – El gestor osquery fleet y fleetctl v4.26 están instalados y añadidos a tu sistema Rocky Linux.

verificar flota

Ahora ejecuta el siguiente comando fleet para inicializar la base de datos para el despliegue de tu flota. Asegúrate de cambiar los detalles de la base de datos MySQL y el usuario en el siguiente comando.

fleet prepare db \
--mysql_address=127.0.0.1:3306 --mysql_database=fleetdb --mysql_username=fleetadmin --mysql_password=S3curep4ssw0rd--=

A continuación se muestra una salida durante la inicialización.

inicializar flota

Cuando finalice la inicialización, deberías obtener una salida como«Migraciones completadas«.

flota migratoria

Con la base de datos de la flota inicializada y migrada, estás listo para configurar tu instalación de Fleet Osquery Manager y ejecutar Fleet en segundo plano como un servicio systemd.

Configurar Fleet Osquery Manager

En este paso, crearás un nuevo directorio de configuración para la flota, añadirás y modificarás el archivo de configuración de la flota que estará ubicado en ‘/etc/fleet/fleet.yml’, y a continuación configurarás el archivo de servicio systemd ‘/etc/systemd/system/fleet.service’ para el gestor de osquery de la flota.

Al final de este paso, tendrás fleet ejecutándose como un servicio systemd, y se habilitará y ejecutará automáticamente al iniciar el sistema.

En primer lugar, crea un nuevo directorio ‘/etc/fleet/certs ‘ que se utilizará para almacenar la configuración de tu flota y los archivos de certificados TLS. A continuación, crea un nuevo archivo de configuración ‘ /etc/fleet/fleet.yml‘ y un archivo de servicio systemd ‘/etc/systemd/system/fleet.service’.

mkdir -p /etc/fleet/certs
touch /etc/fleet/fleet.yml /etc/systemd/system/fleet.service

A continuación, copia tus certificados TLS generados en el directorio ‘/etc/fleet/certs‘ y cambia la propiedad del directorio de configuración de la flota al usuario y grupo‘fleet‘.

cp /etc/letsencrypt/live/fleet.hwdomain.io/fullchain.pem /etc/fleet/certs/
cp /etc/letsencrypt/live/fleet.hwdomain.io/privkey.pem /etc/fleet/certs/
sudo chown -R fleet:fleet /etc/fleet

Abre el archivo de configuración de la flota ‘/etc/fleet/fleet.yml ‘ utilizando el siguiente comando del editor nano.

nano /etc/fleet/fleet.yml

Añade las siguientes líneas al archivo y asegúrate de cambiar los detalles base de datos MySQL y usuario y la ruta de los archivos de certificados SSL/TLS.

Con esto, ejecutarás la flota con el servidor de base de datos MySQL, Redis, despliegue seguro mediante certificados TLS y habilitarás el registro en formato json.

mysql:
  address: 127.0.0.1:3306
  database: fleetdb
  username: fleetadmin
  password: S3curep4ssw0rd--=
redis:
  address: 127.0.0.1:6379
server:
  cert: /etc/fleet/certs/fullchain.pem
  key: /etc/fleet/certs/privkey.pem
logging:
  json: true
# auth:
# jwt_key: 0iXLJRKhB77puDm13G6ehgkClK0kff6N

Guarda y sal del archivo ‘/etc/fleet/fleet.yml ‘ cuando hayas terminado.

A continuación, abre el archivo del servicio systemd de la flota ‘/etc/systemd/system/fleet.service ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/systemd/system/fleet.service

Añade las siguientes líneas al archivo. Con esto, ejecutarás fleet como un servicio systemd, con el archivo de configuración ‘ /etc/fleet/fleet.yml’, y este servicio se ejecutará como usuario y grupo‘fleet‘.

[Unit]
Description=Fleet Osquery Fleet Manager
After=network.target
[Service]
User=fleet
Group=fleet
LimitNOFILE=8192
ExecStart=/usr/bin/fleet serve -c /etc/fleet/fleet.yml
ExecStop=/bin/kill -15 $(ps aux | grep "fleet serve" | grep -v grep | awk '{print$2}')

[Install]
WantedBy=multi-user.target

Guarda el archivo ‘ /etc/systemd/system/fleet.service’ y sal del editor cuando hayas terminado.

Ahora ejecuta la siguiente utilidad de comandos systemctl para recargar el gestor systemd y aplicar los cambios.

sudo systemctl daemon-reload

A continuación, inicia y habilita el servicio de flota mediante la siguiente utilidad de comandos systemctl.

sudo systemctl start fleet
sudo systemctl enable fleet

fleet inicia systemd

Ahora verifica el servicio de flota utilizando el siguiente comando para asegurarte de que el servicio se está ejecutando.

sudo systemctl status fleet

Ahora tienes la flota funcionando como un servicio systemd. Además, ahora está habilitado y se iniciará automáticamente al arrancar el sistema.

verificar flota

Con esto, la flota osquery manage se está ejecutando ahora como un servicio systemd con el archivo de configuración predeterminado ‘/etc/fleet/fleet.yml’ en el puerto TCP 8080. Antes de acceder a la instalación de tu flota, debes abrir el puerto 8080 en firewalld.

Configurar Firewalld

En esta sección, abrirás el puerto 8080 (utilizado por fleet) en tu sistema a través del firewalld. Por defecto en Rocky Linux, el firewalld está instalado y funcionando.

Ejecuta el siguiente comando firewall-cmd para añadir el puerto 8080 al firewalld. A continuación, recarga las reglas del firewalld para aplicar los cambios.

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

Ahora comprueba la lista de reglas firewalld y asegúrate de que el puerto 8080 está añadido y disponible en firewalld.

sudo firewall-cmd --list-all

En la sección«puertos«, deberías ver el puerto«8080/tcp«. Esto confirma que el puerto 8080 de la flota se ha añadido al firewalld.

configurar firewalld

Configurar el Gestor de Osquerías de Flotas

Si has seguido este tutorial hasta ahora, el gestor de osquery de la flota se está ejecutando y el puerto 8080 se ha añadido al firewalld. En esta sección, configurarás el despliegue de fleet osquery manager. Configurarás el primer usuario y el despliegue a través de un navegador web.

Abre tu navegador web y visita el dominio de tu instalación de fleet osquery manager con el puerto TCP 8080 (es decir: https://fleet-rock.hwdomain.io:8080/).

En el primer paso, se te pedirá que configures el primer usuario para el despliegue de tu flota. Introduce tu nombre completo, dirección de correo electrónico y contraseña, y haz clic en Siguiente.

configurar usuario

Introduce los detalles de la organización y vuelve a hacer clic en Siguiente.

configuración orgz

Para la URL de la flota, puedes dejarla por defecto y hacer clic en Siguiente.

configurar url

Vuelve a comprobar las configuraciones de tu flota y haz clic en Confirmar para completar la implantación.

confirmar todos los ajustes

Cuando se haya completado con éxito, deberías obtener el panel de administración de la flota.

salpicadero

Ahora la instalación del gestor de flotas osquery ha finalizado. Con esto, puedes añadir nuevos hosts a la flota de múltiples formas, como utilizando Orbit (tiempo de ejecución de osquery), fleet Desktop para hosts con el entorno de escritorio (incluyendo Windows y macOS), o manualmente generando el secreto de la flota y el certificado TLS.

Añadir hosts mediante el tiempo de ejecución de osquery Orbit

Orbit es un tiempo de ejecución de osquery y un auto-actualizador que te permite desplegar fácilmente osquery y gestionar las configuraciones. Orbit es un agente para Fleet, puede utilizarse con o sin Fleet, y Fleet puede utilizarse con o sin Orbit.

En este paso, aprenderás a generar el instalador del paquete Orbit para las distribuciones basadas en RHEL. A continuación, aprenderás a añadir un nuevo host a la flota mediante Orbit.

Para empezar, vuelve al panel de control de la flota y haz clic en«Añadir hosts».

añadir anfitriones

Selecciona la pestaña«Avanzado«, descarga el certificado de flota «fleet.pem» y, a continuación, copia el comando que se utilizará para crear un paquete orbit para distribuciones específicas. Puedes generar un instalador orbit para RPM, DEB y pkg (para macOS).

añadir anfitriones

A continuación, sube el certificado de flota que has descargado al servidor de flota. En este ejemplo, utilizarás«scp» para subir el archivo«fleet.p em» al servidor de la flota.

scp fleet.pem [email protected]:/opt/

Una vez subido el certificado fleet.pem, ejecuta la línea de comandos que se utilizará para generar el paquete instalador de la órbita. Asegúrate de cambiar el parámetro‘–type‘ por el paquete que prefieras.

En este ejemplo, generarás un paquete orbit para una distribución basada en RHEL. Para una distribución basada en Debian, puedes cambiar el parámetro–type’ a‘deb‘, y puedes utilizar el paquete‘pkg‘ para generar un instalador orbit para macOS.

fleetctl package --type=rpm --fleet-url=https://fleet-rock.hwdomain.io:8080 \
--enroll-secret=ewQBXuvBJ70ZiFFkjOLFLp3V4POe+KTu \
--fleet-certificate=/opt/fleet.pem

Salida:

crear paquete rpm

Una vez finalizado el proceso, podrás ver el archivo‘fleet-osquery_version.rpm‘ en tu directorio de trabajo actual.

A continuación, instala el paquete orbit generado mediante el siguiente comando rpm. Una vez instalado, el paquete orbit creará un nuevo archivo de servicio‘orbit.service‘ que te permitirá gestionar orbit mediante systemctl.

sudo rpm -Uvh fleet-osquery_version.rpm

Salida:

instalar órbita

Una vez instalado orbit, ejecuta el siguiente comando systemctl para iniciar el servicio orbit. A continuación, comprueba el estado para asegurarte de que el servicio orbit se está ejecutando.

sudo systemctl start orbit
sudo systemctl status orbit

Deberías recibir una salida como ésta – El servicio orbit está«activo (en ejecución)» y está habilitado y se ejecutará automáticamente al iniciarse el sistema.

verificar órbita

Ahora vuelve al panel de control de la flota y deberías ver el nuevo host«fleet-rock.hwdomain.io» añadido al gestor de osquery de la flota.

lista de anfitriones

Haz clic en el nombre de host «fleet-rock.hwdomain.io» para obtener información detallada sobre el host.

detalles del anfitrión

Con esto, ya has añadido un host al gestor de osquery de la flota a través del tiempo de ejecución de osquery de Orbit. También has generado un instalador de orbit para distribuciones basadas en RHEL.

En el siguiente paso, aprenderás a configurar fleetctl para conectarte al servidor de la flota y gestionar su despliegue a través del terminal.

Configurar fleetctl para gestionar la flota

Fleetctl o Fleet control es una línea de comandos para gestionar el despliegue de la flota desde el terminal. Fleetctl te permite gestionar configuraciones y consultas, generar un instalador osquery y habilitar el flujo de trabajo GitOps con fleet.

En este paso, configurarás fleetctl y te conectarás al gestor de osquery de fleet que has instalado.

En primer lugar, ejecuta el siguiente comando para configurar la URL predeterminada de fleet. Asegúrate de cambiar el nombre de dominio y de que utilizas una conexión segura HTTPS. Con esto, configurarás la conexión de la flota en el contexto/perfil«por defecto«.

fleetctl config set --address https://fleet-rock.hwdomain.io:8080

Accede al gestor de osquery de tu flota utilizando el comando que aparece a continuación. Asegúrate de cambiar la dirección de correo electrónico en el comando de abajo.

fleetctl login --email [email protected]

Ahora introduce la contraseña que utilizas para acceder al panel de control de la flota. Si lo consigues, deberías recibir un mensaje como«Inicio de sesión en la flota correcto y contexto configurado«.

configurar fleetctl

Después de iniciar sesión en fleet, ejecuta el siguiente comando fleetctl para verificar tus configuraciones.

Comprueba la lista de hosts disponibles en fleet.

fleetctl get hosts

Resultado – Deberías ver que el host‘fleet-rock.hwdomain.io‘ está disponible en fleet con la versión osquery v5.7.0.

lista de anfitriones

Comprobar la lista de usuarios disponibles en la flota.

fleetctl get ur

Salida – Deberías ver el usuario de flota que has creado.

listar usuarios

Con esto, ya has configurado fleetctl y te has conectado a tu despliegue de flota. Ahora puedes configurar hosts, y consultas, gestionar actualizaciones, ejecutar consultas en directo, desde tu servidor terminal.

Conclusión

En este tutorial, has instalado Fleet Osquery Manager en un servidor Rocky Linux 9. Has instalado Fleet con MySQL como backend de la base de datos y Redis para la ingesta de datos de cola y caché. Además, has asegurado Fleet con certificados SSL/TLS y ejecutando Fleet como un servicio systemd que te permite gestionar Fleet fácilmente con la utilidad de comandos systemctl.

Por último, también has añadido un host a Fleet mediante Orbit (tiempo de ejecución de osquery) y has generado un instalador de paquetes para distribuciones basadas en RHEL. Además, has configurado fleetctl y te has conectado a Fleet para poder gestionar y configurar hosts desde tu servidor terminal.

Con esto en mente, ahora puedes añadir nuevos hosts a la gestión de osqueryd de Fleet a través de orbit o utilizando manualmente el servicio osqueryd simple. Además, puedes definir nuevas consultas para monitorizar tus hosts, configurar el procesamiento de vulnerabilidades que te permite detectar CVEs a través de Fleet, y muchas cosas más. Obtén más información sobre Fleet en la documentación oficial de Fleet.

También te podría gustar...