24 de marzo de 2006

10 pasos para segurizar un dispositivo Cisco IOS

.1. Desactive aquellos servicios o protocolos que son innecesarios.
Por defecto los dispositivos Cisco activan diversos servicios que son opcionales. Estos servicios son potenciales puntos de ataques de seguridad ya que permitien acceder a información del dispositivo.
Si no son utilizados, estos servicios pueden ser fácilmente desactivados:

Protocolo CDP:
Router(config)#no cdp run

Configuración remota:
Router(config)#no service config

Servicio finger:
Router(config)#no service finger

Servicio web:
Router(config)#no ip http server

Protocolo SNMP:
Router(config)#no snmp-server

Protocolo BOOTP:
Router(config)#no ip bootp server

Servicios TCP:
Router(config)#no service tcp-small-servers

Servicios UDP:
Router(config)#no service udp-small-servers


.2. Deshabilite las interfaces que no están en uso.
Las interfaces que no se utilizan deben estar administrativamente deshabilitadas utilizando el comando shutdown. En los routers Cisco este es el estado por defecto; por el contrario, en los switches Catalyst todos los puertos están habilitados por defecto.
En las interfaces en uso, si no son necesarios, conviene desactivar los siguientes servicios:

Router(config-if)#no ip proxy-arp
Router(config-if)#no ip directed-broadcast
Router(config-if)#no ip mask-reply

.3. Mantenga control del tráfico que atraviesa el router.
Básicamente se debiera bloquear todo tráfico innecesario. Sin embargo, muchas veces es difícil determinar el tráfico necesario.
Pero hay tráfico que ciertamente no debiera ingresar o circular. Por ejemplo, cuando la red tiene un router a través del cual se conecta a Internet; este dispositivo no debiera recibir desde Internet tráfico que se origine en una dirección IP privada. Para esto, se puede implementar la siguiente lista de acceso, suponiendo que la interfaz a través de la cual el router se conecta a Internet es la interfaz serial 0/0:

Router(config)#access-list 101 deny ip 10.0.0.0 0.255.255.255 any log
Router(config)#access-list 101 deny ip 172.16.0.0 0.15.255.255 any log
Router(config)#access-list 101 deny ip 192.168.0.0 0.0.255.255 any log
Router(config)#interface serial 0/0
Router(config-if)#description acceso a Internet
Router(config-if)#ip access-group 101 in

.4. Mantenga los archivos log y utilice una fuente de hora confiable.
Para mantener un control del tráfico que es bloqueado por las listas de acceso, es conveniente utilizar los archivos log. Estos archivos también pueden mantener registro de los cambios de configuración y errores.
Para mantener estos archivos almacenados en el dispositivo, el procedimiento es el siguiente:

Router(config)#logging on
Router(config)#logging buffered 16384

De este modo se reserva un espacio de 16 MB en la memoria RAM del dispositivo.
El problema de guardar estos archivos en el router es que en caso de un reinicio del dispositivo se pierden estos archivos. Por eso conviene almacenarlos en un servidor que puede incluso ser un servidor común a todos los dispositivos de la red.
El comando para identificar este servidor es:

Router(config)#logging [ip]

Un elemento muy importante de información en los archivos log, es la marca horaria de los sucesos.
Esta marca horaria puede tomarse a partir del reloj interno del dispositivo. Sin embargo, si hay varios dispositivos es muy importante que todos tomen su marca horaria de un único servidor para poder hacer las comparaciones que puedan ser necesarias. Para activar este servicio utilice el siguiente comando:

Router(config)#service timestamps log datetime msec
Router(config)#ntp server server.ntp.address

.5. Implemente claves de acceso y clave de acceso al modo privilegiado.
Asegúrese de aplicar claves de acceso a cada uno de los puertos.

Router(config)#line console 0
Router(config-line)#login
Router(config-line)#password [clave]
Router(config-line)#exec-timeout 0 0

Router(config)#line aux 0
Router(config-line)#login
Router(config-line)#password [clave]
Router(config-line)#exec-timeout 0 0

Router(config)#line vty 0 4
Router(config-line)#login
Router(config-line)#password [clave]


