Follow

Plugin redBorder para sensor Snort sobre Centos 6

Introducción

La seguridad es un elemento clave en muchos entornos sean del tamaño que sean.

Uno de los proyectos de software libre, líder en su terreno y ampliamente usado para reforzar la seguridad de redes, es Snort: un NIDPS (Network Intrusion Detection and Prevention System) muy presente en múltiples instalaciones profesionales, académicas y de laboratorio.

Esta guía nace con el objetivo de facilitar la integración de este tipo de instalaciones en el nuevo entorno Cloud de redBorder: redBorder Live.  

De este modo el usuario puede configurar de manera sencilla y eficaz múltiples políticas de reglas, así como almacenar y analizar las alertas generadas por Snort de una forma elegante, rápida y productiva.

Siguiendo estos sencillos pasos es posible registrar el sistema con Snort en la Live como si se tratara de un sensor propio de redBorder

Requisitos previos

El procedimiento aquí descrito toma como referencia una instalación sobre un sistema CentOS 6 totalmente actualizado.

Para comenzar con la integración es necesario cumplir con los requisitos que se detallan a continuación.

  • Acceso a los repositorios:
    • EPEL
    • redBorder (publicrepo)
    • cert-forensics-tools
  • Disponer de una cuenta y una organización creadas en redBorder Live.

Para la instalación de los repositorios basta con ejecutar el siguiente comando:

[root@snortstd-centos6 ~]# rpm -ivh \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm \
https://forensics.cert.org/cert-forensics-tools-release-el6.rpm \
http://publicrepo.redborder.com/redBorder-release-6-5.noarch.rpm
Retrieving https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm Retrieving https://forensics.cert.org/cert-forensics-tools-release-el6.rpm Retrieving http://publicrepo.redborder.com/redBorder-release-6-5.noarch.rpm Preparing...                ########################################### [100%]   1:redBorder-release      ########################################### [ 33%]   2:cert-forensics-tools-re########################################### [ 67%]   3:epel-release           ########################################### [100%]

Elección e instalación del paquete de Snort

El repositorio cert-forensics-tools contiene varias versiones de Snort compiladas para CentOS 6:

root@snortstd-centos6 ~]# yum search snort --showduplicates
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirror.tedra.es
 * epel: ftp.cica.es
 * extras: mirror.tedra.es
 * updates: mirror.tedra.es
============================== N/S Matched: snort ==============================
fwsnort-1.6.4-1.el6.noarch : Translates snort rules into equivalent iptables
                           : rules
1:snort-mysql-2.9.1.1-1.el6.x86_64 : snort with MySQL support
1:snort-postgresql-2.9.1.1-1.el6.x86_64 : snort with PostgreSQL support
snort-sample-rules-2.9.7.5-1.el6.noarch : Sample rules for snort
snort-sample-rules-2.9.7.6-1.el6.noarch : Sample rules for snort
snort-sample-rules-2.9.8.0-1.el6.noarch : Sample rules for snort
1:snort-unixODBC-2.9.1.1-1.el6.x86_64 : snort with unixODBC support
1:snort-2.9.7.5-1.el6.x86_64 : An open source Network Intrusion Detection System
                             : (NIDS)
1:snort-2.9.7.5-1.el6.x86_64 : An open source Network Intrusion Detection System
                             : (NIDS)
1:snort-2.9.7.6-1.el6.x86_64 : An open source Network Intrusion Detection System
                             : (NIDS)
1:snort-2.9.8.0-1.el6.x86_64 : An open source Network Intrusion Detection System
                             : (NIDS)
1:snort-openappid-2.9.7.5-1.el6.x86_64 : An open source Network Intrusion
     ...: Detection System (NIDS) with open AppId support
1:snort-openappid-2.9.7.6-1.el6.x86_64 : An open source Network Intrusion
     ...: Detection System (NIDS) with open AppId support
1:snort-openappid-2.9.8.0-1.el6.x86_64 : An open source Network Intrusion
     ...: Detection System (NIDS) with open AppId support

  Name and summary matches only, use "search all" for everything. 

En este caso se va a elegir la versión snort-2.9.7.5-1 como paquete para instalar (válido para el resto de versiones).

[root@snortstd-centos6 ~]# yum install snort-2.9.7.5-1.el6.x86_64
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: mirror.tedra.es
 * epel: ftp.cica.es
 * extras: mirror.tedra.es
 * updates: mirror.tedra.es
Resolving Dependencies
--> Running transaction check
---> Package snort.x86_64 1:2.9.7.5-1.el6 will be installed
--> Processing Dependency: libsfbpf.so.0()(64bit) for package: 1:snort-2.9.7.5-1.el6.x86_64
--> Processing Dependency: libdnet.so.1()(64bit) for package: 1:snort-2.9.7.5-1.el6.x86_64
--> Running transaction check
---> Package daq.x86_64 0:2.0.6-1.el6 will be installed
---> Package libdnet.x86_64 0:1.12-6.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch           Version                 Repository         Size
================================================================================
Installing:
 snort           x86_64         1:2.9.7.5-1.el6         forensics         5.1 M
