Hace unos días, hablando con algunos compañeros, me di cuenta de la disparidad de sistemas de protección y detección que tenemos cada uno en nuestro hogar.  Al final de la conversación pude apreciar que pocos disponemos de un NIDS (Network Intrusion Detection System). Las palabras que todos teníamos en la boca cada vez que hablamos de algo nuevo era: “Falta de tiempo”.

Así pues, con el objetivo de ahorraros algo de tiempo os traigo una serie de post donde intentare recopilar y explicar todo lo que necesitamos saber para montar un NIDS en casa o cualquier otro entorno que se os ocurra. Por algo tenemos que empezar, así que en este primer post voy a explicaros qué es un NIDS y porqué puede resultar una opción interesante disponer de uno.

¿Por qué debería disponer de un sistema de detección de intrusos en mi hogar?

Al igual que es importante disponer de sistemas de defensa como podrían ser un antivirus, firewall, proxy, dns, etcétera… es importante que podamos detectar cualquier actividad anómala dentro de nuestra infraestructura. Y aquí es donde entra nuestro NIDS, este nos proporcionará la capacidad de detectar actividades anómalas. Cualquier detección que hagamos podremos analizarla y enriquecer con inteligencia nuestros sistemas de defensa.
Si alguno se está preguntando si voy a realizar una serie de post hablando de los sistemas de defensa, la respuesta es no. Pero no os preocupéis, porque nuestro compañero Alejandro Aliaga nos va a traer esta parte y nos va a explicar cómo desplegar sistemas de defensa en nuestro hogar. Con estas dos series de post y un poquito de sentido común evitaremos y detectaremos la mayoría de infecciones que se producen en el ámbito privado. Recordad que aunque yo voy a enfocar el proyecto de forma que podáis implementarlo en vuestros hogares, es totalmente viable que con unas pequeñas modificaciones lo podáis montar en una pequeña empresa que no puede permitirse disponer de un “security operation center” (SOC).

Hablemos sobre qué es un NIDS

Como su nombre bien indica, se trata de un sistema diseñado para detectar intrusiones, el cual opera a nivel del tráfico de red. Por tanto, podremos ver y analizar todo el tráfico que entre y salga de nuestra red. El NIDS buscará entre todo el tráfico, patrones que le son conocidos y que determinará como ataques. Estos patrones son los conocidos como reglas.
De la misma forma que un antivirus busca ciertos patrones en los archivos que tenemos en nuestro equipo y procesos en ejecución, nuestro NIDS actuará de la misma forma con nuestro tráfico. Utilizará reglas que le habremos proporcionado previamente para llevar a cabo la tarea descrita anteriormente. Como es de imaginar, existen miles de reglas gratuitas y otras de pago. Las reglas gratuitas más utilizadas hoy en día son las de Emerging Threats y VRT en su versión gratuita claro. Ya hemos comentado que existen reglas de pago, pero en nuestro caso no vamos a utilizarlas dado debido a su elevado coste. Por ejemplo, las reglas de pago de emergin threats o más conocidas como ET pro pueden costar alrededor de 1000€ anuales. Nosotros utilizaremos las reglas que nos ofrece de forma gratuita emerging threats, también podemos crear nuestras propias reglas y así ampliar nuestro set de reglas.
Existen múltiples NIDS, los más conocidos SnortSuricata y Bro IDS. Este último nació en el año 1995 cuando Vern Parxon escribió la primera línea de código, desde entonces este NIDS ha mejorado mucho y ha añadido nuevas funcionalidades. Su principal funcionalidad es detectar anomalías en la red basándose en comportamientos.
En 1998 llego la primera versión de Snort de la mano de Martin Roesch, la principal funcionalidad a la que está enfocado desde que nació es el análisis de tráfico de red basándose en reglas. El principal problema de Snort es que era su rendimiento cuando se trata de analizar un gran caudal de tráfico. Justo por esta razón nace Suricata, en el año 2009 se publica la primera versión beta de este software multi hilo. Se trata de un proyecto de código libre desarrollado por Open Information Security Foundation (OISF).  Desde su lanzamiento este proyecto ha crecido mucho y cuenta con el apoyo de una gran comunidad y con casi 100 desarrolladores.
Ya conocemos los tres principales proyectos de NIDS de código abierto y gratuitos, solo nos queda escoger uno y ponernos manos a la obra. En mi caso he escogido Suricata, en el siguiente post veremos cómo dejar este NIDS funcionando en nuestro hogar.

¿Qué necesitamos para montar este entorno?

En este punto vamos a ver la configuración de red que yo he decidido montar, esta decisión viene condicionada por el bajo coste que tienen los equipos necesarios.
A continuación, podéis observar el esquema de red que obtendremos al terminar este proyecto, os dejo enlace a Amazon de cada uno de los elementos. Si ya disponéis de alguno de los elementos de otra marca o modelo se puede utilizar sin ningún problema.
  1. Router de la compañía telefónica: Esta figura representa al router que Vodafone, Telefónica, Orange, Jazztel o la compañía que tengáis os ha dado para poder conectarse a internet. En él he desactivado el punto de acceso wifi y lo he conectado al switch (2), de forma que todo el tráfico de mi red este obligado a pasar por dicho switch.
  2. Switch: Switch TP-LINK TL-SG108E, la única característica indispensable es que el switch que tengamos nos permita realizar “port mirroring”. En el próximo post veremos cómo configurar este switch de forma que todo el tráfico sea replicado hacia nuestro Suricata. (Esto está representado por la línea roja de la imagen superior).
  3. Punto de acceso: Punto de acceso wifi TP-LINK TL-WR841N, lo utilizaremos para conectar nuestro equipo de forma inalámbrica. Dado que este tráfico pasara por el switch podremos analizarlo en Suricata.
  4. Suricata: Este podemos montarlo en cualquier equipo que tengamos por casa. En mi caso he decido utilizar una Raspberry PI 3 Modelo B, es un placa que muchos compramos para trastear y al final se ha quedado cogiendo polvo en un cajón, ha llegado el momento de darle un uso. Otras ventajas que tenemos es el escaso consumo de este equipo y pequeño tamaño que nos permite dejarla en casi en cualquier sitio.
  5. Equipos: Representan los equipos conectados sobre los cuales podremos analizar el tráfico generado dado que están conectado a nuestro switch directamente o mediante el punto de acceso wifi.