Para bloquear el acceso al modo privilegiado utilice siempre la enable secret que se encripta utilizando MD5.

Router(config)#enable secret [clave]

.6. Use claves complejas (robustas) y encripte las claves en texto plano.
Asegúrese de utilizar claves largas y con caracteres alfanuméricos, lo que reduce la posibilidad de que sean violadas por un ataque de fuerza bruta. Este comando Cisco IOS le permite asegurar una longitud de caracteres mínima para cada clave:

Router(config)#security password min-length 6

Asegúrese de que todas las claves estén encriptadas, al menos con un algoritmo de encripción básico:

Router(config)#service password encryption

Se pueden prevenir intentos de acceso por fuerza bruta estableciendo parámetros de tiempo para el ingreso de claves en el dispositivo. En este ejemplo se define que el acceso se bloquee por 180 segundos cuando se realizan 3 intentos fallidos en un intervalo de 30 segundos.

Router(config)#login block-for 180 attempts 3 within 30

.7. Controle quiénes pueden acceder remotamente al router.
Es conveniente limitar las posibilidades de acceso remoto a la administración de los dispositivos.

Una posibilidad es limitar las direcciones IP y protocolos que se utilizan para acceder a las terminales virtuales. Por ejemplo, para permitir el acceso exclusivamente desde la red local:

Router(config)#access-list 10 permit 192.168.2.0 0.0.0.255
Router(config)#line vty 0 4
Router(config-line)#access-class 10 in

.8. Utilice SSH para el acceso remoto.
No es recomendable el uso de telnet o http para la administración de los dispositivos, dado los riesgos de seguridad que esto entraña.

Es altamente recomendable utilizar SSH (Secure Shell) para la administración remota de los dispositivos ya que SSH viaja encriptado. Para habilitar SSH en un dispositivo siga los siguientes pasos:

Router(config)#hostname [nombre]
Router(config)#ip domain-name [nombre]
Router(config)#crypto key generate rsa
Router(config)#ip ssh timeout 60
Router(config)#line vty 0 4

Router(config-line)#transport input ssh

Nota: Antes de intentar esta implementación, verifique que su versión y package de Cisco IOS soportan SSH.

.9. Segurice los protocolos de enrutamiento y otros servicios opcionales.
A fin de evitar ataques que signifiquen modificaciones no autorizadas de las tablas de enrutamiento es recomendable utilizar protocolos que soporten una autenticación con claves encriptadas.

Por ejemplo, se puede configurar OSPF para que utilice claves encriptadas:

Router(config-if)#ip ospf message-digest key [1-255] md5 [1-7] [clave]
Router(config)#router ospf 1
Router(config-router)#area 0 authentication message-digest

.10. Prevenga los ataques de denegación de servicio.
Un modo simple de prevenir ataques DoS comunes, es limitar el ancho de banda utilizado por los paquetes ICMP. El protocolo ICMP suele ser utilizado para inundar la red causando una denegación de servicio.

Para prevenir este tipo de ataque se pueden utilizar los comandos que se indican a continuación en cada interfaz, de modo de limitar el ancho de banda que será ocupado por el protocolo.
En este caso, limitaré a 20 Kbps la disponibilidad para tráfico de ping en la interfaz serial 0/0 que tiene un ancho de banda total de 64 Kbps. Esto en la realidad depende en cada caso del ancho de banda de cada enlace y la proporción de ese ancho de banda que se desea asignar como máximo a estos protocolos.

Router(config)#access-list 101 permit icmp any any echo-reply
Router(config)#access-list 101 permit icmp any any echo
Router(config)#interface serial 0/0
Router(config-if)#rate-limit input access-group 101 20000 8000 8000 conform-action transmit exceed-action drop

Tenga en cuenta que la prevención de ataques de DoS es una tarea más compleja que debe enmarcarse en el contexto de políticas e implementaciones de seguridad. Este es solamente un tip para lograr una prevención básica.

Oscar Gerometta