Installing for dependencies:
 daq             x86_64         2.0.6-1.el6             forensics         252 k
 libdnet         x86_64         1.12-6.el6              epel               28 k

Transaction Summary
================================================================================
Install       3 Package(s)

Total download size: 5.4 M
Installed size: 19 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): daq-2.0.6-1.el6.x86_64.rpm                        | 252 kB     00:00     
(2/3): libdnet-1.12-6.el6.x86_64.rpm                     |  28 kB     00:00 ... 
(3/3): snort-2.9.7.5-1.el6.x86_64.rpm                    | 5.1 MB     00:02     
--------------------------------------------------------------------------------
Total                                           1.0 MB/s | 5.4 MB     00:05     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : libdnet-1.12-6.el6.x86_64                                    1/3 
  Installing : daq-2.0.6-1.el6.x86_64                                       2/3 
  Installing : 1:snort-2.9.7.5-1.el6.x86_64                                 3/3 
  Verifying  : daq-2.0.6-1.el6.x86_64                                       1/3 
  Verifying  : 1:snort-2.9.7.5-1.el6.x86_64                                 2/3 
  Verifying  : libdnet-1.12-6.el6.x86_64                                    3/3 

Installed:
  snort.x86_64 1:2.9.7.5-1.el6                                                  

Dependency Installed:
  daq.x86_64 0:2.0.6-1.el6              libdnet.x86_64 0:1.12-6.el6             

Complete!

Esta guía está enfocada a la  realización de una configuración básica que permita tener el servicio de Snort funcionando, de modo que sirva de punto de arranque para una configuración más compleja.

La configuración particular de Snort para que se adapte a las necesidades de inspección del entorno está fuera del ámbito de este documento.

Elementos a analizar y modo de funcionamiento del servicio

  • Interfaz a analizar: eth0
  • Modo de funcionamiento del servicio: IDS
  • Output de salida de snort: unified2

Tomando como punto de partida estos parámetros se usará el archivo de configuración tal cual viene por defecto cambiando algunas entradas:

  • Desactivar las opciones ALERTMODE y BINARY_LOG del archivo /etc/sysconfig/snort. Por ejemplo:
# /etc/sysconfig/snort
# $Id: snort.sysconfig,v 1.3 2005/05/05 18:23:45 jhewlett Exp $

# All of these options with the exception of -c, which tells Snort where
# the configuration file is, may be specified in that configuration file as
# well as the command line. Both the command line and config file options
# are listed here for reference.


#### General Configuration

# What interface should snort listen on?  [Pick only 1 of the next 3!]
# This is -i {interface} on the command line
# This is the snort.conf config interface: {interface} directive
INTERFACE=eth0
#
# The following two options are not directly supported on the command line
# or in the conf file and assume the same Snort configuration for all
# instances
#
# To listen on all interfaces use this:
#INTERFACE=ALL
#
# To listen only on given interfaces use this:
#INTERFACE="eth1 eth2 eth3 eth4 eth5"


# Where is Snort's configuration file?
# -c {/path/to/snort.conf}
CONF=/etc/snort/snort.conf

# What user and group should Snort drop to after starting? This user and
# group should have very few privileges.
# -u {user} -g {group}
# config set_uid: user
# config set_gid: group
USER=snort
GROUP=snort

# Should Snort change the order in which the rules are applied to packets.
# Instead of being applied in the standard Alert->Pass->Log order, this will
# apply them in Pass->Alert->Log order.
# -o
# config order: {actions in order}
# e.g. config order: log alert pass activation dynamic suspicious redalert
PASS_FIRST=0


#### Logging & Alerting

# NOTE: NO_PACKET_LOG and BINARY_LOG, ALERTMODE, etc. are mutually
# exclusive. Use either NO_PACKET_LOG or any/all of the other logging
# options. But the more logging options use you, the slower Snort will run.


# Where should Snort log?
# -l {/path/to/logdir}
# config logdir: {/path/to/logdir}
LOGDIR=/var/log/snort

# How should Snort alert? Valid alert modes include fast, full, none, and
# unsock.  Fast writes alerts to the default "alert" file in a single-line,
# syslog style alert message.  Full writes the alert to the "alert" file
# with the full decoded header as well as the alert message.  None turns off
# alerting. Unsock is an experimental mode that sends the alert information
# out over a UNIX socket to another process that attaches to that socket.
# -A {alert-mode}
# output alert_{type}: {options}
#ALERTMODE=fast

# Should Snort dump the application layer data when displaying packets in
# verbose or packet logging mode.
# -d
# config dump_payload
DUMP_APP=1

