Skip to main content

Sobre el sensor

Sequence Diagram

⚠️ Nota: El siguiente diagrama es un borrador y puede no representar el flujo de la aplicación de manera precisa.

Sequence Diagram

Ambiente de desarrollo

Actualmente el sensor solo funciona con Linux dado que Argus solo puede sniffear paquetes en sistemas Unix.

En Linux, debes instalar .NET 8.0 SDK, Argus y Argus clients. Para instalar .NET 8.0 puedes utilizar los siguientes comandos:

curl https://dot.net/v1/dotnet-install.sh > dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --channel 8.0

Para instalar Argus y Argus clients, debes clonar los repositorios y compilar los proyectos. Primero debes satisfacer las dependencias, en Ubuntu:

sudo apt install libpcap-dev bison flex

Luego clonas los repositorios:

git clone https://github.com/openargus/argus.git
git clone https://github.com/openargus/clients.git

Y en cada uno de los repositorios, compila los proyectos:

./configure
make

Si ./configure falla, verifica las dependencias e intenta nuevamente.

Finalmente, en ambos proyectos se va a generar un directorio bin con los binarios, agregalos al PATH de tu sistema:

export PATH=$PATH:/ruta/a/argus/bin:/ruta/a/clients/bin

Esto instalara Argus y sus clientes unicamente en tu usuario.

Configuracion de secretos en .env

Esta aplicacion utiliza un archivo .env para almacenar las credenciales de la Neurona Cibermadurez. Debes crear un archivo .env en el directorio AttackSensor con el siguiente contenido:

API_KEY=TU_API_KEY
API_SECRET=TU_API_SECRET
FILES_DB_SALT=RANDOM_STRING

Tanto API_KEY como API_SECRET los puedes obtener en el dashboard de administración de la Neurona Cibermadurez. Si no tienes acceso al dashboard, puedes solicitar las credenciales a los administradores de la Neurona Cibermadurez.

El valor de FILES_DB_SALT puede ser cualquier string, puedes generarlo con el siguiente comando:

openssl rand -base64 32

Ejecución del sensor

Una vez tienes todo instalado, puedes correr el sensor, para eso necesitas permisos de administrador dado que argus va a sniffear el tráfico de red. Navega al directorio AttackSensor de este repositorio y corre el sensor con:

sudo -E env "PATH=$PATH" dotnet run

Utilizamos el flag -E env "PATH=$PATH" para que el PATH de tu usuario sea utilizado en el entorno de root, dado que instalamos Argus y sus clientes en tu usuario como se mencionó anteriormente.

Si quieres especificar la ruta al directorio donde los modelos onnx estan, puedes hacer:

sudo -E env "PATH=$PATH" dotnet run -- --model-dir /ruta/a/modelos

Producción

Para correr el sensor en producción tienes dos opciones:

  1. Compilar el proyecto y correr el binario generado.
  2. Utilizar el binario precompilado disponible en la sección de releases bajo el nombre IntrusionSensor.tar.gz y el script install.sh que se encuentra en el mismo release.

Aca cubriremos la segunda opción. Descarga el binario IntrusionSensor.tar.gz y el script install.sh en la maquina donde quieres instalar el sensor. Luego, corre el script con el siguiente comando:

./install.sh --package-path IntrusionSensor.tar.gz

No olvides permitir la ejecución del script con chmod +x install.sh.

Al correr el script de instalalcion, se te pedira que ingreses las credenciales de la Neurona Cibermadurez. Si no tienes acceso al dashboard, puedes solicitar las credenciales a los administradores de la Neurona Cibermadurez.

Puedes utilizar el mismo script install.sh para actualizar el sensor. Solo debes descargar el nuevo binario y correr el script con el nuevo paquete. Esto conservara las credenciales y configuraciones del sensor (almacenadas en /opt/IntrusionSensor/Data), sin embargo puedes pasar que por cambios en los esquemas de la base de datos interna del sensor, sea necesario borrar la base de datos de ataques y volver a iniciar sesion con el sensor.

Ejecución del sensor en producción

Para poder correr el sensor en producción debes tener instalado tanto Argus (por lo menos version 5.0) como Argus clients para el usuario root. Una vez instalado, inicia sesion con el usuario root y corre el sensor con:

$ AttackSensor

Creación de una nueva release

Para poder crear una nueva release, simplemente debes editar el archivo version en la raiz del repositorio y subir los cambios a la rama main. Github Actions se encargará de crear la release utilizando el archivo deploy/Release.md como descripción.

Uso

Debes definir las variables de entorno API_SECRET, API_KEY y FILES_DB_SALT (utilizada para encriptar la base de datos) en un archivo en AttackSensor/.env (o a traves de bash) en el mismo directorio que el ejecutable. Las credenciales API_* son necesarias para crear cuentas en la Neurona Cibermadurez.

Las opciones de la linea de comando son:

  --model-dir     Path to the model directory.

--argus-path Path to Argus binary.

--ra-path Path to RA binary.

--help Display this help screen.

--version Display version information.
  • --model-dir es la ruta al directorio donde los modelos onnx estan. En este directorio se buscan dos modelos bajo el nombre modelbi.onnx y modelmulti.onnx.
  • --argus-path es la ruta al binario de Argus.
  • --ra-path es la ruta al binario Ra, el cual es necesario para parsear los paquetes de red generados por Argus.

Runtime settings (Configuración en app movil Neuro Access)

Desde la app móvil de Neuro Access, puedes configurar ciertos parametros del sensor. Estos parametros son:

  • Log Level: Nivel de loggeo del sensor.
  • Threshold: Umbral de confianza para considerar un ataque.
  • Multiclass Threshold: Umbral de confianza para considerar un ataque en el modelo multiclase.
  • Tick Rate: Frecuencia de muestreo de los paquetes de red.

App settings view