Cómo instalar Fleet Osquery Manager en Ubuntu 22.04
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 una flota, puedes identificar vulnerabilidades en tus dispositivos. Esto significa que la flota identificará automáticamente software, aplicaciones y paquetes obsoletos, vulnerables o comprometidos. Además, la flota 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 utilizando osquery/agent desde múltiples servidores y dispositivos, y luego almacenar los datos recopilados en un único lugar al que se puede acceder mediante los paneles de control de Fleet o utilizando un terminal mediante fleetctl.
En este tutorial, instalarás Fleet Osquery Manager en un servidor Ubuntu 22.04. Este proceso incluye la instalación de los servidores MySQL y Redis en un sistema Ubuntu. Y al final, también aprenderás a añadir el host a la flota mediante Orbit, que es un runtime y auto-actualizador de osquery que te permite desplegar osquery fácilmente, y gestionar configuraciones.
Requisitos previos
Para empezar con este tutorial, debes tener los siguientes requisitos:
- Un servidor que ejecute Ubuntu 22.04 – Este ejemplo utiliza un servidor Ubuntu con el nombre de host‘fleet‘.
- Un usuario no root con privilegios de administrador sudo/root.
- Un nombre de dominio apuntando a la dirección IP del servidor – Este ejemplo utiliza el nombre de dominio ‘fleet.hwdomain.io‘.
Eso es todo; ahora vamos a iniciar la instalación del gestor de osquery de fleet.
Instalación del servidor MySQL
En la arquitectura básica, el gestor de flotas osquery utiliza un servidor MySQL como base de datos backend y datos almacenados. Lo primero que debes hacer para esta guía es instalar el servidor MySQL, asegurar la instalación de MySQL y configurar la contraseña raíz de MySQL.
Para empezar, ejecuta el siguiente comando apt para actualizar y refrescar tu índice de paquetes de Ubuntu.
sudo apt update
A continuación, instala el paquete del servidor MySQL mediante el siguiente comando apt. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.
sudo apt install mysql-server
Una vez instalado MySQL, ejecuta el siguiente comando systemctl para verificar el servidor MySQL y asegurarte de que el servicio está activado y funcionando.
sudo systemctl is-enabled mysql sudo systemctl status mysql
Deberías recibir una salida como ésta – El servidor MySQL está habilitado y se iniciará automáticamente al arrancar el sistema. Y el estado del servidor MySQL es en ejecución.
A continuación, inicia sesión en el intérprete de comandos MySQL mediante el comando «mysql» que aparece a continuación.
sudo mysql
Ejecuta la siguiente consulta para cambiar la contraseña del usuario‘root’ de MySQL. Asegúrate también de cambiar la siguiente contraseña en la consulta. A continuación, escribe«exit» para salir del intérprete de comandos MySQL.
ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "toor?p4ssw0rd"; exit
Con esto, ya puedes empezar a asegurar el servidor MySQL mediante el comando‘mysql_secure_installation‘ que aparece a continuación.
sudo mysql_secure_installation
Cuando se te pida la contraseña de root de MySQL, introduce la nueva contraseña que has configurado. A continuación, se te preguntará por las siguientes configuraciones del servidor 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.
Con esto, el servidor MySQL está instalado, la contraseña de root está configurada y el servidor MySQL también está asegurado mediante el comando«mysql_secure_installation«.
Instalar el servidor Redis
Por defecto, el gestor de osquery fleet utiliza Redis para ingerir y poner en cola los resultados de las consultas distribuidas, almacenar datos en caché, etc. En este paso, instalarás Redis en tu servidor Ubuntu.
Ejecuta el siguiente comando apt para iniciar la instalación de Redis. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.
sudo apt install redis
Una vez instalado Redis, ejecuta el siguiente comando systemctl para verificar el servicio Redis y asegurarte de que el servicio está habilitado y en ejecución.
sudo systemctl is-enabled redis-server sudo systemctl status redis-server
Deberías recibir una salida como ésta – La salida‘enabled‘ confirma que el servicio Redis está habilitado y se ejecutará automáticamente al iniciarse el sistema. El estado del servicio Redis por defecto es en ejecución.
Configurar la base de datos MySQL y el usuario
Tras instalar el servidor MySQL y Redis, ahora crearás una nueva base de datos y un nuevo usuario que utilizará fleet.
Accede al shell de MySQL mediante el comando ‘mysql’ que aparece a continuación.
mysql -u root -p
Ejecuta las siguientes consultas para crear una nueva base de datos MySQL y un nuevo usuario. En este ejemplo, crearás la base de datos fleetdb con el usuario fleetadmin que se utilizará para la instalación del gestor de flotas osquery. 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;
A continuación, ejecuta la siguiente consulta para verificar la lista de usuarios en el servidor MySQL. Y deberías recibir una salida que indique que el usuario fleetadmin se ha añadido a MySQL.
SELECT USER,host FROM mysql.user;
Ejecuta la siguiente consulta para comprobar los privilegios del usuario fleetadmin de MySQL. Deberías recibir como resultado que fleetadmin tiene privilegios para acceder a la base de datos fleetdb.
SHOW GRANTS FOR fleetadmin@localhost;
Ahora introduce‘quit‘ para salir del intérprete de comandos de MySQL. Y ahora, has terminado la configuración del servidor MySQL y estás listo para instalar 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.
Antes de empezar, crea un nuevo usuario de sistema«fleet» utilizando el comando siguiente.
sudo useradd -r -d /opt/fleet -s /usr/sbin/nologin fleet
Descarga el paquete binario fleet y fleetctl -la interfaz de línea de comandos para fleet- mediante el comando curl que aparece a continuación.
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
Una vez descargados, extrae los paquetes fleet y fleetctl mediante el comando tar que aparece a continuación.
tar xf fleet_v4.26.0_linux.tar.gz tar xf fleetctl_v4.26.0_linux.tar.gz
Ahora mueve el archivo binario de‘fleet’ y‘fleetctl‘ al directorio‘/usr/local/bin‘.
cp fleet_v4.26.0_linux/fleet /usr/local/bin/ cp fleetctl_v4.26.0_linux/fleetctl /usr/local/bin/
Comprueba la variable de entorno PATH actual de tu sistema. Si el directorio ‘/usr/local/bin‘ está disponible en la variable de entorno PATH, podrás ejecutar los comandos ‘fleet’ y ‘fleetctl’.
echo $PATH
Comprueba la ruta completa de los comandos «fleet» y «fleetctl» utilizando el comando siguiente. Ambos archivos binarios deben estar disponibles en el directorio ‘/usr/local/bin’.
which fleet which fleetctl
Verifica la versión de ‘fleet‘ y ‘fleetctl‘ utilizando el siguiente comando. En este ejemplo, has instalado fleet y fleetctl v4.26.
fleet version fleetctl --version
Por último, ejecuta el siguiente comando ‘fleet‘ para inicializar la base de datos de tu instalación. Asegúrate también de cambiar los detalles nombre de la base de datos, usuario y contraseña. Con esto, crearás las tablas necesarias para el gestor de osquery de la flota.
fleet prepare db --mysql_address=127.0.0.1:3306 --mysql_database=fleetdb --mysql_username=fleetadmin --mysql_password=S3curep4ssw0rd--=
A continuación se muestra la salida durante el proceso de inicialización/migración de la base de datos de la flota.
Cuando finalice la inicialización, deberías obtener una salida como‘Migración completada‘.
Ahora que la base de datos de fleet osquery manager está migrada. En el siguiente paso, configurarás el despliegue de la flota.
Configurar el Gestor de Osquery de la Flota
Para desplegar la flota, debes asegurarte de que tienes certificados SSL/TLS verificados. Así que, antes de empezar, asegúrate de que tienes un nombre de dominio o un nombre de dominio local apuntando a la dirección IP del servidor y certificados SSL/TLS generados. Puedes utilizar letsencrypt o cualquier gestor de certificados de tu entorno local.
Para este ejemplo, se utilizarán los certificados SSL/TLS generados de Letsencryopt para la instalación de Fleet Osquery Manager.
Ejecuta el siguiente comando para crear nuevos directorios ‘/etc/fleet‘, ‘/etc/fleet/certs’, y un nuevo archivo de configuración ‘/etc/fleet/fleet.yml’, y el nuevo archivo de servicio ‘/etc/systemd/system/fleet.service’.
mkdir -p /etc/fleet/certs touch /etc/fleet/fleet.yml touch /etc/systemd/system/fleet.service
Copia tus certificados SSL/TLS en el directorio ‘/etc/fleet/certs ‘.
cp /etc/letsencrypt/live/fleet.hwdomain.io/fullchain.pem /etc/fleet/certs/ cp /etc/letsencrypt/live/fleet.hwdomain.io/privkey.pem /etc/fleet/certs/
Cambia la propiedad del directorio de configuración de la flota‘/etc/fleet/certs‘ al usuario y grupo ‘fleet’.
sudo chown -R fleet:fleet /etc/fleet
A continuación, 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. Además, asegúrate de cambiar los detalles de la base de datos (nombre de la base de datos, usuario y contraseña) en las siguientes líneas.
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.
Ahora abre el archivo del servicio de flota ‘/etc/systemd/system/fleet.service ‘ utilizando el comando editor nano que aparece a continuación.
sudo nano /etc/systemd/system/fleet.service
Añade las siguientes líneas al archivo. Con esto, ejecutarás fleet como un servicio systemd que te permitirá gestionar fleet fácilmente mediante la utilidad de comandos systemctl.
[Unit] Description=Fleet Osquery Fleet Manager After=network.target [Service] User=fleet Group=fleet LimitNOFILE=8192 ExecStart=/usr/local/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 y sal de él cuando hayas terminado.
A continuación, ejecuta el siguiente comando systemctl para recargar el gestor systemd y aplicar los cambios.
sudo systemctl daemon-reload
Después, inicia y habilita el servicio de flota mediante la utilidad de comandos systemctl que se indica a continuación. Y el servicio de flota estará en marcha y habilitado.
sudo systemctl start fleet sudo systemctl enable fleet
Ejecuta el siguiente comando systemctl para verificar el servicio de flota.
sudo systemctl status fleet
La salida ‘activo (en ejecución)’ confirma que el servicio de flota está en ejecución, y la salida ‘...; habilitado;..‘ confirma que el servicio de flota se iniciará automáticamente al arrancar el sistema. También puedes ver el comando de inicio de flota que se ejecuta con el archivo de configuración‘/etc/fleet/fleet.yml‘.
Configurar el cortafuegos UFW
En este paso, configurarás y ejecutarás el cortafuegos UFW en Ubuntu. Abrirás el puerto del servicio OpenSSH y el puerto TCP 8080 que utiliza el gestor de flotas osquery, después iniciarás y habilitarás UFW.
Ejecuta el siguiente comando ufw para añadir el servicio OpenSSH y el puerto TCP 8080 a la UFW. La salida «Actualización de reglas» confirma que la nueva configuración se ha añadido a la UFW.
sudo ufw allow OpenSSH sudo ufw allow 8080/tcp
A continuación, ejecuta el siguiente comando para iniciar y habilitar el cortafuegos UFW. Cuando se te solicite, introduce y y pulsa ENTER para continuar. Con esto, el cortafuegos UFW debería estar funcionando y habilitado.
sudo ufw enable
Salida:
Comprueba el estado del cortafuegos UFW utilizando el siguiente comando. Deberías ver una salida como «Estado: activo», que confirma que UFW se está ejecutando y está habilitado. Además, verás que el puerto 8080/tcp del servicio OpenSSH está disponible y añadido al cortafuegos UFW.
sudo ufw status
Salida:
Configurar Fleet Osquery Manager
En este paso, configurarás el despliegue de fleet osquery manager. Configurarás el primer usuario y el despliegue a través del 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.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.
Introduce los detalles de la organización y vuelve a hacer clic en Siguiente.
Para la URL de la flota, puedes dejarla por defecto y hacer clic en Siguiente.
Vuelve a comprobar las configuraciones de tu flota y haz clic en Confirmar para completar el despliegue.
Cuando se haya completado con éxito, deberías obtener el panel de administración de la flota.
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 Debian. A continuación, aprenderás a añadir un nuevo anfitrión a la flota a través de Orbit.
Para empezar, vuelve al panel de control de la flota y haz clic en«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 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.pem» 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 Debian. Para las basadas en RPM, puedes cambiar el parámetro‘–type’ a‘rpm‘, mientras que el paquete‘pkg‘ puede utilizarse para generar un instalador orbit para macOS.
fleetctl package --type=deb --fleet-url=https://fleet.hwdomain.io:8080 \ --enroll-secret=TSSnHvy350wlo1HmIeLcxRS3DrQO+Vah \ --fleet-certificate=/opt/fleet.pem
Salida:
Una vez finalizado el proceso, podrás ver el archivo ‘fleet-osquery_version.deb’ en tu directorio de trabajo actual.
A continuación, instala el paquete orbit generado mediante el siguiente comando dpkg. Una vez instalado, el paquete orbit creará un nuevo archivo de servicio‘orbit.service‘ que te permitirá gestionar orbit mediante systemctl.
sudo dpkg -i fleet-osquery_version.deb
Salida:
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.
Ahora vuelve al panel de control de la flota y deberías ver el nuevo host«fleet.hwdomain.io» añadido al gestor de osquery de la flota.
Haz clic en el nombre de host ‘fleet.hwdomain.io’ para obtener información detallada sobre el host.
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 Debian.
Configurar Fleetctl para gestionar Fleet
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.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«.
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.hwdomain.io‘ está disponible en fleet con la versión osquery v5.7.0.
Comprobar la lista de usuarios disponibles en la flota.
fleetctl get ur
Salida – Deberías ver el usuario de flota que has creado.
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 Ubuntu 220.04. 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 con la utilidad de comandos systemctl fácilmente.
Por último, 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 Debian. 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 osquery de Fleet a través de orbit o manualmente a través del 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.