MalTrail - IDS simple y eficiente.
Estamos probando MalTrail en un contenedor (o dos), para los que no lo conocen, lo recomiendo.
Es un programa (2x) hecho en Python, compuesto de un APP Cliente y otro Servidor, el cliente descarga una lista de sitios peligrosos en cada arranque, captura tráfico de manera pasiva, sin alterarlo y envía las señales de peligro al servidor.
El componente Servidor, recolecta esos paquetes UDP, muy livianos y con bastante poco overhead y va genearando archivos textos donde almacena los puntos colectados por uno o mas agentes en distintos equipos.
Provee también de una interfaz Web muy simple pero muy funcional para ver esas alertas. Además descarga de internet, información de paises para darnos mas datos en cada caso.
En el HUB de Docker hay varios proyectos similares, pero preferí este por tener 50k descargas.
El código de Docker-compose.yml
version: '2'
services:
server:
image: tomdesinto/maltrail
volumes:
- ./maltrail.conf:/maltrail/maltrail.conf:ro
ports:
- 8338:8338
- 127.0.0.1:8337:8337/udp
volumes:
- ./logs:/var/log/maltrail
command: python server.py
sensor:
image: tomdesinto/maltrail
privileged: true
network_mode: host
volumes:
- ./maltrail.conf:/maltrail/maltrail.conf:ro
command: python sensor.py
El proceso de instalación.
docker-compose up
# genera dos contenedores.
De manera standard, usa el puerto 8338 TCP para dar servicios web (HTTP solamente), y el puerto 8337 UDP para recibir los mensajes de los agentes.
El usuario y clave predefenida son: root/changeme!
Aunque no está tan optimizado como si fuera ‘c’, usar Python simplifica la edición del código, instalación y se conecta con bibliotecas de pcap para escuchar en modo promiscuo la red.
Nos preguntaron que tanto cargaba el servidor que contiene ese contenedor, es bastante poco. Y verificamos que el agente puede correr perfectamente en una Pi modelo 1, con un hardware bastante reducido.
Algunas pantallas. Mostrando nuestro fichero de configuracion en la carpeta local del servidor.
Arrancando los contenedores, y descargando información de internet.
El proceso nos muestra los sitios URL de donde baja datos.
La pantalla del servidor web mostrando el tráfico sospechoso, parece una pantalla simple pero brinda la información justa para ser realmente útil, con datos de los IPs, tipo de paquetes, ademas de en que servidor/agente se produce el incidente. En este ejemplo usamos dos equipos distintos.
Los dos contenedores funcionando y su consumo de RAM/CPU.
Además de continuar recomendando Docker como solución tecnológica para muchas necesidades, recomiendo este producto por lo simple y eficiente que es, como brinda datos de IDSs.