# Should Snort keep binary (AKA pcap, AKA tcpdump) logs also? This is
# recommended as it provides very useful information for investigations.
# -b
# output log_tcpdump: {log name}
#BINARY_LOG=1

# Should Snort turn off packet logging?  The program still generates
# alerts normally.
# -N
# config nolog
NO_PACKET_LOG=0

# Print out the receiving interface name in alerts.
# -I
# config alert_with_interface_name
PRINT_INTERFACE=0

# When dumping the stats, what log file should we look in
SYSLOG=/var/log/messages

# When dumping the stats, how long to wait to make sure that syslog can
# flush data to disk
SECS=5

# To add a BPF filter to the command line uncomment the following variable
# syntax corresponds to tcpdump(8)
#BPF="not host 192.168.1.1"

# To use an external BPF filter file uncomment the following variable
# syntax corresponds to tcpdump(8)
# -F {/path/to/bpf_file}
# config bpf_file: /path/to/bpf_file
#BPFFILE=/etc/snort/bpf_file
  • Eliminar todas las entradas que hacen referencia a los archivos de reglas (include $RULE_PATH/*.rules). Dejar únicamente aquellas que utilizan local.rules (include $RULE_PATH/local.rules).
...
###################################################
# Step #7: Customize your rule set
# For more information, see Snort Manual, Writing Snort Rules
#
# NOTE: All categories are enabled in this conf file
###################################################

# site specific rules
include $RULE_PATH/local.rules

#include $RULE_PATH/app-detect.rules
#include $RULE_PATH/attack-responses.rules
#include $RULE_PATH/backdoor.rules
#include $RULE_PATH/bad-traffic.rules
#include $RULE_PATH/blacklist.rules
#include $RULE_PATH/botnet-cnc.rules
...
  • Activar el preprocesador perfmonitor que permite registrar las estadísticas de Snort. Estas se enviarán a redBorder Live y pueden ser consultadas de una forma sencilla (prestar atención al path propuesto).
...
# performance statistics.  For more information, see the Snort Manual,
# Configuring Snort - Preprocessors - Performance Monitor
preprocessor perfmonitor: time 300 file /var/log/snort/snort.stats pktcnt 1000
...
  • Desactivar el preprocesador de reputación, que no será utilizado en esta configuración básica.
...
# Reputation preprocessor. For more information see README.reputation
#preprocessor reputation: \
#   memcap 500, \
#   priority whitelist, \
#   nested_ip inner, \
#   whitelist $WHITE_LIST_PATH/white_list.rules, \
#   blacklist $BLACK_LIST_PATH/black_list.rules
...

Para finalizar el proceso de configuración y que, de este modo,  el servicio se encuentre operativo a un nivel de funcionamiento básico es necesario realizar dos pasos más:

1. Crear el directorio de las dynamics rules:

[root@snortstd-centos6 ~]# mkdir /usr/local/lib/snort_dynamicrules

2. Crear el archivo de reglas local.rules, en principio vacío:

[root@snortstd-centos6 ~]# touch /etc/snort/rules/local.rules

 Una vez ejecutados estos pasos ya es posible poner en funcionamiento el servicio: 

[root@snortstd-centos6 ~]# /etc/init.d/snortd start
Starting snort: Spawning daemon child...
My daemon child 31590 lives...
Daemon parent exiting (0)
                                                           [  OK  ]

Instalación del paquete redBorder

Una vez que se ha instalado el paquete de Snort y tras haber comprobado que su funcionamiento es correcto, se debe proceder a la instalación del paquete redBorder-IPS-generic. Este paquete permite integrar la instalación de Snort en redBorder Live y sirve para la gestión tanto de las reglas a aplicar en forma de políticas como de los eventos generados.

El paquete redBorder-IPS-generic requiere de otros paquetes para su funcionamiento:

  • ruby
  • GeoIP
  • net-snmp
  • sharutils
  • Algunas gemas que se instalarán como dependencias
[root@snortstd-centos6 ~]# yum install redBorder-IPS-generic
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: mirror.tedra.es
 * epel: ftp.cica.es
 * extras: mirror.tedra.es
 * updates: mirror.tedra.es
Resolving Dependencies
--> Running transaction check
---> Package redBorder-IPS-generic.x86_64 0:3.1.65-1 will be installed
--> Processing Dependency: sharutils for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: rubygems for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: rubygem-mixlib-config for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: rubygem-mixlib-authentication for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: ruby for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: net-snmp-utils for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: net-snmp-libs for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: net-snmp for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Processing Dependency: GeoIP for package: redBorder-IPS-generic-3.1.65-1.x86_64
--> Running transaction check
---> Package GeoIP.x86_64 0:1.6.5-1.el6 will be installed
--> Processing Dependency: geoipupdate for package: GeoIP-1.6.5-1.el6.x86_64
--> Processing Dependency: GeoIP-data for package: GeoIP-1.6.5-1.el6.x86_64
---> Package net-snmp.x86_64 1:5.5-54.el6_7.1 will be installed
--> Processing Dependency: libsensors.so.4()(64bit) for package: 1:net-snmp-5.5-54.el6_7.1.x86_64
---> Package net-snmp-libs.x86_64 1:5.5-54.el6_7.1 will be installed
---> Package net-snmp-utils.x86_64 1:5.5-54.el6_7.1 will be installed
---> Package ruby.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Processing Dependency: ruby-libs = 1.8.7.374-4.el6_6 for package: ruby-1.8.7.374-4.el6_6.x86_64
--> Processing Dependency: libruby.so.1.8()(64bit) for package: ruby-1.8.7.374-4.el6_6.x86_64
---> Package rubygem-mixlib-authentication.noarch 0:1.3.0-6.el6 will be installed
--> Processing Dependency: rubygem(mixlib-log) for package: rubygem-mixlib-authentication-1.3.0-6.el6.noarch
---> Package rubygem-mixlib-config.noarch 0:2.1.0-3.el6 will be installed
---> Package rubygems.noarch 0:1.3.7-5.el6 will be installed
--> Processing Dependency: ruby-rdoc for package: rubygems-1.3.7-5.el6.noarch
---> Package sharutils.x86_64 0:4.7-6.1.el6 will be installed
--> Running transaction check
---> Package GeoIP-GeoLite-data.noarch 0:2015.12-1.el6 will be installed
--> Processing Dependency: GeoIP-GeoLite-data-extra = 2015.12-1.el6 for package: GeoIP-GeoLite-data-2015.12-1.el6.noarch
---> Package geoipupdate.x86_64 0:2.2.1-2.el6 will be installed
---> Package lm_sensors-libs.x86_64 0:3.1.1-17.el6 will be installed
---> Package ruby-libs.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Processing Dependency: libreadline.so.5()(64bit) for package: ruby-libs-1.8.7.374-4.el6_6.x86_64
---> Package ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Processing Dependency: ruby-irb = 1.8.7.374-4.el6_6 for package: ruby-rdoc-1.8.7.374-4.el6_6.x86_64
---> Package rubygem-mixlib-log.noarch 0:1.6.0-1.el6 will be installed
--> Running transaction check
---> Package GeoIP-GeoLite-data-extra.noarch 0:2015.12-1.el6 will be installed
---> Package compat-readline5.x86_64 0:5.2-17.1.el6 will be installed
---> Package ruby-irb.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                         Arch     Version             Repository   Size
================================================================================
Installing:
 redBorder-IPS-generic           x86_64   3.1.65-1            redBorder    46 M
Installing for dependencies:
 GeoIP                           x86_64   1.6.5-1.el6         epel        113 k
 GeoIP-GeoLite-data              noarch   2015.12-1.el6       epel        363 k
 GeoIP-GeoLite-data-extra        noarch   2015.12-1.el6       epel         23 M
 compat-readline5                x86_64   5.2-17.1.el6        base        130 k
 geoipupdate                     x86_64   2.2.1-2.el6         epel         28 k
 lm_sensors-libs                 x86_64   3.1.1-17.el6        base         38 k
 net-snmp                        x86_64   1:5.5-54.el6_7.1    updates     308 k
 net-snmp-libs                   x86_64   1:5.5-54.el6_7.1    updates     1.5 M
 net-snmp-utils                  x86_64   1:5.5-54.el6_7.1    updates     176 k
 ruby                            x86_64   1.8.7.374-4.el6_6   base        538 k
 ruby-irb                        x86_64   1.8.7.374-4.el6_6   base        317 k
 ruby-libs                       x86_64   1.8.7.374-4.el6_6   base        1.7 M
 ruby-rdoc                       x86_64   1.8.7.374-4.el6_6   base        381 k
 rubygem-mixlib-authentication   noarch   1.3.0-6.el6         redBorder    14 k
 rubygem-mixlib-config           noarch   2.1.0-3.el6         redBorder    14 k
 rubygem-mixlib-log              noarch   1.6.0-1.el6         epel         12 k
 rubygems                        noarch   1.3.7-5.el6         base        207 k
 sharutils                       x86_64   4.7-6.1.el6         base        187 k

Transaction Summary
================================================================================
Install      19 Package(s)

Total download size: 75 M
Installed size: 149 M
Is this ok [y/N]: y
Downloading Packages:
(1/19): GeoIP-1.6.5-1.el6.x86_64.rpm                     | 113 kB     00:00 ... 
(2/19): GeoIP-GeoLite-data-2015.12-1.el6.noarch.rpm      | 363 kB     00:00 ... 
(3/19): GeoIP-GeoLite-data-extra-2015.12-1.el6.noarch.rp |  23 MB     00:01 ... 
(4/19): compat-readline5-5.2-17.1.el6.x86_64.rpm         | 130 kB     00:00     
(5/19): geoipupdate-2.2.1-2.el6.x86_64.rpm               |  28 kB     00:00 ... 
(6/19): lm_sensors-libs-3.1.1-17.el6.x86_64.rpm          |  38 kB     00:00     
(7/19): net-snmp-5.5-54.el6_7.1.x86_64.rpm               | 308 kB     00:00     
(8/19): net-snmp-libs-5.5-54.el6_7.1.x86_64.rpm          | 1.5 MB     00:00     
(9/19): net-snmp-utils-5.5-54.el6_7.1.x86_64.rpm         | 176 kB     00:00     
(10/19): redBorder-IPS-generic-3.1.65-1.x86_64.rpm       |  46 MB     00:05     
(11/19): ruby-1.8.7.374-4.el6_6.x86_64.rpm               | 538 kB     00:00     
(12/19): ruby-irb-1.8.7.374-4.el6_6.x86_64.rpm           | 317 kB     00:00     
(13/19): ruby-libs-1.8.7.374-4.el6_6.x86_64.rpm          | 1.7 MB     00:00     
(14/19): ruby-rdoc-1.8.7.374-4.el6_6.x86_64.rpm          | 381 kB     00:00     
(15/19): rubygem-mixlib-authentication-1.3.0-6.el6.noarc |  14 kB     00:00     
(16/19): rubygem-mixlib-config-2.1.0-3.el6.noarch.rpm    |  14 kB     00:00     
(17/19): rubygem-mixlib-log-1.6.0-1.el6.noarch.rpm       |  12 kB     00:00 ... 
(18/19): rubygems-1.3.7-5.el6.noarch.rpm                 | 207 kB     00:00     
(19/19): sharutils-4.7-6.1.el6.x86_64.rpm                | 187 kB     00:00     
--------------------------------------------------------------------------------
Total                                           6.3 MB/s |  75 MB     00:11     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
 Package: centos-release-6-6.el6.centos.12.2.x86_64 (@anaconda-CentOS-201410241409.x86_64/6.6)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : lm_sensors-libs-3.1.1-17.el6.x86_64                         1/19 
  Installing : 1:net-snmp-libs-5.5-54.el6_7.1.x86_64                       2/19 
  Installing : 1:net-snmp-utils-5.5-54.el6_7.1.x86_64                      3/19 
  Installing : 1:net-snmp-5.5-54.el6_7.1.x86_64                            4/19 
  Installing : GeoIP-GeoLite-data-2015.12-1.el6.noarch                     5/19 
  Installing : GeoIP-GeoLite-data-extra-2015.12-1.el6.noarch               6/19 
  Installing : geoipupdate-2.2.1-2.el6.x86_64                              7/19 
  Installing : GeoIP-1.6.5-1.el6.x86_64                                    8/19 
  Installing : sharutils-4.7-6.1.el6.x86_64                                9/19 
  Installing : compat-readline5-5.2-17.1.el6.x86_64                       10/19 
  Installing : ruby-libs-1.8.7.374-4.el6_6.x86_64                         11/19 
  Installing : ruby-1.8.7.374-4.el6_6.x86_64                              12/19 
  Installing : ruby-irb-1.8.7.374-4.el6_6.x86_64                          13/19 
  Installing : ruby-rdoc-1.8.7.374-4.el6_6.x86_64                         14/19 
  Installing : rubygems-1.3.7-5.el6.noarch                                15/19 
  Installing : rubygem-mixlib-log-1.6.0-1.el6.noarch                      16/19 
  Installing : rubygem-mixlib-authentication-1.3.0-6.el6.noarch           17/19 
  Installing : rubygem-mixlib-config-2.1.0-3.el6.noarch                   18/19 
  Installing : redBorder-IPS-generic-3.1.65-1.x86_64                      19/19 
Claim this IPS with the UUID: bd93699b-ff15-4d07-a0f2-f07da1a9ca81
INFO: Please, add this lines to your snmpd.conf file in order to allow get basic statistics:
>>> /etc/snmp/snmpd.conf
disk /
com2sec redBorderUser localhost redBorder
group redBorderGroup v1 redBorderUser
group redBorderGroup v2c redBorderUser
view all included .1 80
access redBorderGroup "" any noauth exact all none none
INFO: You must enable perfmonitor preprocessor to enable statistics. To enable it add the folowing line: preprocessor perfmonitor: time 300 file /var/log/snort/snort.stats pktcnt 10000
  Verifying  : redBorder-IPS-generic-3.1.65-1.x86_64                       1/19 
  Verifying  : compat-readline5-5.2-17.1.el6.x86_64                        2/19 
  Verifying  : GeoIP-GeoLite-data-extra-2015.12-1.el6.noarch               3/19 
  Verifying  : GeoIP-1.6.5-1.el6.x86_64                                    4/19 
  Verifying  : ruby-libs-1.8.7.374-4.el6_6.x86_64                          5/19 
  Verifying  : lm_sensors-libs-3.1.1-17.el6.x86_64                         6/19 
  Verifying  : ruby-rdoc-1.8.7.374-4.el6_6.x86_64                          7/19 
  Verifying  : 1:net-snmp-libs-5.5-54.el6_7.1.x86_64                       8/19 
  Verifying  : sharutils-4.7-6.1.el6.x86_64                                9/19 
  Verifying  : ruby-1.8.7.374-4.el6_6.x86_64                              10/19 
  Verifying  : GeoIP-GeoLite-data-2015.12-1.el6.noarch                    11/19 
  Verifying  : rubygem-mixlib-log-1.6.0-1.el6.noarch                      12/19 
  Verifying  : geoipupdate-2.2.1-2.el6.x86_64                             13/19 
  Verifying  : 1:net-snmp-utils-5.5-54.el6_7.1.x86_64                     14/19 
  Verifying  : rubygem-mixlib-authentication-1.3.0-6.el6.noarch           15/19 
  Verifying  : rubygems-1.3.7-5.el6.noarch                                16/19 
  Verifying  : 1:net-snmp-5.5-54.el6_7.1.x86_64                           17/19 
  Verifying  : rubygem-mixlib-config-2.1.0-3.el6.noarch                   18/19 
  Verifying  : ruby-irb-1.8.7.374-4.el6_6.x86_64                          19/19 

Installed:
  redBorder-IPS-generic.x86_64 0:3.1.65-1                                       

Dependency Installed:
  GeoIP.x86_64 0:1.6.5-1.el6                                                    
  GeoIP-GeoLite-data.noarch 0:2015.12-1.el6                                     
  GeoIP-GeoLite-data-extra.noarch 0:2015.12-1.el6                               
  compat-readline5.x86_64 0:5.2-17.1.el6                                        
  geoipupdate.x86_64 0:2.2.1-2.el6                                              
  lm_sensors-libs.x86_64 0:3.1.1-17.el6                                         
  net-snmp.x86_64 1:5.5-54.el6_7.1                                              
  net-snmp-libs.x86_64 1:5.5-54.el6_7.1                                         
  net-snmp-utils.x86_64 1:5.5-54.el6_7.1                                        
  ruby.x86_64 0:1.8.7.374-4.el6_6                                               
  ruby-irb.x86_64 0:1.8.7.374-4.el6_6                                           
  ruby-libs.x86_64 0:1.8.7.374-4.el6_6                                          
  ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6                                          
  rubygem-mixlib-authentication.noarch 0:1.3.0-6.el6                            
  rubygem-mixlib-config.noarch 0:2.1.0-3.el6                                    
  rubygem-mixlib-log.noarch 0:1.6.0-1.el6                                       
  rubygems.noarch 0:1.3.7-5.el6                                                 
  sharutils.x86_64 0:4.7-6.1.el6                                                

Complete!

Al instalar el paquete aparece un mensaje solicitando la inclusión de unas líneas en la configuración snmpd.conf del paquete net-snmp:

...
INFO: Please, add this lines to your snmpd.conf file in order to allow get basic statistics:
>>> /etc/snmp/snmpd.conf
disk /
com2sec redBorderUser localhost redBorder
group redBorderGroup v1 redBorderUser
group redBorderGroup v2c redBorderUser
view all included .1 80
access redBorderGroup "" any noauth exact all none none

Estas líneas permiten al agente de redBorder instalado enviar información básica del sistema a redBorder Live obtenida mediante peticiones snmp locales a la Community redBorder.

Además del mensaje arriba mencionado aparecen otros dos que hay que tener en cuenta:

...
INFO: You must enable perfmonitor preprocessor to enable statistics. To enable it add the folowing line: preprocessor perfmonitor: time 300 file /var/log/snort/snort.stats pktcnt 10000

Este mensaje hace referencia a la configuración del preprocesador perfmonitor.

...
Claim this IPS with the UUID: bd93699b-ff15-4d07-a0f2-f07da1a9ca81
...

Este último mensaje nos informa del UUID reservado para esta instalación y con el que se identificará el sistema en redBorder Live.

En cualquier momento se puede consultar dicho valor en el archivo /opt/rb/etc/rb-uuid:

[root@snortstd-centos6 ~]# cat /opt/rb/etc/rb-uuid 
bd93699b-ff15-4d07-a0f2-f07da1a9ca81

A continuación se añade la configuración aconsejada en snmpd.conf:

[root@snortstd-centos6 ~]# cat >> /etc/snmp/snmpd.conf <<EOF
com2sec redBorderUser localhost redBorder
group redBorderGroup v1 redBorderUser
group redBorderGroup v2c redBorderUser
view all included .1 80
access redBorderGroup "" any noauth exact all none none
EOF

Para monitorizar el estado del sistema de ficheros (estado, ocupación, punto de montaje, etc.) añadir la siguiente línea:

[root@snortstd-centos6 ~]# cat >> /etc/snmp/snmpd.conf <<EOF
disk /
EOF

Finalmente se procede al reinicio del servicio snmpd.

[root@snortstd-centos6 ~]# /etc/init.d/snmpd restart
Stopping snmpd:                                            [  OK  ]
Starting snmpd:                                            [  OK  ]

Es posible comprobar si la configuración es correcta mediante una sencilla consulta:

[root@snortstd-centos6 ~]# snmpwalk -v2c -c redBorder \
localhost UCD-SNMP-MIB::systemStats

UCD-SNMP-MIB::ssIndex.0 = INTEGER: 1
UCD-SNMP-MIB::ssErrorName.0 = STRING: systemStats
UCD-SNMP-MIB::ssSwapIn.0 = INTEGER: 0 kB
UCD-SNMP-MIB::ssSwapOut.0 = INTEGER: 0 kB
UCD-SNMP-MIB::ssIOSent.0 = INTEGER: 4 blocks/s
UCD-SNMP-MIB::ssIOReceive.0 = INTEGER: 0 blocks/s
UCD-SNMP-MIB::ssSysInterrupts.0 = INTEGER: 17 interrupts/s
UCD-SNMP-MIB::ssSysContext.0 = INTEGER: 58 switches/s
UCD-SNMP-MIB::ssCpuUser.0 = INTEGER: 0
UCD-SNMP-MIB::ssCpuSystem.0 = INTEGER: 0
UCD-SNMP-MIB::ssCpuIdle.0 = INTEGER: 99
UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 6379
UCD-SNMP-MIB::ssCpuRawNice.0 = Counter32: 1545
UCD-SNMP-MIB::ssCpuRawSystem.0 = Counter32: 4131
UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 8684393
UCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 27199
UCD-SNMP-MIB::ssCpuRawKernel.0 = Counter32: 0
UCD-SNMP-MIB::ssCpuRawInterrupt.0 = Counter32: 1
UCD-SNMP-MIB::ssIORawSent.0 = Counter32: 1720732
UCD-SNMP-MIB::ssIORawReceived.0 = Counter32: 770644
UCD-SNMP-MIB::ssRawInterrupts.0 = Counter32: 625495
UCD-SNMP-MIB::ssRawContexts.0 = Counter32: 875982
UCD-SNMP-MIB::ssCpuRawSoftIRQ.0 = Counter32: 73
UCD-SNMP-MIB::ssRawSwapIn.0 = Counter32: 0
UCD-SNMP-MIB::ssRawSwapOut.0 = Counter32: 0


[root@snortstd-centos6 ~]# snmpwalk -v2c -c redBorder localhost \
UCD-SNMP-MIB::dskEntry

UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1
UCD-SNMP-MIB::dskPath.1 = STRING: /
UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/vg_snortstd-lv_root
UCD-SNMP-MIB::dskMinimum.1 = INTEGER: 100000
UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 14225776
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 11303996
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 2192488
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 16
UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 6
UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 14225776
UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 11303996
UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 2192488
UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::dskErrorMsg.1 = STRING:

Registro del sensor en redBorder Live

En primer lugar, es necesario verificar que el servicio rb_register esté parado:

[root@snortstd-centos6 ~]# /etc/init.d/rb-register status
rb_register is stopped

A continuación, iniciar el servicio para que se produzca la primera fase del registro:

[root@snortstd-centos6 ~]# /etc/init.d/rb-register start
Starting rb_register:                                      [  OK  ]
Domain to connect: https://live.redorder.com
Verify remote certificate: enabled
Claim this IPS with the UUID: bd93699b-ff15-4d07-a0f2-f07da1a9ca81

En este momento, el equipo ha registrado el UUID en la Cloud a la espera de que sea reclamado. Se puede  verificar esta situación a través de los logs del sistema:

[root@snortstd-centos6 ~]# tail -f /var/log/messages 
Feb  2 12:03:30 snortstd rb_register[31958]: Registering sensor  --  URL: https://live.redborder.com/api/v1/sensors
Feb  2 12:03:30 snortstd rb_register[31958]: STATUS: REGISTERING
Feb  2 12:03:31 snortstd rb_register[31958]: STATUS: REGISTERED -- UUID: 1226748192552511968
Feb  2 12:04:31 snortstd rb_register[31958]: STATUS: VERIFYING

En cualquier momento se puede forzar la regeneración de un nuevo UUID mediante la desasociación del sensor usando el siguiente script:

[root@snortstd-centos6 ~]# /opt/rb/bin/rb_disassociate_sensor.sh 
Are you sure you want to disassociate this sensor from the manager? (y/N) y
Stopping rb_register:                                      [  OK  ]
Deleting /opt/rb/etc/chef/client.pem
Deleting /opt/rb/etc/chef/client.rb
Deleting /etc/cron.d/redborder
Deleting /opt/rb/etc/sysconfig/barnyard2
Deleting /opt/rb/etc/sid-msg.map
Deleting /opt/rb/etc/barnyard2.conf
Deleting /opt/rb/etc/rb-conf
Deleting /opt/rb/etc/rb-conf-final.sh
Starting rb_register:                                      [  OK  ]
Sensor UUID to claim: 28e4df0f-4fd5-4fe2-9142-d4b92ea96e9d

El uso de este script provoca la desasociación y parada del servicio rb_register, así como la recreación de un nuevo UUID e inicio posterior del servicio rb_register.

Este recurso solo se debe usar en los siguientes casos:

  • Si existe sospecha caso de que se haya  producido algún error y el sensor no se pueda reclamar por algún motivo.
  • Para la obtención de un nuevo UUID.

En este caso los logs se verían como sigue:

[root@snortstd-centos6 ~]# tail -f /var/log/messages 
Feb  2 12:03:30 snortstd rb_register[31958]: Registering sensor  --  URL: https://10.0.150.73/api/v1/sensors
Feb  2 12:03:30 snortstd rb_register[31958]: STATUS: REGISTERING
Feb  2 12:03:31 snortstd rb_register[31958]: STATUS: REGISTERED -- UUID: 1226748192552511968
Feb  2 12:04:31 snortstd rb_register[31958]: STATUS: VERIFYING
Feb  2 12:05:32 snortstd rb_register[31958]: STATUS: VERIFYING
Feb  2 12:06:05 snortstd rb_disassociate_sensor: Deleting sensor
Feb  2 12:06:08 snortstd rb_register[32025]: Registering sensor  --  URL: https://10.0.150.73/api/v1/sensors
Feb  2 12:06:08 snortstd rb_register[32025]: STATUS: REGISTERING
Feb  2 12:06:09 snortstd rb_register[32025]: STATUS: REGISTERED -- UUID: 5031124327583811291

Para reclamar el nuevo sensor es necesario ingresar en redBorder Live con el usuario y contraseña obtenidos, acceder a la sección Sensors y seleccionar la opción +Claim sensor.

Introducir un nombre para ese sensor y el UUID para su localización en redBorder Live.

Al hacer clic en Save redBorder Live vincula de manera definitiva ese sensor con la cuenta actual. 

Sensor registrado en redborder Live

El usuario puede comprobar que el sensor ha recibido la confirmación del registro mediante los logs del sistema:

[root@snortstd-centos6 ~]# tail -f /var/log/messages 
Feb  2 16:43:51 snortstd rb_register[32025]: STATUS: VERIFYING
Feb  2 16:44:51 snortstd rb_register[32025]: STATUS: VERIFYING
Feb  2 16:45:51 snortstd rb_register[32025]: STATUS: CLAIMED
Feb  2 16:45:51 snortstd rb_register[32025]: Saved certificate in: /opt/rb/etc/chef/client.pem
Feb  2 16:45:53 snortstd snort[31590]: *** Caught Term-Signal
Feb  2 16:45:53 snortstd kernel: device eth0 left promiscuous mode
Feb  2 16:45:53 snortstd snort[31590]: ===============================================================================
Feb  2 16:45:53 snortstd snort[31590]: Run time for packet processing was 22705.930140 seconds
Feb  2 16:45:53 snortstd snort[31590]: snort processed 117312 packets.

El servicio rb_register pasa del estado VERIFYING al estado CLAIMED y almacena el certificado con el que autorizará las comunicaciones con redBorder Live.

En la plataforma web de redBorder Live el usuario puede observar en la sección Sensors un círculo verde junto al campo Last Checked: esto significa que ha sido registrado de manera correcta.

Asimismo, este campo informa del tiempo transcurrido desde que se realizó el último chequeo del sensor.

A partir de este momento se puede configurar el sensor de tipo Snort y realizar la asignación de políticas.

Configuración necesaria del sistema

Para editar la configuración del sensor es necesario hacer clic en el icono de Configuración situado en el margen derecho. Seleccionar la Edit entre las opciones incluidas en el submenú.

A continuación, el usuario accede a la pantalla en la que puede modificar los parámetros generales del sensor Snort.

El sistema ofrece una serie de valores por defecto que son los adecuados para la instalación descrita en esta guía, por lo que no es necesario que el usuario realice modificación alguna.

En el caso de que la instalación se realice para un entorno diferente, se deberán introducir los valores correspondientes en los campos que el usuario estime necesario.

El siguiente paso consiste en aplicar una política de reglas. Para ello, regresaremos a la interfaz Sensors y en el submenú desplegado por el icono de edición seleccionaremos la opción Signature Policies.

Seleccionar la política que se desea aplicar haciendo clic en el icono Assign. Por último, para aplicar dicha política al sensor pulsar la opción Apply Conf que se encuentra en el margen superior derecho de la pantalla. La política asignada al sensor quedará sombreada en verde.

 

 

Have more questions? Submit a request

Comments

Powered by Zendesk