AGENT

FWCloud permite gestionar de forma centralizada firewalls basados en Linux que pueden estar ubicados en cualquier lugar. Podemos tener nuestra consola FWCloud en la sede central de nuestra empresa y los firewalls gestionados desde la misma diseminados por sedes remotas repartidas por todo el mundo.

Por lo tanto, necesitamos un modo de comunicar nuestra consola FWCloud con los firewalls que administra para llevar a cabo acciones sobre los mismos tales como cargar la política de seguridad, obtener la configuración de red, gestionar configuración VPN, bloquear conexiones VPN, etc. 

Dicha comunicación FWCloud – FireWalls se puede llevar a cabo de dos modos:

  • SSH. 
  • FWCloud-Agent. 
La comunicación mediante protocolo SSH es la más sencilla dado que no precisa que llevemos a cabo ninguna instalación en el firewall a administrar, pero tiene el inconveniente de que estamos utilizando un servicio como el SSH que permite acceso completo al firewall administrado. Además de que, si no queremos guardar las credenciales de acceso en FWCloud por seguridad, cada vez que tenemos que llevar a cabo alguna acción sobre el firewall, tenemos que introducir dichas credenciales.

La opción de comunicación mediante FWCloud-Agent es la más recomendada, dado que simplifica y optimiza la comunicación con el firewall gestionado. Se trata de un servicio que se instala en el firewall a través del cual la consola FWCloud lleva a cabo las acciones necesarias sobre los firewalls gestionados. Dicho servicio se instala utilizando los paquetes .deb o .rpm correspondientes a la distribución Linux que estemos utilizando.

FWCloud-Agent mejora la seguridad en la interacción FWCloud – FireWalls, dado que no precisa de credenciales SSH, se utiliza una API Key generada de forma automática durante el proceso de instalación del paquete en el firewall. Además, es posible restringir el acceso a dicho servicio únicamente a la IP de la consola FWCloud.

Utilizar FWCloud-Agent en vez de SSH también implica que restringimos las acciones que se pueden hacer sobre el firewall únicamente a las que el servicio FWCloud-Agent permite. Es decir, no estamos utilizando un protocolo de ámbito general como SSH que permite hacer muchas más cosas de las que se necesitan en la comunicación FWCloud – FireWalls.

También optimizamos y mejoramos la interacción con los firewalls, dado que no es necesario establecer una conexión SSH cada vez que tenemos que hacer algo con el firewall destino.

Además, gracias a FWCloud-Agent podemos hacer muchas más cosas que no es viable mediante la comunicación SSH como, por ejemplo, mantener un histórico de estado de las conexiones VPN.

 

FWCloud-Agent es un servicio que optimiza la comunicación con los firewalls gestionados desde FWCloud, además mejora la seguridad y permite funcionalidades adicionales

Como instalar FWCloud-Agent

FWCloud-Agent es una aplicación programada en Rust, muy optimizada y que precisa de muy pocos recursos para ejecutarse en el firewall en el cual se instala. Gracias a esto es posible ejecutar esta en equipos con muy pocos recursos hardware.

La instalación es muy sencilla, tan solo hay que instalar nuestros repositorios y utilizar las herramientas de la distribución para instalar nuevos paquetes.

Veamos un ejemplo de cómo instalarlo en distribuciones Ubuntu/Debian.
 
Primero instalamos el repositorio:
curl -s https://packagecloud.io/install/repositories/SOLTECSIS/FWCloud/script.deb.sh?any=true | sudo bash

Ahora ya podemos instalar paquetes desde este nuevo repositorio:

sudo apt install fwcloud-agent

De igual forma podemos instalarlo en distribuciones Fedora/Red-Hat/CentOS.

Primero instalamos el repositorio:

curl -s https://packagecloud.io/install/repositories/SOLTECSIS/FWCloud/script.rpm.sh?any=true | sudo bash

Y luego usamos las herramientas de instalación para instalar el paquete:

sudo yum install fwcloud-agent

o bien

sudo dnf install fwcloud-agent

Como parte del proceso de instalación se generan un par de claves autofirmadas para la comunicación segura con FWCloud y una API Key aleatoria, la cual se almacena en el fichero .env dentro de la carpeta de instalación: /opt/fwcloud/agent

