Instalar App Pi-hole en Splunk y envío de datos de log (consultas DNS) de servidor DNS Pi-hole a SIEM Splunk Enterprise. Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk. Añadir receiving en Spunk, instalar Universal Forwarder de Splunk en Linux Debian, apadir API Token para conectar Splunk con Pi-hole.
- Configuración de Pi-hole.
- Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk.
- Añadir Forwarding and receiving en Splunk.
- Instalar Splunk Universal Forwarder en servidor Linux DNS Pi-hole.
- Añadir API Token a App de Pi-hole de Splunk.
- Pi-hole DNS App for Splunk en funcionamiento.
Configuración de Pi-hole
En primer lugar, configuraremos Pi-hole para generar log «extra». Para ello, en el equipo servidor DNS Pi-Hole, añadiremos un nuevo fichero de configuración en /etc/dnsmasq.d, con el comando:
1 |
sudo nano /etc/dnsmasq.d/02-pihole-splunk.conf |
Añadiremos la siguiente línea al fichero 02-pihole-splunk.conf:
log-queries=extra
Para aplicar los cambios anteriores reiniciaremos el servicio DNS con el comando:
1 |
pihole restartdns |
Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk
Desde la consola de gestión web de Splunk, desde «Apps», buscaremos «pi-hole», nos mostrará dos App:
- Pi-hole DNS App for Splunk.
- Pi-hole Add-on for Splunk.
Instalaremos ambos componentes. Pulsaremos en «Install» para «Pi-hole DNS App for Splunk»:
Nos solicitará usuario y contraseña de acceso a la descarga en la web oficial de Splunk, lo introduciremos y pulsaremos en «Agree and Install»:
Se descargará e instalará la App para Pi-hole. Pulsaremos «Done»:
Instalaremos, de la misma forma, Pi-hole Add-on for Splunk:
En este caso nos solicitará reiniciar Splunk Enterprise, pulsaremos «Restart Now»:
Si queremos usar un índice diferente al «main» por defecto, sobre todo porque es más eficiente (para establecer políticas de retención, búsquedas y controles de acceso), pulsaremos en «Settings» – «Indexes»:
Pulsaremos en «New Index»:
Introduciremos los datos para el nuevo índice, sobre todo «Index Name» (en nuestro caso «pi-hole») y lo asociaremos a la App «Pihole DNS Add-on». Elegiremos el índice de tipo «Events». Podremos indicar también la política de retención (en días). Cuando tengamos los datos para el índice establecidos pulsaremos en «Save» para crearlo:
Añadir Forwarding and receiving en Splunk
Desde la consola de gestión web de Splunk Enterprise, crearemos un receiving para preparar Splunk para recibir los datos que envíe el forwarder de Linux Debian con Pi-hole. Para ello, pulsaremos en «Settings» – «Forwarding and receiving»:
En «Configure receiving» pulsaremos en «+ Add new»:
Estableceremos un puerto de escucha, por ejemplo 9997, y pulsaremos «Save»:
Instalar Splunk Universal Forwarder en servidor Linux DNS Pi-hole
Para que el servidor DNS Pi-hole envíe los datos de log y eventos al servidor SIEM Splunk, tendremos que instalar en el servidor Linux de Pi-hole el Universal Forwarder de Splunk para Linux.
En el servidor Linux con Pi-hole, en primer lugar crearemos un usuario «splunk», y un grupo «splunk», agregaremos el usuario splunk al grupo splunk, con los comandos:
1 2 |
useradd -m splunk groupadd splunk |
Crearemos la variable de entorno SPLUNK_HOME apuntando a la carpeta /opt/splunkforwarder. Crearemos esta carpeta:
1 2 3 |
export SPLUNK_HOME="/opt/splunkforwarder" mkdir $SPLUNK_HOME cd $SPLUNK_HOME |
Descargaremos el paquete .deb (para el caso de Linux Debian), con el comando:
1 |
wget -O splunkforwarder-9.0.3-dd0128b1f8cd-linux-2.6-amd64.deb "https://download.splunk.com/products/universalforwarder/releases/9.0.3/linux/splunkforwarder-9.0.3-dd0128b1f8cd-linux-2.6-amd64.deb" |
Instalaremos el paquete .deb descargado anteriormente con:
1 |
dpkg -i splunkforwarder-9.0.3-dd0128b1f8cd-linux-2.6-amd64.deb |
Establecemos los permisos para la carpeta de Splunk Forwarder:
1 |
chown -R splunk:splunk $SPLUNK_HOME |
Iniciamos el forwarder con:
1 |
sudo $SPLUNK_HOME/bin/splunk start --accept-license |
Nos solicitará usuario y contraseña de Splunk (el que se usó en la instalación de Splunk Enterprise o cualquier otro de Splunk que tengamos dado de alta).
A continuación, desde la carpeta bin de Splunk (cd /$SPLUNK_HOME/bin), agregaremos el reenviador al servidor, con el comando:
1 |
./splunk add forward-server 192.168.1.100:9997 -auth admsp:contraseña |
Donde:
- 192.168.1.100:9997: IP y puerto del servidor de Splunk. Usaremos el mismo puerto que hayamos indicado en el cliente forwarder creado anteriormente en Splunk (receiving).
- admsp:contraseña: usuario y contraseña del servidor Splunk.
Agregaremos también un poll de reenvío con el comando:
1 |
./splunk set deploy-poll 192.168.1.100:9997 |
Como siempre, indicando la IP del servidor de Splunk y el puerto que queramos usar.
A modo de ejemplo, enviaremos los eventos del fichero /var/log/syslog de Linux, creando un inputs, con:
1 |
./splunk add monitor /var/log/syslog -sourcetype linux_messages_syslog |
Para añadir los inputs necesarios para el plugin de Pi-hole en Splunk, editaremos el fichero:
1 |
nano /opt/splunkforwarder/etc/apps/search/local/inputs.conf |
Y añadiremos:
1 2 3 4 5 6 7 8 9 10 11 |
[monitor:///var/log/pihole.log] disabled = 0 sourcetype = pihole # optionally specify an index, if configured. # index = dns [monitor:///var/log/pihole-FTL.log] disabled = 0 sourcetype = pihole:ftl # optionally specify an index, if configured. # index = dns_system |
Reiniciaremos el forwarder de Splunk para aplicar los cambios:
1 |
./splunk restart |
Desde la consola web de Splunk Enterprise, podremos comprobar que ya se están recibiendo datos enviados por el forwarder Linux Debian Pi-hole:
Añadir API Token a App de Pi-hole de Splunk
A continuación, para permitir que la App de Splunk de Pi-hole pueda acceder vía API al servidor de Pi-hole, accederemos a la consola web de gestión de Pi-hole. Pulsaremos en «Settings» [1], en «API/Web interface» [2] y en «Show API token» [3]:
Confirmaremos que queremos obtener el token para el acceso API, pulsando en «Yes, show API token»:
Nos mostrará un QR y el token para copiar. Procederemos con precaución dado que con este token se puede acceder a todos los datos de Pi-hole de nuestra organización. Lo copiaremos para pegarlo posteriormente en Splunk (como indicamos a continuación).
Ahora desde la consola de gestión web de Splunk Enterprise, abriremos «Pihole DNS Add-on»:
Pulsaremos en «Configuration» [1], en «Account» [2] y en «Add» [3]:
Añadiremos una nueva cuenta, indicando el nombre de la cuenta (por ejemplo «pihole»), la IP o el nombre DNS del servidor Linux con Pi-hole (por ejemplo 192.168.1.100) y en API Passphrase pegaremos el token copiado anteriormente. Indicaremos el puerto (que por defecto es el 80) y pulsaremos «Add»:
En «Inputs» podremos crear un nuevo Input (no es obligatorio), pulsando en «Create New Input» y eligiendo «System Information». Introduciremos el nombre para el input (por ejemplo «pihole»), una línea de programación (se admite formato cron), el Index al que se asignará el input (en nuestro caso el creado anteriormente «pi-hole») y la cuenta (en nuestro caso la creada anteriormente «pihole»).
Si abrimos la App Pi-hole en Splunk, nos mostrará los mensajes de error:
Error in ‘DataModelEvaluator’: Data model ‘Network_Resolution’ was not found.
Error in ‘SearchParser’: The search specifies a macro ‘drop_dm_object_name’ that cannot be found. Reasons include: the macro name is misspelled, you do not have «read» permission for the macro, or the macro has not been shared with this application. Click Settings, Advanced search, Search Macros to view macro information.
Esto es así porque Pi-hole DNS App for Splunk requiere del complmento Splunk Common Information Model (CIM), que instalaremos también:
Pi-hole DNS App for Splunk en funcionamiento
Transcurridos unos minutos desde que se instala el forwarder y se configura el entorno y el acceso vía API de Splunk a Pi-hole, podremos ver el dashboard con toda la información recabada en modo gráfico. Abriendo la App Pi-hole DNS App for Splunk y pulsando en «Pihole Overview» podremos visualizar todas las consultas DNS permitidas, las bloqueadas, el número de equipos que realizan consultas DNS, los sitios web con más bloqueos, los clientes (equipos/dispositivos) con más consultas, etc.
Desde «Pihole DNS Activity» tendremos el tipo de consultas DNS (SRV, PTR, HTTPS, AAAA), el tipo de respuesta (No Error, Non-Existent Domain, Query Refused) y el top de consultas a dominios permitidos y a dominios bloqueados.
En «Pi-hole Query log» podremos visualizar más datos interesantes como el top de dominios consultados y permitidos, el top de dominios consultados y bloqueados, los equipos que más consultas tienen permitidas y bloqueadas, etc.