Las ideas no duran mucho, hay que hacer algo con ellas

juliorestrepo.wordpress.com desde el año 2008

Configuracion de un Agente SNMP en Linux y Windows (Método Julio Restrepo)

Aunque sobre TCP/UDP corren miles de protocolos, el protocolo de mi predilección es SNMP.

SNMP los siguientes componentes:

  • Servicio de Red: Más conocido como Agente SNMP. En el caso de SNMP, es un puerto UDP (el 161) que permanece a la escucha de instrucciones provenientes de la red de datos.
  • Cliente: Aplicación mediante la cual le hacemos preguntas al servicio SNMP de una máquina remota. Ejm: los programas snmpget, snmpwalk, snmpnetstat y otros… que en general pertenecen al grupo de aplicaciones NETSNMP
  • Traps: Entiéndase como la capacidad del agente SNMP para enviar alertas proactivas a los clientes cuando ocurre algún evento. Ejm: Daño en una fuente de poder de un servidor, Daño de un disco duro, Desconexión de un puerto en un switch, etc…

Algunas consideraciones de seguridad al implementar SNMP.

SNMP cuenta con 3 versiones: v1, v2 y v3.

Se recomienda usar v3 siempre que sea posible por las ventajas a nivel de seguridad. Sin embargo, al día de hoy (27 de Junio de 2012) yo aun empleo la versión 2 de SNMP debido a que carezco del conocimiento sobre como configurar el servicio SNMP en versión 3 (la verdad: no he investigado como hacerlo)

Por lo tanto este artículo estará basado en SNMP v2.

El control de acceso en SNMP v2 se realiza mediante Nombres de Comunidad y Direcciones IP.

Esto significa que si, por ejemplo, tu deseas conocer la cantidad de memoria RAM usada por un servidor a través de SNMP v2 podrás hacerlo si cumples con 2 requisitos:

  • Conocer el nombre de al menos una comunidad SNMP a la cual pertenezca el servidor. Los nombres de comunidad más comunes son PUBLIC y PRIVATE. Por seguridad debes EVITAR usarlos si eres el administrador de la red, y debes PROCURAR usarlos si eres un atacante que intenta obtener información de algún dispositivo. De igual forma, SNMP es sensible a ataques tipo diccionario, por lo que también debes evitar usar palabras simples y optar por combinaciones de números, letras y caracteres especiales para lograr un nombre de comunidad seguro.
  • Hacer parte del privilegiado segmento de direcciones IP que tienen permitido hacer consultas al agente. Esta opción en generalmente descuidada por los administradores de red, dejando expuestos sus equipos para que respondan automáticamente a cualquier cliente que esté interesado en obtener información. GRAVE ERROR, ya que un simple snmpnetstat bastará para que un atacante obtenga un reporte de las conexiones TCP/UDP establecidas en tu servidor, lo cual le dará una idea de los servicios de red que corren en tu servidor y la concurrencia (número de usuarios) que están conectados a determinado servicio de red de tu servidor.

SNMP v2 tiene otros riesgos de seguridad, como por ejemplo, el hecho de viajar desencriptado. Esto significa que un atacante podría capturar tu tráfico mediante un sniffer, obteniendo una muestra de tus paquetes de datos y extrayendo de ellos el nombre de comunidad, las direcciones IP del servidor y del agente, el OID consultado, etc…

En el caso de SNMP v3 (para quienes quieran investigar) estos problemas de seguridad quedan resueltas con la implementación de encripción y de autenticación. Si tu prioridad es la seguridad, es importante entonces que leas sobre SNMP v3.

Configurar el agente SNMP en Versión 2 en Servidores Linux en solo 5 pasos.

Paso # 1:  Matricular el nombre de nuestra comunidad SNMP en un Esquema de Seguridad.

El archivo de configuración por defecto es similar al siguiente:

####
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):

#       sec.name  source          community
com2sec paranoid  default         public
#com2sec readonly  default         public
#com2sec readwrite default         private

Debemos modificar los parámetros anteriores de acuerdo a nuestras necesidades.
En mi caso realizaré las siguientes modificaciones para permitir ÚNICAMENTE el acceso de solo lectura a la comunidad s3rv1d0r3s(_) desde la dirección IP 172.0.0.5 , inhabilitando cualquier otra posibilidad.

#       sec.name  source          community
#com2sec paranoid  default         public
#com2sec readonly  default         public
com2sec readonly  172.0.0.5         s3rv1d0r3s(_)
#com2sec readwrite default         private

Paso # 2: Matricular el Esquema de Seguridad escogido dentro de un Grupo.

Como observamos abajo, el esquema de seguridad readonly está configurado de modo tal que el agente permanece a la escucha en las versiones 1, 2 y USM de SNMP (ignoro que significa USM).

####
# Second, map the security names into group names:

#               sec.model  sec.name
group MyROSystem v1        paranoid
group MyROSystem v2c       paranoid
group MyROSystem usm       paranoid
group MyROGroup v1         readonly
group MyROGroup v2c        readonly
group MyROGroup usm        readonly
group MyRWGroup v1         readwrite
group MyRWGroup v2c        readwrite
group MyRWGroup usm        readwrite

Modificaremos el código anterior para permitir UNICAMENTE que el esquema de seguridad readonly acepte peticiones en la versión 2 de SNMP, inhabilitando cualquier otra posibilidad.