Necesitaremos dicha API Key para poder conectar el firewall en el cual acabamos de instalar FWCloud-Agent con nuestra consola FWCloud. Podemos averiguar el API Key generada mediante el siguiente comando:

sudo grep "API_KEY" /opt/fwcloud/agent/.env

Cuando demos de alta el firewall tendremos que seleccionar como opción de comunicación FWCloud-Agent e indicar en dicha configuración la API Key que tiene nuestro servidor FWCloud-Agent tal y como se explica en el manual de usuario de FWCloud-UI.

En el fichero .env tenemos las opciones de configuración que podemos personalizar explicadas así como sus valores por defecto. 

Entre estas tenemos la opción ALLOWED_IPS que consiste en una lista de IPs separadas por espacios mediante la cual podemos restringir las IPs desde las cuales se va a permitir acceso a FWCloud-Agent. En esta lista podemos poner únicamente la IP de nuestra consola FWCloud para mejorar la seguridad.

 

ALLOWED_IPS="10.10.10.1"

En el directorio /opt/fwcloud/agent/etc tenemos los ficheros cert.pem y key.pem, generados como parte del proceso de instalación del paquete FWCloud-Agent que constituyen el certificado autofirmado utilizado para encriptar la comunicación entre FWCloud y FWCloud-Agent.

En el directorio /opt/fwcloud/agent/log tenemos el fichero de log fwcloud-agent.log donde podemos ver los logs emitidos por el servicio FWCloud-Agent. Este fichero es gestionados mediante logrotate para evitar que crezca de forma indefinida.

El servicio FWCloud-Agent lo podemos gestionar mediante systemctl, para así poder parar, arrancar y ver el estado del mismo.

sudo systemctl status fwcloud-agent

fwcloud-agent.service – fwcloud-agent

     Loaded: loaded (/lib/systemd/system/fwcloud-agent.service; enabled; vendor preset: enabled)

     Active: active (running) since Tue 2021-11-16 13:07:43 UTC; 2h 9min ago

   Main PID: 34582 (fwcloud-agent)

      Tasks: 4 (limit: 1071)

     Memory: 1.0M

     CGroup: /system.slice/fwcloud-agent.service

             └─34582 /opt/fwcloud/agent/fwcloud-agentsudo 

Como funciona

Una vez tenemos instalado FWCloud-Agent en nuestro firewall y conectado este a nuestra consola FWCloud ya es posible administrarlo. Pero, ¿cómo funciona la comunicación entre nuestra consola FWCloud y el servicio FWCloud-Agent instalado en nuestro firewall?

Dicha comunicación realmente se lleva a cabo entre FWCloud-API y el servicio FWCloud-Agent instalado en el firewall. Por ejemplo, cuando desde FWCloud-UI solicitamos instalar la política en un firewall, esta petición es retransmitida por FWCloud-API al FWCloud-Agent del firewall.

Al igual que la comunicación entre FWCloud-UI y FWCloud-API se lleva a cabo a través de un API, la comunicación entre FWCloud-API y FWCloud-Agent, también se lleva a cabo mediante un API, el API de FWCloud-Agent.

Para entender esto mejor, veamos un ejemplo de como podemos comunicar con el API de FWCloud-Agent utilizando para ello el comando curl.

 

curl -k -i -X PUT -H 'X-API-Key: LofKtOxLjBRfxQqKhxLaG8xxPdVCuMSBhnGnYoUtuSBQx9xP0fPKPxE5xGHO40q8' https://192.168.56.108:33033/api/v1/ping

Utilizamos la llamada al API del FWCloud-Agent ping a la cual este responderá con un código HTTP 200 si todo va bien. 

Si nos fijamos en la URL https://192.168.56.108:33033/api/v1/ping que utilizamos para comunicar con el FWCloud-Agent podemos ver varias cosas. Estamos utilizando comunicación segura mediante HTTPS, por ese motivo es necesario el certificado autofirmado que se genera durante el proceso de instalación.

A continuación tenemos la IP (192.168.56.108) y puerto TCP (33033) a través de los cuales podemos comunicar con FWCloud-Agent. Y la ruta para la llamada al API (/api/v1/ping) que define el servicio que estamos solicitando.

Hay que tener en cuenta que el API Key que estamos utilizando en este ejemplo hay que modificarla por la que se haya generado en nuestro servidor FWCloud-Agent.