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.
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:
- Compilar el proyecto y correr el binario generado.
- Utilizar el binario precompilado disponible en la sección de releases bajo el nombre
IntrusionSensor.tar.gz
y el scriptinstall.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 modelosonnx
estan. En este directorio se buscan dos modelos bajo el nombremodelbi.onnx
ymodelmulti.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.