{"id":48,"date":"2019-12-19T18:35:11","date_gmt":"2019-12-19T18:35:11","guid":{"rendered":"http:\/\/blog.thepragmatic.xyz\/?p=48"},"modified":"2020-08-27T21:43:00","modified_gmt":"2020-08-27T21:43:00","slug":"implementacion-de-un-ids-snort","status":"publish","type":"post","link":"https:\/\/blog.thepragmatic.xyz\/?p=48","title":{"rendered":"Implementaci\u00f3n de un IDS (Snort)"},"content":{"rendered":"\n<h3>\u00bfPero qu\u00e9 es un sistema de detecci\u00f3n de intrusiones?<\/h3>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<p>Se conoce como sistema de detecci\u00f3n de intrusiones (IDS) a un programa de detecci\u00f3n de accesos no autorizados a un computador o a una red.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>A modo de cultura general existen varios tipos de IDS&#8230;&#8230;&#8230;&#8230;&#8230;, pero en esta entrada nos  vamos a enfocar en Snort como NIDS (Sistema de detecci\u00f3n de instrusiones basado en red).<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Requerimientos<\/p>\n\n\n\n<p>Sistema operativo &#8230;<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Configuraci\u00f3n del ambiente<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Install Updates and reboot:\nsudo apt-get update\nsudo apt-get dist-upgrade -y\nsudo apt-get install -y openssh-server\nsudo reboot<\/code><\/pre>\n\n\n\n<p><strong>Configuraci\u00f3n de la red<\/strong><\/p>\n\n\n\n<p>Algunas tarjetas de red tienen caracter\u00edsticas denominadas \u00abDescarga de recepci\u00f3n grande\u00bb (lro) y \u00abDescarga de recepci\u00f3n gen\u00e9rica\u00bb (gro). Con estas funciones habilitadas, la tarjeta de red realiza el reensamblado de paquetes antes de que sean procesados por el kernel. De forma predeterminada, Snort truncar\u00e1 paquetes m\u00e1s grandes que el tama\u00f1o predeterminado de 1518 bytes. Adem\u00e1s, LRO y GRO pueden causar problemas con el reensamblado basado en objetivos de Stream5. Recomendamos que apague LRO y GRO.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y ethtool\n\nuser@snortserver:~$ sudo ifdown enp0s3 &amp;&amp; sudo ifup enp0s3\nuser@snortserver:~$ ethtool -k enp0s3 | grep receive-offload\ngeneric-receive-offload: off\nlarge-receive-offload: off\nuser@snortserver:~$\n<\/code><\/pre>\n\n\n\n<p>Snort no necesita una direcci\u00f3n IP asignada a la interfaz en la que est\u00e1 escuchando, sin embargo, facilita la administraci\u00f3n remota del sistema a trav\u00e9s de ssh si se puede acceder a una interfaz. En un entorno de producci\u00f3n, se recomienda que use una interfaz en su servidor Snort para la administraci\u00f3n y haga que Snort escuche en otras interfaces, pero esto no es necesario. Por defecto, Ubuntu usar\u00e1 DHCP para configurar autom\u00e1ticamente una direcci\u00f3n, si este es el caso, puede verificar su direcci\u00f3n IP ejecutando ifconfig enp0s3. Si no tiene un servidor DHCP que asigne direcciones IP, configure una en su sistema Snort manualmente. Necesitar\u00e1 conectividad a Internet para descargar los paquetes requeridos y las plataformas de software.<\/p>\n\n\n\n<p>Una vez que haya iniciado sesi\u00f3n por primera vez y haya verificado la conectividad a Internet, aseg\u00farese de que el sistema est\u00e9 actualizado e instale el servidor openssh (para que podamos administrar el sistema de forma remota). Reinicie despu\u00e9s de la instalaci\u00f3n para asegurarse de que se aplican todos los parches.<\/p>\n\n\n\n<p><strong>Instalaci\u00f3n de Prerequisitos de Snort<\/strong><\/p>\n\n\n\n<p>pcap, PCRE, Libdnet y DAQ.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y build-essential git\nsudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev<\/code><\/pre>\n\n\n\n<p>Muchas gu\u00edas que instalan Snort en Ubuntu te hacen descargar libdnet desde su p\u00e1gina de inicio http:\/\/libdnet.sourceforge.net\/. Esto es posible y funcionar\u00e1 bien. Sin embargo, el paquete libdumbnet-dev Ubuntu proporciona el mismo software (no instale el paquete libdnet desde los archivos de Ubuntu, ya que es un paquete no relacionado y no proporciona las bibliotecas libdent necesarias). Si desea compilar las bibliotecas libdent desde la fuente y est\u00e1 ejecutando una versi\u00f3n de 64 bits de Ubuntu, use el indicador -fPIC durante la etapa de configuraci\u00f3n.<\/p>\n\n\n\n<p>En esta gu\u00eda, descargaremos una serie de tarbals para varios paquetes de software. Crearemos una carpeta llamada snort src para guardarlas todas en un solo lugar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir ~\/snort_src\ncd ~\/snort_src<\/code><\/pre>\n\n\n\n<p>Snort DAQ (biblioteca de adquisici\u00f3n de datos) tiene algunos requisitos previos que deben instalarse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y bison flex<\/code><\/pre>\n\n\n\n<p>Descargue e instale la \u00faltima versi\u00f3n de DAQ desde el sitio web de Snort. Los pasos a continuaci\u00f3n usan wget para descargar la versi\u00f3n 2.0.6 de DAQ, que es la \u00faltima versi\u00f3n en el momento de escribir esta gu\u00eda.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/snort_src\nwget https:\/\/www.snort.org\/downloads\/snort\/daq-2.0.6.tar.gz\ntar -xvzf daq-2.0.6.tar.gz\ncd daq-2.0.6\n.\/configure\nmake\nsudo make install\n\nls \/usr\/local\/lib\/daq<\/code><\/pre>\n\n\n\n<p>Para instalar Snort en Ubuntu, es necesario instalar un requisito previo adicional que no se menciona en la documentaci\u00f3n: zlibg, que es una biblioteca de compresi\u00f3n.<\/p>\n\n\n\n<p>Hay tres bibliotecas opcionales que mejoran la funcionalidad: liblzma-dev, que proporciona descompresi\u00f3n de archivos swf (adobe flash), openssl y libssl-dev, que proporcionan firmas de archivos SHA y MD5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y zlib1g-dev liblzma-dev openssl libssl-dev<\/code><\/pre>\n\n\n\n<p><strong>Instalaci\u00f3n y Compilaci\u00f3n de Snort<\/strong><\/p>\n\n\n\n<p>Ahora estamos listos para descargar el archivo fuente de Snort, compilar y luego instalar. La opci\u00f3n &#8211;enable-sourcefire proporciona Packet Performance Monitoring (PPM), que nos permite realizar una supervisi\u00f3n del rendimiento de las reglas y los preprocesadores, y crea Snort de la misma manera que lo hace el equipo de Snort:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/snort_src\nwget https:\/\/snort.org\/downloads\/snort\/snort-2.9.8.2.tar.gz\ntar -xvzf snort-2.9.8.2.tar.gz\ncd snort-2.9.8.2\n.\/configure --enable-sourcefire\nmake\nsudo make install<\/code><\/pre>\n\n\n\n<p><strong>*El paquete de la guia no esta actualizado, sustituir por este.<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/www.snort.org\/downloads\/archive\/snort\/snort-2.9.8.2.tar.gz\">https:\/\/www.snort.org\/downloads\/archive\/snort\/snort-2.9.8.2.tar.gz<\/a><\/p>\n\n\n\n<p>Si est\u00e1 interesado en ver las otras opciones de tiempo de compilaci\u00f3n disponibles, ejecute .\/configure &#8211;help para obtener una lista de todas las opciones de tiempo de compilaci\u00f3n. El equipo de Snort ha intentado garantizar que la configuraci\u00f3n predeterminada sea buena para la mayor\u00eda de las instalaciones b\u00e1sicas, por lo que no deber\u00eda necesitar cambiar nada a menos que est\u00e9 tratando de hacer algo especial.<\/p>\n\n\n\n<p>Ejecute el siguiente comando para actualizar las bibliotecas compartidas (obtendr\u00e1 un error cuando intente ejecutar Snort si omite este paso):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ldconfig<\/code><\/pre>\n\n\n\n<p>Coloque un enlace simb\u00f3lico al binario Snort en \/ usr \/ sbin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ln -s \/usr\/local\/bin\/snort \/usr\/sbin\/snort<\/code><\/pre>\n\n\n\n<p>Pruebe Snort ejecutando el binario como un usuario regular, pas\u00e1ndole la marca -V (que le dice a Snort que se verifique a s\u00ed mismo y que le pasen los archivos de configuraci\u00f3n). Deber\u00eda ver una salida similar a la que se muestra a continuaci\u00f3n (aunque los n\u00fameros de versi\u00f3n exactos pueden ser ligeramente diferentes):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>diego@ubuntuLab:~\/snort_src\/snort-2.9.8.2$ snort -V<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"643\" height=\"213\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image.png\" alt=\"\" class=\"wp-image-620\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image.png 643w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-300x99.png 300w\" sizes=\"(max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<p><strong>Configuraci\u00f3n de Snort para ejecutar en modo NIDS<\/strong><\/p>\n\n\n\n<p>Como no queremos que Snort se ejecute como root, necesitamos crear una cuenta y un grupo sin privilegios para que el daemon se ejecute bajo (snort: snort). Tambi\u00e9n crearemos una serie de archivos y directorios requeridos por Snort, y estableceremos permisos para esos archivos. Snort tendr\u00e1 los siguientes directorios: Configuraciones y archivos de reglas en \/ etc \/ snort Las alertas se escribir\u00e1n en \/ var \/ log \/ snort Las reglas compiladas (reglas .so) se almacenar\u00e1n en \/ usr \/ local \/ lib \/ snort_dynamicrules<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Create the snort user and group:\nsudo groupadd snort\nsudo useradd snort -r -s \/sbin\/nologin -c SNORT_IDS -g snort\n# Create the Snort directories:\nsudo mkdir \/etc\/snort\nsudo mkdir \/etc\/snort\/rules\nsudo mkdir \/etc\/snort\/rules\/iplists\nsudo mkdir \/etc\/snort\/preproc_rules\nsudo mkdir \/usr\/local\/lib\/snort_dynamicrules\nsudo mkdir \/etc\/snort\/so_rules\n# Create some files that stores rules and ip lists\nsudo touch \/etc\/snort\/rules\/iplists\/black_list.rules\nsudo touch \/etc\/snort\/rules\/iplists\/white_list.rules\nsudo touch \/etc\/snort\/rules\/local.rules\nsudo touch \/etc\/snort\/sid-msg.map\n# Create our logging directories:\nsudo mkdir \/var\/log\/snort\nsudo mkdir \/var\/log\/snort\/archived_logs\n# Adjust permissions:\nsudo chmod -R 5775 \/etc\/snort\nsudo chmod -R 5775 \/var\/log\/snort\nsudo chmod -R 5775 \/var\/log\/snort\/archived_logs\nsudo chmod -R 5775 \/etc\/snort\/so_rules\nsudo chmod -R 5775 \/usr\/local\/lib\/snort_dynamicrules<\/code><\/pre>\n\n\n\n<p>Tambi\u00e9n queremos cambiar la propiedad de los archivos que creamos anteriormente para asegurarnos de que Snort pueda acceder a los archivos que utiliza:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Change Ownership on folders:\nsudo chown -R snort:snort \/etc\/snort\nsudo chown -R snort:snort \/var\/log\/snort\nsudo chown -R snort:snort \/usr\/local\/lib\/snort_dynamicrules<\/code><\/pre>\n\n\n\n<p>Snort necesita algunos archivos de configuraci\u00f3n y los preprocesadores din\u00e1micos se copian del archivo fuente de Snort a la carpeta \/ etc \/ snort. Los archivos de configuraci\u00f3n son:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"179\" height=\"199\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-1.png\" alt=\"\" class=\"wp-image-623\"\/><\/figure>\n\n\n\n<p>Para copiar los archivos de configuraci\u00f3n y los preprocesadores din\u00e1micos, ejecute los siguientes comandos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/snort_src\/snort-2.9.8.2\/etc\/\nsudo cp *.conf* \/etc\/snort\nsudo cp *.map \/etc\/snort\nsudo cp *.dtd \/etc\/snort\ncd ~\/snort_src\/snort-2.9.8.2\/src\/dynamic-preprocessors\/build\/usr\/local\/lib\/snort_dynamicpreprocessor\/\nsudo cp * \/usr\/local\/lib\/snort_dynamicpreprocessor\/<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"740\" height=\"690\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-4.png\" alt=\"\" class=\"wp-image-627\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-4.png 740w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-4-300x280.png 300w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/figure>\n\n\n\n<p>Nuestro listado de directorios de Snort se ve as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>diego@ubuntuLab:\/etc\/snort$ tree \/etc\/snort\n\/etc\/snort<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"241\" height=\"367\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-5.png\" alt=\"\" class=\"wp-image-628\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-5.png 241w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-5-197x300.png 197w\" sizes=\"(max-width: 241px) 100vw, 241px\" \/><\/figure>\n\n\n\n<p>Ahora necesitamos editar el archivo de configuraci\u00f3n principal de Snort, \/etc\/snort\/snort.conf. Cuando ejecutamos Snort con este archivo como argumento, le dice a Snort que se ejecute en modo NIDS.<\/p>\n\n\n\n<p>Debemos comentar todos los archivos de reglas individuales a los que se hace referencia en el archivo de configuraci\u00f3n de Snort, ya que en lugar de descargar cada archivo individualmente, usaremos PulledPork para administrar nuestros conjuntos de reglas, que combina todas las reglas en un solo archivo. La siguiente l\u00ednea comentar\u00e1 todos los conjuntos de reglas en nuestro archivo snort.conf:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo sed -i \"s\/include \\$RULE\\_PATH\/#include \\$RULE\\_PATH\/\" \/etc\/snort\/snort.conf<\/code><\/pre>\n\n\n\n<p>Ahora cambiaremos manualmente algunas configuraciones en el archivo snort.conf, usando su editor favorito:<\/p>\n\n\n\n<p>Cambie las siguientes l\u00edneas para adaptarse a su entorno: la L\u00ednea 45, HOME NET debe coincidir con su red interna (amigable). En el siguiente ejemplo, nuestro HOME NET es 10.0.0.0 con una m\u00e1scara de subred de 24 bits (255.255.255.0):<\/p>\n\n\n\n<p>ipvar HOME_NET 192.168.1.0\/24<\/p>\n\n\n\n<p>Nota: No debe configurar EXTERNAL NET en! $ HOME NET como se recomienda en algunas gu\u00edas, ya que puede hacer que Snort no detecte alertas.<\/p>\n\n\n\n<p>Not necessarily.<\/p>\n\n\n\n<p>Your IDS won&#8217;t alert on an internal range attacking another internal range.<\/p>\n\n\n\n<p>I&#8217;ve seen:<\/p>\n\n\n\n<p>ipvar EXTERNAL_NET any<\/p>\n\n\n\n<p>to be more expansive.<\/p>\n\n\n\n<p>Nota: Es vital que HOME NET coincida con la subred IP de la interfaz en la que desea que Snort escuche. Por favor use ifconfig enp0s3 | grep \u00abinet add\u00bb para asegurarse de que tiene la direcci\u00f3n y el conjunto de m\u00e1scaras correctos. A menudo, esta ser\u00e1 una direcci\u00f3n IP 192.168.1.xo 10.0.0.x.<\/p>\n\n\n\n<p>Establezca las siguientes rutas de archivo en snort.conf, comenzando en la l\u00ednea 104:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var RULE_PATH \/etc\/snort\/rules\nvar SO_RULE_PATH \/etc\/snort\/so_rules\nvar PREPROC_RULE_PATH \/etc\/snort\/preproc_rules\n\nvar WHITE_LIST_PATH \/etc\/snort\/rules\/iplists\nvar BLACK_LIST_PATH \/etc\/snort\/rules\/iplists<\/code><\/pre>\n\n\n\n<p>Para facilitar las pruebas de Snort, deseamos habilitar el archivo local.rules, donde podemos agregar reglas en las que Snort puede alertar. Anular el comentario (eliminar el s\u00edmbolo de hash) de la l\u00ednea 545 para que se vea as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>include $RULE_PATH\/local.rules<\/code><\/pre>\n\n\n\n<p>Una vez que el archivo de configuraci\u00f3n est\u00e9 listo, haremos que Snort verifique que es un archivo v\u00e1lido y que todos los archivos necesarios a los que hace referencia sean correctos. Usamos el indicador -T para probar el archivo de configuraci\u00f3n, el indicador -c para indicar a Snort qu\u00e9 archivo de configuraci\u00f3n usar, y -i para especificar la interfaz en la que Snort escuchar\u00e1 (este es un nuevo requisito para el 2.9.8.x versi\u00f3n de snort). Ejecute sudo snort -T -c \/etc\/snort\/snort.conf -i enp0s3. Ejecute este comando como se muestra a continuaci\u00f3n y busque la siguiente salida (solo se muestran las \u00faltimas l\u00edneas de la salida para mayor claridad):<\/p>\n\n\n\n<p>Rule application order: activation-&gt;dynamic-&gt;pass-&gt;drop-&gt;sdrop-&gt;reject-&gt;alert-&gt;log<\/p>\n\n\n\n<p>Verifying Preprocessor Configurations!<\/p>\n\n\n\n<p>pcap DAQ configured to passive.<\/p>\n\n\n\n<p>Acquiring network traffic from \u00abenp0s3\u00bb.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"679\" height=\"663\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-6.png\" alt=\"\" class=\"wp-image-629\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-6.png 679w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-6-300x293.png 300w\" sizes=\"(max-width: 679px) 100vw, 679px\" \/><\/figure>\n\n\n\n<p>Nota Desde Ubuntu 16.04: los nombres de la interfaz han cambiado y son espec\u00edficos del sistema (ya no figuran como ethN). En el comando anterior, debe reemplazar eth0 con el nombre de su interfaz, como se muestra con el comando ifconfig (en mi caso es enp0s9).<\/p>\n\n\n\n<p>Es una buena idea desplazarse hacia arriba a trav\u00e9s de la salida de este comando para tener una idea de lo que Snort est\u00e1 cargando. Mucho de esto no tendr\u00e1 sentido en este momento, pero ser\u00e1 m\u00e1s claro a medida que trabaje m\u00e1s con Snort. Busque los errores y advertencias enumerados.<\/p>\n\n\n\n<p><strong>Escribir una regla simple para probar la detecci\u00f3n de snort<\/strong><\/p>\n\n\n\n<p>En esta etapa, Snort no tiene ninguna regla cargada (nuestros archivos de reglas a los que se hace referencia en snort.conf est\u00e1n vac\u00edos). Puede verificar que Snort no haya cargado ninguna regla si se desplaza hacia arriba en la salida del comando anterior y busca: 0 reglas de Snort le\u00eddas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"576\" height=\"219\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-7.png\" alt=\"\" class=\"wp-image-631\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-7.png 576w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-7-300x114.png 300w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/figure>\n\n\n\n<p>Para probar las capacidades de detecci\u00f3n de Snort, creemos una regla simple que har\u00e1 que Snort genere una alerta cada vez que Snort vea un mensaje de \u00absolicitud de eco\u00bb o \u00abrespuesta de eco\u00bb ICMP, que es f\u00e1cil de generar con la utilidad de ping ubicua (esto lo hace f\u00e1cil prueba de la regla).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alert icmp any any -> $HOME_NET any (msg:\"ICMP test detected\"; GID:1; sid:10000001; rev:001; classtype:icmp-event;)<\/code><\/pre>\n\n\n\n<p>Barnyard2 no lee la metainformaci\u00f3n sobre las alertas del archivo local.rules. Sin esta informaci\u00f3n, Barnyard2 no sabr\u00e1 ning\u00fan detalle sobre la regla que activ\u00f3 la alerta y generar\u00e1 errores no fatales al agregar nuevas reglas con PulledPork (hecho en un paso posterior). Para asegurarse de que barnyard2 sepa que la regla que creamos con el identificador \u00fanico 10000001 tiene el mensaje \u00abPrueba de detecci\u00f3n ICMP\u00bb, as\u00ed como otra informaci\u00f3n (consulte esta publicaci\u00f3n del blog para obtener m\u00e1s informaci\u00f3n). Agregamos la siguiente l\u00ednea al archivo \/etc\/snort\/sid-msg.map:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano  \/etc\/snort\/sid-msg.map<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"671\" height=\"69\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-8.png\" alt=\"\" class=\"wp-image-632\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-8.png 671w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-8-300x31.png 300w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/figure>\n\n\n\n<p>Cuando anul\u00f3 la l\u00ednea 545 sin comentar (incluya $ RULE PATH \/ local.rules) le estaba diciendo a Snort que Snort deber\u00eda cargar el archivo local.rules. Cuando Snort carga ese archivo en el inicio, ver\u00e1 la regla que cre\u00f3 y la usar\u00e1 en todo el tr\u00e1fico que vea la interfaz. En este caso, cuando creamos la regla, le dijimos a Snort que deber\u00eda generar una alerta cuando vea un ping ICMP.<\/p>\n\n\n\n<p>Como hicimos cambios en la configuraci\u00f3n de Snort, deber\u00edamos probar el archivo de configuraci\u00f3n nuevamente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"691\" height=\"762\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-9.png\" alt=\"\" class=\"wp-image-633\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-9.png 691w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-9-272x300.png 272w\" sizes=\"(max-width: 691px) 100vw, 691px\" \/><\/figure>\n\n\n\n<p>Esta vez, si se desplaza hacia arriba a trav\u00e9s de la salida, encontrar\u00e1 que se ha cargado una regla (la que creamos en local.rules y carg\u00f3 con la directiva de inclusi\u00f3n en snort.conf):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"576\" height=\"422\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-10.png\" alt=\"\" class=\"wp-image-634\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-10.png 576w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-10-300x220.png 300w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/figure>\n\n\n\n<p>Ahora que sabemos que Snort carga correctamente nuestra regla y nuestra configuraci\u00f3n, podemos iniciar snort en modo NIDS y decirle que env\u00ede las alertas directamente a la consola. Ejecutaremos Snort desde la l\u00ednea de comando, usando las siguientes banderas:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"762\" height=\"523\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-11.png\" alt=\"\" class=\"wp-image-635\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-11.png 762w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-11-300x206.png 300w\" sizes=\"(max-width: 762px) 100vw, 762px\" \/><\/figure>\n\n\n\n<p>Nota: Si est\u00e1 ejecutando Ubuntu 16.04, recuerde que el nombre de su interfaz no es enp0s9.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo \/usr\/local\/bin\/snort -A console -q -u snort -g snort -c \/etc\/snort\/snort.conf -i enp0s3<\/code><\/pre>\n\n\n\n<p>Cuando ejecute esta l\u00ednea, inicialmente no ver\u00e1 ninguna salida; sin embargo, Snort se est\u00e1 ejecutando, procesando todos los paquetes que llegan a enp0s3 (o la interfaz que haya especificado con el indicador -i), compar\u00e1ndolos con las reglas que ha cargado (en este nuestra \u00fanica regla de ping ICMP), y luego imprimir\u00e1 todas las alertas generadas cuando un paquete coincida con nuestra regla con la consola.<\/p>\n\n\n\n<p>Desde otra computadora, haga ping a la direcci\u00f3n IP de enp0s3 en la computadora Snort (o haga ping de manera alternativa desde el host de Snort a otra m\u00e1quina, o a su propia enp0s3, pero no a la interfaz de bucle de retorno), y deber\u00eda ver la salida de la consola similar a la que se muestra a continuaci\u00f3n (En el ejemplo siguiente, el servidor Snort est\u00e1 escuchando en enp0s3 con una direcci\u00f3n IP de 10.0.0.105, y la computadora que genera el ping es 10.0.0.59).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"755\" height=\"250\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-12.png\" alt=\"\" class=\"wp-image-637\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-12.png 755w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-12-300x99.png 300w\" sizes=\"(max-width: 755px) 100vw, 755px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-13.png\" alt=\"\" class=\"wp-image-638\" width=\"1450\" height=\"133\" srcset=\"https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-13.png 602w, https:\/\/blog.thepragmatic.xyz\/wp-content\/uploads\/2020\/08\/image-13-300x28.png 300w\" sizes=\"(max-width: 1450px) 100vw, 1450px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Sistema de detecci\u00f3n de intrusiones<\/p>\n","protected":false},"author":1,"featured_media":49,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=\/wp\/v2\/posts\/48"}],"collection":[{"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=48"}],"version-history":[{"count":17,"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":639,"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions\/639"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=\/wp\/v2\/media\/49"}],"wp:attachment":[{"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.thepragmatic.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}