Lo que pretendemos con este esquema de red, es que todo el tráfico generado en nuestro hogar sea replicado hacia Suricata, de esta forma podemos analizar todo lo que ocurre en nuestra red.  Por supuesto, este esquema lo podéis modificar y configurarlo como mejor os convenga.



Detectando intrusos en casa II

2300

En esta segunda parte de “Detectando intrusos en casa”, vamos a ver los siguientes puntos:
  • Instalación y configuración de un sistema operativo en raspberry pi 3 desde Windows.
  • Instalación y configuración de  Suricata.

Una vez finalicemos con estos tres puntos dispondremos de un NIDS totalmente funcional en nuestra casa o cualquier otro sitio donde queramos montarlo. Me dejo palabrerío y vamos al barro.

Instalación de un sistema Operativo

Lo primero que debemos hacer con nuestra Raspberry Pi es darle un sistema operativo con el que trabajar. En este caso, vamos a instalar raspbian dado que es una distribución bastante ligera. Además, al disponer de apt (Advanced Packing Tool) nos permitirá instalar Suricata con una sola instrucción sin necesidad de hacer malabares con github, compiladores, etc… Si alguno quiere intentarlo solo tiene que ir a aquí, no es complicado, pero es mucho más sencillo utilizar apt.

Instalación de raspbian con Etcher.

El primer paso que debemos realizar es descargar el SO que vamos a instalar, para ello simplemente descargaremos raspbian desde la página oficial de Raspberry pi. Esta imagen ocupa aproximadamente 350 MB y no dispone de ningún entorno gráfico. Vamos a utilizar una versión sin escritorio de forma que el SO utilice los mínimos recursos posibles dejándolos disponibles para Suricata.
Una vez disponemos de la imagen debemos pasarla a nuestra SD y para ello voy a utilizar una aplicación llamada Etcher. Para descargarla simplemente deberemos ir aquí. Destacar que la herramienta está disponible para Windows, Linux y Mac.
A continuación, podéis ver la apariencia que tiene esta aplicación.
La aplicación es tan sencilla cómo aparenta, simplemente seleccionamos una ISO (en nuestro caso raspbian que acabamos de descargar), seleccionamos la SD que queremos formatear y pulsamos sobre “Flash!”. Al cabo de unos minutos tendremos nuestra SD lista para introducirla en nuestra Raspi y arrancar nuestro SO.
Esta es una forma más de instalar un SO en raspberry, obviamente aquellos que ya habéis trabajado con Raspberry y utilizáis otros programas para instalar el SO o lo hacéis manualmente mediante “dd” podéis hacerlo. Por mi parte suelo utilizar la instrucción “dd” de Linux, pero para aquellos que les gusten las cosas más sencillas esta herramienta me ha parecido genial; tres botones y todo listo.

Configuración de Raspbian e instalación de Suricata.

Una vez disponemos de un SO en nuestra Raspberry debemos realizar unos pasos antes de instalar Suricata.
Lo primero que haremos es conectarnos a nuestra PI, puede que por defecto el servicio SSH esté deshabilitado. Así que conectaremos nuestra PI a un monitor e iniciaremos sesión con el usuario “pi” y la contraseña “raspberry”.
Una vez conectados debemos realizar los siguientes pasos.
  1. Crear un nuevo usuario (remplazar “yeknu” por vuestro nombre de usuario)
  2. Cambiar la contraseña de root.
  3. Borrar el usuario pi. Antes de realizar este paso es necesario salir de la sesión, entrar como el nuevo usuario creado. En el caso en el que no os deje eliminar el usuario pi por que han quedado procesos en ejecución simplemente ejecutar kill -9 [PID].
  4. Habilitar el servicio SSH para que se ejecute durante el arranque y arrancar el servicio
  5. Habilitar el modo promiscuo de la tarjeta de red durante el arranque del equipo. Crear el archive “/etc/network/interfaces.d/eth0” e introducir los siguientes valores:
  6. Instalar Suricata, configurarlo y habilitar el arranque automático durante el encendido.
  7. En este punto ya tenemos instalado Suricata, pero, el set de reglas que trae por defecto es muy pobre. Para completar estas reglas vamos a utilizar las reglas de emergingthreats. Estas son actualizadas casi a diario así que hay que mantenerlas lo más actualizadas posibles. Para ello, tengo un pequeño script en mi repositorio de github que ejecutándolo mediante una tarea programada mantendrá estas reglas actualizadas.El primer paso es descargar el script y ejecutarlo por primera vez.
  8. Una vez ejecutado dispondremos de todas las reglas de emerginthreats en el directorio “/etc/suricata/rules/” para que estas se mantengan actualizadas se recarguen todas las noches vamos a añadir dos tareas a nuestro crontab.
  9. Tras seguir todos estos pasos ya dispondremos de nuestro suricata totalmente funcional.