Comandos para Seguridad en los Router Cisco
Comandos para Seguridad en los Router Cisco

Comandos para Seguridad en los Router Cisco

Por seguridad, al igual que en cualquier sistema informático, la seguridad dicta deshabilitar todo lo que no se usa para evitar que sea utilizado por alguien con malas intenciones. Por lo tanto, en un router, se trata de deshabilitar los servicios innecesarios (muchos están activados por defecto) y las interfaces que no se utilizan.

Cisco AutoSecure (CLI)

La funcionalidad Cisco AutoSecure permite auditar la configuración de un router para detectar posibles vulnerabilidades de seguridad; hay 2 modos:

  • el modo interactivo que solicita información y hace propuestas que el administrador aprueba o no
  • el modo no interactivo que aplica automáticamente las mejores prácticas (no se recomienda)

En las versiones recientes de IOS (a partir de la 12.3(8)T), existe una función de restauración que permite volver a la configuración del router ANTES de ejecutar AutoSecure: se guarda una versión de copia de seguridad de la configuración en el flash, para restaurarla hay que ingresar (Nota: esta no es una funcionalidad relacionada con AutoSecure):

configure replace flash:pre_autosec.cfg

Uso del comando:

auto secure [management | forwarding] [no-interact | full] [ntp | login | ssh | firewall | tcp-intercept]

⇒ afecta solo al plano de gestión/reenvío; en modo interactivo (por defecto) o no; especifica la configuración de ntp/login/ssh/firewall o tcp-intercept.

Security Audit (SDM)

Esta es una función accesible a través de SDM que compara la configuración actual del router con una base de mejores prácticas. Hay dos posibilidades:

  • security audit: la configuración se revisa y cada punto negativo se muestra; luego se puede “corregir” el punto negativo (“¡arréglalo!”) o no hacer nada.
  • one-step lockdown: analizar y aplicar los parámetros recomendados sin interacción con el usuario.

Configuración

Política de seguridad

  • Imponer contraseñas de al menos 10 caracteres (se puede ir de 0 a 16):
security passwords min-length 10
  • Cifrar las contraseñas almacenadas en la configuración:
service password-encryption

Ya no aparecen en texto claro en la configuración:

password 7 051F091B2E
  • El 7 indica que se utilizó el algoritmo propietario de Cisco (en realidad poco confiable)
  • 5 indica un hash MD5 (este es el caso de la contraseña enable secret; más seguro (más información: detalles sobre los hashes de las contraseñas IOS))
  • usar la palabra clave “secret” en lugar de “password” para hashear la contraseña en MD5 en la configuración, por ejemplo:
enable secret toto
[..]
username toto secret toto

Esta mejor práctica no entra en conflicto con la anterior porque hay algunas contraseñas que no se pueden hashear en MD5: las contraseñas de acceso a las líneas (con, aux, vty, …)

  • Deshabilitar el acceso a ROMMON (desactivar la recuperación de contraseña en Cisco) a través de la consola (no se recomienda en absoluto, ya que esto desactiva el procedimiento de recuperación de contraseña: ¡y todo el mundo la pierde en algún momento!):
no service password-recovery

Para imponer un tiempo de espera (aquí de 10 segundos) entre cada intento de inicio de sesión:

login delay 10

De forma predeterminada, los routers Cisco permiten 10 intentos de inicio de sesión fallidos antes de iniciar un retraso de 15 segundos para el siguiente intento. Para modificar el umbral de intentos fallidos (y generar un mensaje en el syslog) a 5:

security authentication failure rate 5 log

Para evitar los ataques de fuerza bruta, se pueden bloquear los intentos de inicio de sesión después de un cierto umbral de fallos por segundo: por ejemplo, para bloquear los inicios de sesión durante 100 segundos si se superan 3 fallos de inicio de sesión en 10 segundos:

login block-for 100 attemps 3 within 10

Se puede definir una ACL cuyos IPs que coincidan no desencadenarán el bloqueo de los inicios de sesión, y que, incluso una vez que el router esté bloqueado, podrán iniciar sesión en él. En resumen, esto permite anular el comando block-for:

login quiet-mode access-class MYACL

Se pueden registrar/enviar una trap con el resultado de los intentos de inicio de sesión, e incluso determinar un umbral:

login on-success log [every 10]
login on-failure trap

definir un tiempo de espera de inactividad: exec-timeout minutes [seconds] en modo (config-line); para definir un tiempo de espera infinito, se especifica 0 (¡no se recomienda, ya que esto bloquea la línea si el usuario no se desconecta correctamente y también por seguridad (no bloqueado)):

exec-timeout 0

Los privilegios

Hay 16 niveles de privilegios:

  • el 0 que es el “modo de usuario”
  • el 15 que es el “modo enable” o modo privilegiado
  • los niveles intermedios, del 1 al 14, que se pueden configurar

Para configurar un modo de privilegio, se debe asignarle una contraseña y derechos: privilege mode {level level command | reset command}; por ejemplo, para el modo privilegiado n°2, se da la contraseña “toto”; este modo solo tendrá el derecho de ejecutar el comando ping:

privilege exec level 2 ping
enable secret level 2 toto

Para acceder a este modo, un usuario debe iniciar sesión en modo usuario (normal) y luego escribir enable 2. Para ver los privilegios del modo actual, se utiliza:

show privilege
 Current privilege level is 2

Las vistas

Las vistas permiten ampliar las posibilidades de los privilegios (y suplir sus limitaciones). Para crear una vista, que permite limitar los comandos vistos por un usuario, hay que crear un nuevo modelo aaa y activar la vista raíz (es la contraseña enable; si no existe, hay que crearla):

conf t
 aaa new-model
enable view

Luego creamos la vista primera_vista, le asignamos una contraseña y le otorgamos derechos sobre los comandos (en modo (config)#):

parser view premiere_vue
 secret mon_mdp
 commands exec include show version
! 
parser view seconde_vue
 secret second_mdp
 commands exec include show ip interface brief

Se pueden crear supervistas que agreguen los derechos de varias vistas; para ello, se agrega la palabra clave superview al crear la vista:

parser view super_vue superview
 secret superview_mdp
 view premiere_vue
 view seconde_vue

No se pueden agregar comandos a una superview, solo puede tener los derechos de una vista existente.

Característica de configuración resistente

Funcionalidad de IOS que permite conservar una versión “segura” de la imagen IOS y/o de la running-config para contrarrestar el compromiso del router. La facilidad para restaurar la versión segura permite reducir el tiempo de inactividad.

Activar la resistencia de la imagen IOS y la configuración:

secure boot-image
secure boot-config

Para restaurar IOS: arrancar en rommon y luego cargar IOS:

rommon 1 >boot disk0:c3825-advipservicesk9-mz.124-21.bin

Para restaurar la configuración:

secure boot-config restore slot0:rescue
copy slot0:rescue running-config

Verificaciones:

show secure bootset

Gestión

Syslog / trap

Configurar un syslog externo:

logging <IP_du_serveur_syslog>

Configurar la prioridad (de 0 a 7, es decir, de emergencias a depuración) de las trap:

logging trap <level>

Configurar la instalación (servicio) (valores de local0 a local7):

logging facility <facility-type>

Nota: significado de los valores del syslog (prioridad y servicio)

Los mensajes de registro tienen el siguiente formato:

May 16 19:51:00: %SYS-5-CONFIG_I: Configured from console by resadm on vty0 (10.0.0.100)

… con 3 campos distintos, separados por una coma:

  • May 16 19:51:00 la marca de tiempo
  • %SYS-5-CONFIG_I indica el nivel de seguridad de 0 a 7 (aquí 5 ⇒ “Notificación”) seguido del nombre del mensaje de registro (aquí un mensaje sobre la configuración del router)
  • el resto: el texto del mensaje

Si los recuperas en un syslog, están precedidos (dependiendo del syslogd utilizado) de la marca de tiempo de recepción del servidor syslog y de la IP de origen/nombre de host del paquete recibido.

Otros comandos útiles:

  • activar el registro: logging on (validar el interés de este comando)
  • para especificar la interfaz de origen de los paquetes syslog enviados: logging source-interface <interface>
  • para agregar una marca de tiempo en los mensajes de registro: service timestamps log datetime msec

Los equipos deben tener la hora sincronizada para poder aprovechar los registros ⇒ NTP.

NTP

Para sincronizar el reloj de todas las máquinas, se recomienda utilizar NTP (Network Time Protocol), que es un protocolo de sincronización de relojes que funciona sobre udp/123. El término estrato se refiere al número de saltos para alcanzar una autoridad de tiempo (por ejemplo, un reloj atómico).

Se pueden definir diferentes tipos de roles:

  • cliente: se sincroniza con una autoridad de tiempo = el router emite solicitudes para sincronizarse con un servidor
  • servidor: autoridad de tiempo; sincroniza a los clientes que le solicitan la hora
  • par: las solicitudes NTP van en ambas direcciones; cada uno puede ser cliente o servidor

Cliente ntp

Configuración típica: declarar un servidor/par NTP con el que el router se sincronizará:

ntp {server | peer} 10.0.0.111

Se pueden definir varios, así como un orden de preferencia:

ntp server 10.0.0.111
ntp server 192.168.0.1 prefer

Para implementar autenticación:

ntp authenticate
ntp authenticate-key 1 md5 <mdp_secret>
ntp trust-key 1

ntp server 10.0.0.111 key 1

Para escuchar (y sincronizarse) los broadcasts NTP recibidos en una interfaz:

interface fa0/0
 ntp broadcast client

Uso de una ACL de filtrado:

ntp access-group {query-only | serve-only | serve | peer} <ACL-number>

Las máquinas que coincidan con la ACL tendrán el derecho indicado.

Servidor ntp

Nota: parece que los routers actúan por defecto como servidores NTP.

Para hacer que un router sea un servidor ntp autoritativo:

ntp master [stratum]

stratum indica la precisión supuesta (de 1 a 15): cuanto menor es el valor, más fiable se considerará el servidor por los clientes NTP (los estratos 1 están directamente conectados a un reloj atómico)

Para emitir broadcasts NTP en una interfaz (en config-if):

interface fa0/0
 ntp broadcast

SNMP

Para monitorear/interrogar los routers, el protocolo SNMP es perfecto, salvo que no es seguro (hasta la versión 2) y transmite sus datos en texto claro por la red.

Se recomienda utilizar SNMPv3 (por sus funciones de autenticación y cifrado), o en su defecto, deshabilitar el acceso RW (lectura/escritura) y configurar un nombre de comunidad (~ una especie de contraseña) para el acceso RO (solo lectura).

Procedimiento de configuración de SNMPv3:

  • configurar el ID local del router; es opcional especificar la IP, el ID y el número de puerto (por defecto 161) de un equipo remoto.
  • configurar los nombres de los grupos
  • configurar los usuarios
  • configurar las máquinas

Ejemplo:

snmp-server engineID local 0123456789
snmp-server engineID remote 10.0.0.100 00000063000100a1c0b4011b
 
snmp-server group authgroup v3 auth
snmp-server group authgroup v3 priv
 
snmp-server user authuser authgroup v3 auth md5 mypassword priv des56 encryptedpasswd
snmp-server user authuser authgroup v3 auth md5 mypassword
 
snmp-server host 10.0.0.111 traps version 3 priv authuser
 
snmp-server enable traps cpu
snmp-server enable traps config
snmp-server inform retries 0
snmp-server source-interface traps loopback 0

Enlaces: Guía Cisco

AAA

Authentication, Authorization and Accounting es un mecanismo de seguridad que permite autenticar a una persona, asignarle derechos y auditar sus acciones. Esto permite controlar el acceso a la red.

Hay 3 tipos de configuraciones posibles:

  • AAA autónomo: se trata de un servidor incluido en el IOS (autenticación local)
  • Cisco Secure ACS Server for Windows Server: un software instalado en un servidor para crear un servidor AAA externo
  • Cisco Secure ACS Solution Engine: un equipo dedicado

2 modos de acceso al router:

  • modo de caracteres para las “líneas” (vty, con) ⇒ se definen los derechos exec
  • modo de paquetes para las interfaces (async, serial) ⇒ se definen los derechos de red

RADIUS

RADIUS, junto con TACACS+, es uno de los 2 protocolos AAA más conocidos; está normalizado por la IETF (RFC 2865) y utiliza datagramas udp/1812 y 1813 (el servidor Cisco Secure ACS usa udp/1645 y 1646). A cada cuenta se le asocian cero o más pares AV (Attribute-Value) que definen sus derechos. Hay unas 50 pares AV predefinidas, pero RADIUS permite extensiones propietarias.

RADIUS permite:

  • el cifrado de la contraseña (solo) en MD5
  • la autenticación de paquetes mediante hash MD5

Implementación:

aaa new-model
radius-server host 10.0.0.111
radius-server key <secretkey>

TACACS+

TACACS+ se parece a RADIUS, salvo que es propietario de Cisco y utiliza tcp/49. También asocia cero o más AV a cada cuenta. Se puede usar para identificar a un usuario y aplicar un perfil de red (sus VLAN/ACL/dirección IP/derechos personales).

TACACS+ permite:

  • cifrar todo el contenido de las transacciones

Implementación:

aaa new-model
tacacs-server host 10.0.0.111
tacacs-server key <secretkey>

aaa authentication

Crear un método de autenticación predeterminado:

aaa authentication login default group tacacs+ local

Utilizará primero el servidor TACACS+; si este no responde, intentará en la base local. Si devuelve un error de autenticación, el router no buscará en la base local. Se pueden enumerar hasta 4 métodos entre estos: enable, group, krb5, line, local, local-case, none.

Para crear un grupo, aplicable a una o más interfaces, se reemplaza “default” por un nombre:

aaa authentication login mi_lista group tacacs+ local

Luego se aplica a una o varias interfaces:

line vty 0 4
 login authentication mi_lista

aaa authorization

Para definir los derechos asociados a una cuenta.

aaa authorization exec default group radius local none

aaa accounting

La contabilización permite auditar y registrar las actividades de una cuenta de usuario.

aaa accouting exec default start-stop group tacacs+

Este comando registra el inicio y fin de cada proceso iniciado por cualquier perfil (predeterminado) del grupo tacacs+.

Verificaciones

debug aaa authentication
debug aaa authorization
debug aaa accounting

Verificaciones

show login [failure]

Para asegurar un router Cisco, es fundamental deshabilitar los servicios y funciones innecesarios, configurar políticas de seguridad robustas (contraseñas, autenticación, autorización), implementar mecanismos de gestión y monitoreo como Syslog, NTP y SNMP, y aprovechar las características de seguridad integradas como AutoSecure y la configuración resiliente.

Siguiendo estas recomendaciones, se puede fortalecer significativamente la postura de seguridad del router Cisco y reducir los riesgos de compromiso. Si tienes algún aporta, por favor déjalo a través de los comentarios.