Ir atrás

Laboratorio virtual para análisis y monitorización de eventos con pfsense, suricata y wazuh.

luishcr • 22 April, 2023

Portada del artículo
"TnVuY2EgcGFyZXMgZGUgYXByZW5kZXI="

Descarga, instalación y configuración de pfsense en máquina virtual.

pfSense es un programa de código abierto que le permite a un usuario tener un firewall de alto nivel en su ordenador. Es una distribución personalizada de FreeBSD adaptado para su uso como Firewall y enrutador. Se caracteriza por ser de código abierto, puede ser instalado en una gran variedad de ordenadores, y además cuenta con una interfaz web sencilla para su configuración.

 

pfsense1

 

  • Lo instalamos en virtualbox con dos interfaces de red, la primera configurada como Bridge Adapter o adaptador puente, la segunda como Host-only. En sistema pondremos 1024 MB de memoria base y 2 CPUs de procesador para evitar algunos errores de virtualbox.

pfsense2

 

  • Al finalizar la instalación y reiniciar obtenemos una vista parecida a esta:

pfsense3

 

  • Ahora podemos configurar pfsense desde la interfaz web accediendo la dirección IP WAN (http://192.168.1.x). Si no carga la página utilizaremos el comando:
pfctl -d

 

  • El comando pfctl -d en pfsense se utiliza para desactivar el filtrado de paquetes en el firewall. Este comando detiene el demonio pf y elimina todas las reglas de filtrado de paquetes que se han cargado en la memoria del kernel. Para volver a habilitar el filtrado de paquetes, se puede utilizar el comando pfctl -e.

pfsense3.1

 

  • Ingresamos las credecianles por defecto, usuario "admin", contraseña "pfsense".

pfsense4 pfsense5

 

  • Suricata es una herramienta de código abierto para ciberseguridad, que sirve para monitorizar el tráfico de red de un sistema y es capaz de detectar comportamientos maliciosos. Para instalar suricata en pfsense vía web vamos a /System > Package Manager y buscamos "suricata".

pfsense5 pfsense5

 

  • Podemos añadir reglas de amenazas emergentes de Proofpoint y de Snort Community si vamos a /Services > Suricata > Global Settings y permitimos la descarga de las reglas y guardamos.

pfsense5

 

  • A continuación debemos actualizar/descargar las reglas en /Services > Suricata > Updates.

pfsense5

 

  • Debemos añadir y activar las interfaces /Services > Suricata > Interfaces. Y habilitamos el envío de logs en formato JSON.

pfsense5 pfsense5

 

  • También podemos añadir reglas personalizadas. Por ejemplo:
alert tcp any any -> any 3389 (msg:"Bastionat Cefire - Remote Desktop, Potencial CVE-2019-0708"; classtype:protocol-command-decode; sid:1000001; rev:1;)
alert icmp any any -> 192.168.1.131 any (msg:"Ping stalker detected"; icode:0; itype:8; threshold: type threshold, 
track by_src, count 30, seconds 180; classtype:attempted-recon; sid:9166682; rev:1;)
drop ip any any -> any any (msg:"DATA LEAK Plaintext name detected"; content:"Cefire"; nocase; pcre:"/(Fulano.*|
Fulanito.*|fulano.*)/i"; classtype:attempted-recon; sid:9166600; rev:1;)
alert udp any any -> any 53 (msg:"SURICATA DNS Query to a Suspicious *.ws Domain"; content:"|01 00 00 01 00 00 00 00 
00 00|"; depth:10; offset:2; content:"|02|ws|00|"; nocase; sid:2500003; rev:1;)
alert http any any -> any any (msg:"SURICATA HTTP Request to a Suspicious *.ws Domain"; flow:established,to_server; 
content:".ws"; http_host; isdataat:!1,relative; sid:2500004; rev:1;)
alert udp any any -> any 53 (msg:"SURICATA DNS Query to a Suspicious *.to Domain"; content:"|01 00 00 01 00 00 00 00 
00 00|"; depth:10; offset:2; content:"|02|to|00|"; nocase; sid:2500005; rev:1;)
alert http any any -> any any (msg:"SURICATA HTTP Request to a Suspicious *.to Domain"; flow:established,to_server; 
content:".to"; http_host; isdataat:!1,relative; sid:2500006; rev:1;)
alert http any any -> any any (msg:"SURICATA HTTP Request to a Suspicious *.onion.to Domain"; 
flow:established,to_server; content:".onion.to"; http_host; isdataat:!1,relative; sid:2500007; rev:1;)
alert http any any -> any any (msg:"SURICATA HTTP Request to a Suspicious *.onion.city Domain"; 
flow:established,to_server; content:".onion.city"; http_host; isdataat:!1,relative; sid:2500008; rev:1;)
alert udp any any -> any 53 (msg:"SURICATA DNS Query to a Suspicious *.onion Domain"; content:"|01 00 00 01 00 00 00 
00 00 00|"; depth:10; offset:2; content:"|02|onion|00|"; nocase; sid:2500012; rev:1;)
alert tls any any -> any any (msg:"SURICATA SSL session to suspicious *onion.to"; tls.subject:"CN=*.onion.to, OU=Domain 
Control Validated"; sid:2500013; rev:1;)

pfsense5

 

Descarga e instalación de wazuh.

  • Wazuh es una plataforma open-source que unifica las capacidades de XDR y SIEM, utilizada para la prevención, detección y respuesta a las amenazas, es capaz de proteger cargas de trabajo en entornos locales, virtualizados, en contenedores y en la nube. Wazuh proporciona una imagen de máquina virtual preconstruida en formato Open Virtual Appliance (OVA) que utilizaré para este laboratorio. Una vez importada la máquina en virtualbox (doble click en el archvivo descargado "wazuh-4.4.2.ova") accedemos con las credenciales "user: wazuh-user, password: wazuh"

pfsense5

 

  • Para visualizar el dashboard de wazuh desde la interfaz web, primero averguamos la ip que le ha asignado pfsense a la máquina con el comando ip address. Si no tenemos ip, podemos pedirla con el comando sudo dhclient.

pfsense5

 

  • Accedemos al dashboard "https://{ip_wazuh_server}" con las credenciales por defecto "user: admin, password: admin".

pfsense5 pfsense5

 

Instalando el agente de wazuh en pfsense.

  • La arquitectura Wazuh se fundamenta en el uso de agentes que se ejecutan en los equipos monitoreados, los cuales envían datos de registro al servidor central. Esto permite recopilar información relevante de cada host para su análisis y gestión.
  • Para poder instalar el agente en pfsense debemos editar unos ficheros de configuración de la máquina. Podemos utilizar la shell (8) o mejor aún podemos conectarnos por ssh desde putty o powershell en windows terminal habilitanto esta opción en pfsense (14).

pfsense5

 

  • A continuación abrimos una terminal con powershell y nos conectamos por ssh. Si nos bloquea la conexión, ingresamos el comando pfctl -d en la shell de pfsense.
ssh admin@ip_wan_pfsense

 

  • Una vez conectado, el primer paso es habilitar el uso de repositorios oficiales de FreeBSD en pfSense "FreeBSD: { enabled: yes }". PfSense sólo dispone de "vi" como editor, por lo que tal vez se requiera de hacer uso de algún cheatsheet o tutorial de internet.
vi /usr/local/etc/pkg/repos/FreeBSD.conf

pfsense5

vi /usr/local/etc/pkg/repos/pfSense.conf

pfsense5

 

  • Ahora actualizamos los repositorios e ignoramos error "y".
pkg update

pfsense5

 

  • Buscamos el agente Wazuh disponible de los repositorios FreeBSD y comparamos con la version de wazuh server.
pkg search wazuh-agent

pfsense5 pfsense5

 

  • Instalamos wazuh-agent.
pkg install wazuh-agent

pfsense5

 

  • Copiamos la hora.
cp /etc/localtime /var/ossec/etc

 

  • Copiamos el archivo ossec.conf.sample en el directorio /var/ossec/etc/ renombrado como ossec.conf.
cp /var/ossec/etc/ossec.conf{.sample,}

"{.sample,}" es una sintaxis especial que se utiliza en algunos sistemas Unix y Linux para generar una lista de archivos. En este caso, el punto (.) antes de sample indica que solo se copiarán archivos que tengan el mismo nombre pero con la extensión .sample y se copiarán sin cambiar el nombre.

 

  • Editamos el archivo de configuración del agente de Wazuh y configuramos la IP de wazuh server.
vi /var/ossec/etc/ossec.conf

pfsense5

 

  • Habilitamos e inicializamos el agente de wazuh.
sysrc wazuh_agent_enable="YES"
/var/ossec/bin/wazuh-control start

pfsense5

 

  • Podemos comprobar que no haya errores de autenticación con el servidor.
tail -f /var/ossec/logs/ossec.log

 

  • Recargamos interfaz web de wazuh.

pfsense5

 

  • Por último, verificamos el funcionamiento logueándonos erróneamente a pfsense.

pfsense5 pfsense5

Instalando el agente de wazuh en otras máquinas.

  • Para desplagar un nuevo agente, por ejemplo en una máquina con ubuntu server vamos a wazuh > agents > new agent, copiamos el comando generado y lo pegamos en la máquina.

pfsense5

curl -so wazuh-agent.deb https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.4.2-1_amd64.deb && sudo WAZUH_MANAGER='192.168.88.16' WAZUH_AGENT_GROUP='default' WAZUH_AGENT_NAME='ubuntuServer' dpkg -i ./wazuh-agent.deb

 

  • Luego activamos el agente.
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

 

Referencias.

Ir atrás
Ir arriba