#               sec.model  sec.name
# group MyROSystem v1        paranoid
# group MyROSystem v2c       paranoid
#group MyROSystem usm       paranoid
# group MyROGroup v1         readonly
group MyROGroup v2c        readonly
#group MyROGroup usm        readonly
#group MyRWGroup v1         readwrite
# group MyRWGroup v2c        readwrite
# group MyRWGroup usm        readwrite

Paso 3: Modificar el nivel de penetración dentro del arbol de MIBs.

Cada item monitoreable en SNMP recibe el nombre de OID. Un conjunto de OIDs recibe el nombre de MIB. De una manera demasiado simplificada, podriamos decir que SNMP es un arbol, las MIBs son las ramas y los OIDs son las hojas. Ejm: La Rama de la Temperatura (compuesta por la temperatura de los procesadores, de los discos, etc), La Rama de Networking (compuesta por el Throughput de cada tarjeta de red, el número de paquetes enviados y recibidos, etc), La Rama de Storage (compuesta por el espacio usado en disco, el espacio disponible, etc)

El archivo de configuración por defecto está construido de la siguiente manera:

####
# Third, create a view for us to let the groups have rights to:

#           incl/excl subtree                          mask
view all    included  .1                               80
view system included  .1.3.6.1.2.1.1
#view system included  .iso.org.dod.internet.mgmt.mib-2.system

Modificaremos estos parámetros para incluir la interesante rama MIB2-SYSTEM ( .iso.org.dod.internet.mgmt.mib-2.system ) simplemente descomentando la última línea de la sección como se observa en la parte inferior:

#           incl/excl subtree                          mask
view all    included  .1                               80
view system included  .1.3.6.1.2.1.1
view system included  .iso.org.dod.internet.mgmt.mib-2.system

Paso 4: Asignaremos permisos a los grupos de seguridad:

Por defecto tenemos la siguiente configuración:

####
# Finally, grant the 2 groups access to the 1 view with different
# write permissions:

#                context sec.model sec.level match  read   write  notif
access MyROSystem “”     any       noauth    exact  system none   none
access MyROGroup “”      any       noauth    exact  all    none   none
access MyRWGroup “”      any       noauth    exact  all    all    none

Realizaremos las siguientes modificaciones para permitir al grupo MyROGroup acceso de solo lectura y notificaciones, inhabilitando cualquier otra posibilidad.

####
# Finally, grant the 2 groups access to the 1 view with different
# write permissions:

#                context sec.model sec.level match  read   write  notif
#access MyROSystem “”     any       noauth    exact  system none   none
access MyROGroup “”      any       noauth    exact  all    none   all
#access MyRWGroup “”      any       noauth    exact  all    all    none

Paso 5: Seleccionar un nombre de contacto y de ubicación para nuestro sistema.

El archivo de configuración nos ofrece las siguientes opciones:

# ———————————–

#####################
# System contact information
#

# It is also possible to set the sysContact and sysLocation system
# variables through the snmpd.conf file.  **PLEASE NOTE** that setting
# the value of these objects here makes these objects READ-ONLY
# (regardless of any access control settings).  Any attempt to set the
# value of an object whose value is given here will fail with an error
# status of notWritable.

syslocation Unknown
syscontact Root <root@localhost>

Modificaremos el syslocation y el syscontact a nuestro antojo.

syslocation DataCenter NASA
syscontact Bill Clinton <clinton@nasa.gov>

Luego de realizar los 5 pasos anteriores, reiniciaremos el servicio snmpd.

/etc/init.d/snmpd restart

Microsoft

El procedimiento para servidores Windows es similar. Sin embargo, las MIBS del agente SNMP nativo de Windows son reducidas y no permiten obtener mucha información, ya que el interés de Microsoft está en potenciar el uso de WMI (Windows Management Instrumentation) en vez del estandar internacional SNMP.

Para suplir esta carencia de MIBS en los sistemas operativos Windows, la empresa Informant Systems ha desarrollado un conjunto de MIBS complementarias a las suministradas por Microsoft.

Dicho conjunto de MIBS recibe el nombre de SNMP Informant y están disponibles de manera gratuita en el siguiente vínculo:

http://www.wtcs.org/informant/files/informant-std-16.zip

En las imágenes adjuntas a continuación se documenta la configuración que normalmente acostumbro implementar:

Luego de lo anterior aplicamos los cambios y reiniciamos el servicio SNMP (Clic Derecho – Reiniciar)

End

2 comentarios el “Configuracion de un Agente SNMP en Linux y Windows (Método Julio Restrepo)

  1. Anónimo
    marzo 26, 2015

    muchas gracias la verdad y de antemano me ahorraste mucho , no habia encontrado mejor info que la tuya , estoy tomando un curso de pentesting y mi clase de pentesting a routers viene el protocolo snmp , sinceramente me fue difil encontrar esta info , gracias me ahorraste una semana saludos

  2. Anónimo
    junio 8, 2016

    Hola que tal me parece interesante tu artículo pero podrás explicarme si hay forma en este protocolo de configurar usuario y contraseña.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Información

Esta entrada fue publicada en junio 27, 2012 por en Linux, Redes y etiquetada con , , , , , , , , , .
A %d blogueros les gusta esto: