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

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:

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:

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»:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on 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»:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk

Se descargará e instalará la App para Pi-hole. Pulsaremos «Done»:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk

Instalaremos, de la misma forma, Pi-hole Add-on for Splunk:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk

En este caso nos solicitará reiniciar Splunk Enterprise, pulsaremos «Restart Now»:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk

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»:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk

Pulsaremos en «New Index»:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk

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:

Instalar Pi-hole DNS App for Splunk y Pi-hole Add-on for Splunk

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:

Crearemos la variable de entorno SPLUNK_HOME apuntando a la carpeta /opt/splunkforwarder. Crearemos esta carpeta:

Descargaremos el paquete .deb (para el caso de Linux Debian), con el comando:

Instalar Splunk Universal Forwarder en servidor Linux DNS Pi-hole

Instalaremos el paquete .deb descargado anteriormente con:

Establecemos los permisos para la carpeta de Splunk Forwarder:

Iniciamos el forwarder con:

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).

Instalar Splunk Universal Forwarder en servidor Linux DNS Pi-hole

A continuación, desde la carpeta bin de Splunk (cd /$SPLUNK_HOME/bin), agregaremos el reenviador al servidor, con el comando:

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:

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:

Instalar Splunk Universal Forwarder en servidor Linux DNS Pi-hole

Para añadir los inputs necesarios para el plugin de Pi-hole en Splunk, editaremos el fichero:

Y añadiremos:

Instalar Splunk Universal Forwarder en servidor Linux DNS Pi-hole

Reiniciaremos el forwarder de Splunk para aplicar los cambios:

Desde la consola web de Splunk Enterprise, podremos comprobar que ya se están recibiendo datos enviados por el forwarder Linux Debian Pi-hole:

Instalar Splunk Universal Forwarder en servidor Linux DNS 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]:

Añadir API Token a App de Pi-hole de Splunk

Confirmaremos que queremos obtener el token para el acceso API, pulsando en «Yes, show API token»:

Añadir API Token a App de Pi-hole de Splunk

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).

Añadir API Token a App de Pi-hole de Splunk

Ahora desde la consola de gestión web de Splunk Enterprise, abriremos «Pihole DNS Add-on»:

Añadir API Token a App de Pi-hole de Splunk

Pulsaremos en «Configuration» [1], en «Account» [2] y en «Add» [3]:

Añadir API Token a App de Pi-hole de Splunk

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»:

Añadir API Token a App de Pi-hole de Splunk

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»).

Añadir API Token a App de Pi-hole de Splunk
Añadir API Token a App de Pi-hole de Splunk

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.

Añadir API Token a App de Pi-hole de Splunk

Esto es así porque Pi-hole DNS App for Splunk requiere del complmento Splunk Common Information Model (CIM), que instalaremos también:

Añadir API Token a App de Pi-hole de Splunk

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.

Pi-hole DNS App for Splunk en funcionamiento

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.

Pi-hole DNS App for Splunk en funcionamiento

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.

Pi-hole DNS App for Splunk en funcionamiento