21 comentarios:

  1. Muy interesante el artículo, me lo guardo.

    Lo que me queda la duda es cómo saber si la versión de IOS de mis routers admiten SSH, que es, junto con el SNMP, el agujero de seguridad que tenemos en la gestión de los mismos. Asimismo, ¿cómo podría saber qué versión necesitaría para conseguir soporte SSH de mis routers?

    Gracias y enhorabuena.

    ResponderEliminar
  2. Cisco IOS incorpora Secure Shell SSH a partir de IOS 12.2(15)JK4, pero no en todos los packages ni para todas las plataformas.
    Para verificar los features de una versión concreta de IOS, sugiero visitar el Cisco IOS Software Selector: http://tools.cisco.com/ITDIT/ISTMAIN/servlet/index

    ResponderEliminar
  3. Excelente articulo, lo felicito hay cosas que aunque parezcan obvias siempre se escapan, muchas gracias por su aporte al conocimiento.

    ResponderEliminar
  4. buen articulo las dudas que tenia se me despejaron con esta nota gracias

    ResponderEliminar
  5. Realmente es de muchísima ayuda, se agradece infinitamente!.

    Saludos desde Potosi-Bolivia

    ResponderEliminar
  6. Tengo un Catalyst 3750 conectado al ISP por medio de fibra optica, en ese enlace me envían 2 servicios diferentes de internet, cada uno en una Vlan, como se puede aplicar estas reglas de seguridad básica en cada Vlan?

    ResponderEliminar
  7. En términos generales las reglas descriptas en este post se aplican a la configuración global y al management del equipo, por lo que no requieren ninguna adaptación.
    En el caso particular de las ACL que se aplican a los puertos de conexión hacia el provider, en ese caso se pueden aplicar a las VLANs correspondientes.

    ResponderEliminar
  8. el ios Version 12.2(25)SEE3 de un 3750 IPSERVICES-M soporta ssh??
    es que en realidad no he podido encontrar respuesta a esta pregunta. Si me pueden ayudar se los agradeceria.

    Gracias

    ResponderEliminar
  9. Sugiero que utilices el Feature Navigator, que es una herramienta en línea de Cisco para este tipo de tareas.
    Lo podés localizar aquí: http://tools.cisco.com/ITDIT/CFN/

    ResponderEliminar
  10. Gracias por este articulo, bastante util y aclaratorio.

    ResponderEliminar
  11. hola, tengo 2 tipos de usuarios por DHCP, de la IP 1 a la 20 pueden llegar a todas mis redes internas, de la 20 a 254 solo salen a internet,como puedo bloquear en un router cisco para evitar que usuarios se coloquen una IP (de la 1 a la 20)directamente en su pc y puedan ver toda mi red,

    ResponderEliminar
  12. El punto a segurizar en este caso no es el router, o algún punto de la infraestructura, sino los equipos terminales.
    Si limitas los permisos del usuario en las terminales, no podrán cambiar la dirección IP asignada.

    ResponderEliminar
  13. Muy Buen articulo como todos los demas:::: Felicidades!!

    ResponderEliminar
  14. Existe una fórmula para sacar los valores del rate-limit?

    ResponderEliminar
    Respuestas
    1. Un rate-limit es una política de tráfico. Eso significa que es una decisión de administración o comercial.

      Eliminar
  15. Muy bueno ! Gracias, apesar de ser del 2006 todo sigue siendo muy importante para aumentar la seguridad!

    ResponderEliminar
  16. Te felicito Tio! gracias por la informacion

    ResponderEliminar
  17. Oscar buen dia, tengo duda con la activación del SSH.
    En este comando ( ip domain-name [nombre] ) entiendo que requiere un nombre de dominio y mi pregunta es la siguiente, el nombre que tenemos que colocar debe ser igual al dominio de nuestra empresa o puede otro nombre distinto y si debe ser igual para los demás switches?

    ResponderEliminar
    Respuestas
    1. En la configuración de SSH el nombre de dominio se utiliza como parte del cálculo de la clave de cifrado que luego utilizará el algoritmo que crea la llave RSA.
      Por lo tanto, puedes utilizar cualquier nombre, no necesariamente es necesario un dominio público. Aunque antes debes tener presente si el nombre de dominio se utiliza con algún otro fin, como ser DNS.

      Eliminar

Gracias por tu comentario.
En este blog los comentarios están moderados, por lo que su publicación está pendiente hasta la revisión del mismo.