Bastionando el IOS de Cisco... Sáltate mi Firewall.. Si puedes ;)



Gestión Nivel 1

Incluye los servicios, configuraciones y secuencias de datos relacionados con la creación y el examen de la configuración estática y la autenticación y autorización de los administradores.

    1. Reglas Locales de Autenticación, Autorización y Accounting (AAA


      1.  Servicio AAA


Se configurará el equipo para Autenticación AAA en modo LOCAL.

Es preciso habilitar las reglas AAA utilizando el comando new-model:


hostname(config)#aaa new-model

      1. Autenticación AAA para el Inicio de Sesión



Configurar el método de autenticación AAA para la autenticación en modo LOCAL del inicio de sesión:



hostname(config)#aaa authentication login defalt local



Configura la autenticación local para usar los usuarios creados en la base de datos local.

La lista de métodos por defecto se aplica automáticamente a todas las interfaces en aquellas que tienen una lista explícitamente definida. Una lista definida reemplaza a la lista predeterminada.


    1. Reglas de Acceso


      1. Requerir Usuario Local y Contraseña Cifrado


Verificar que al menos existe un usuario local y asegurar que todas las contraseñas de usuarios definidos localmente están protegidas por cifrado. 

La configuración del dispositivo por defecto no requiere autenticación fuerte de usuarios potenciales, que permitan el acceso sin restricciones a un atacante que pueda llegar al dispositivo. 

Se debe crear un usuario local con una contraseña cifrada y compleja (no fácil de adivinar).


! Sustituir "LOCAL PASSWORD" con el valor escogido.
! No utilizar "LOCAL PASSWORD"


hostname(config)#username { LOCAL_USERNAME } password { LOCAL_PASSWORD }


!Para versiones posteriores a 12.0(18)S, 12.1(8a)E, 12.2(8)T, utilizar:

hostname(config)#username { LOCAL_USERNAME } secret { LOCAL_PASSWORD }


Se generaran usuarios individuales en cada Elemento de Configuración, que serán gestionados desde dentro desde los propios equipos de seguridad asignados a ello, sin ser necesaria la comunicación con el cliente.

Dichos usuarios deben cumplir las siguientes indicaciones:

- ID única

- Control de acceso automático

- Desactivación de cuentas inactivas cada 90 días

- Cambio de contraseña cada 90 días

- Complejidad de contraseña de 7 caracteres

- Contiene caracteres alfanuméricos

- Histórico de 4 contraseñas

- Control de adición, eliminación y modificación de usuarios locales

- Control de reseteo de contraseña seguro

- Eliminar el acceso de un usuario cesante

- Limitar los intentos de acceso a 6 antes de bloqueo

- Duración del bloqueo de 30 minutos

- Timeout de sesión de 15 minutos


En el caso que nos ocupa deberá de llevarse acabo medidas compensatorias para cubrir las deficiencias de Cisco en estos ámbitos.

Se utilizará la herramienta Keepass para la generación de password y repositorio de histórico de contraseñas. 

El cambio de la password deberá realizarse cada 30 días.



      1.  Eliminación de usuarios genéricos.

No debe existir usuario genérico alguno. 

Todos los usuarios deben ser nominales.










      1. SSH para el Acceso Remoto a Dispositivos


SSH debe ser el único protocolo permitido para el acceso remoto al dispositivo. 

SSH utiliza criptografía de clave pública RSA para establecer una conexión segura entre un cliente y un servidor.

Debe ser utilizado para reemplazar a Telnet.


hostname(config)#ip ssh timeout [60]

hostname(config)#ip ssh authentication-retries [3]


      1. VTY Transporta SSH



Aplicar el transporte VTY SSH en todas las líneas de gestión:


hostname(config)#line {aux | console | tty | vty} {numero-linea} [numero-ultima-linea]

hostname(config-line)#transport input ssh


      1. Timeout de Inicio de Sesión


Esto evita que usuarios no autorizados utilicen indebidamente sesiones abandonadas. 

Debe configurarse el dispositivo de tiempo de espera (a 10 minutos) para desconectar sesiones después de un tiempo de inactividad determinado.


hostname(config)#line {aux | console | tty | vty} {numero-linea} [numero-linea-final]

hostname(config-line)#exec-timeout 10


      1. Puerto Auxiliar

Deberán desactivarse los puertos que no se utilizan y no son requeridos por cuestiones de negocio. 

Para llevar a cabo esta tarea:


hostname(config)# line aux 0


hostname(config-line)# no exec


hostname(config-line)# transport input none


      1. Control de Acceso SSH

Se debe configurar el control de acceso para restringir el acceso remoto a las personas autorizadas para administrar el dispositivo, evitando que los usuarios no autorizados accedan al sistema.

Para ello deberán deben configurarse las restricciones de administración para todas las líneas VTY de la siguiente manera:



hostname(config)#line {aux | console | tty | vty} {numero-linea} [numero-linea-final]


hostname(config-line)# access-class
numero_acl_vty ] in



      1. ACL VTY


Es preciso establecer las ACLs pertinentes para restringir el acceso al dispositivo. 

Es importante configurar las ACLs para las líneas VTY, restringiendo así las fuentes que un usuario puede utilizar del dispositivo. 

Para ello se indicaran los hosts específicos o la red/es autorizadas para realizar la conexión:


hostname(config)#access-list {numero_acl_vty} permit tcp {bloque_acl_vty_con_mascara} any


hostname(config)#access-list {numero_acl_vty} permit tcp host [ vty_acl_host ] any


hostname(config)#deny ip any any log



    1. Banners

Deben crearse banners que contengan la siguiente información:

-Consecuencias legales de la conexión y su mal uso.

-Notificación de que la conexión será completamente monitorizada.

      1. EXEC

El banner EXEC aparece antes de mostrar el símbolo del sistema, después de iniciar un proceso EXEC, normalmente después de mostrar el mensaje del día y los banners de acceso y después de que el usuario se conecte al dispositivo. 

Los banners de red son mensajes electrónicos que dan un aviso a los usuarios de sus derechos legales sobre las redes informáticas. 
Para configurarlo:

hostname(config)#banner {exec texto-mensaje}

      1. Inicio de Sesión (Login)

Para configurar el mensaje que se presenta cuando un usuario inicia sesión en el dispositivo:


hostname(config)#banner {login texto-mensaje}

      1. MOTD

El banner MOTD aparece cuando un usuario se conecta por primera vez al dispositivo, normalmente antes de mostrar el mensaje de inicio de sesión y el Exec.

Para configurar el mensaje del día que aparece cuando un usuario se conecta por primera vez al dispositivo:

hostname(config)#banner {motd texto-mensaje}

Contraseñas

      1. Activación de Secret

Activar una contraseña secreta utilizando un cifrado fuerte para proteger el acceso al modo privilegiado EXEC que se utiliza para configurar el dispositivo.

 Para activar esta opción:

! Debe sustituirse "ENABLE SECRET" con el valor escogido. No debe utilizarse "ENABLE SECRET"

hostname(config)#enable secret {ENABLE_SECRET}


      1. Servicio de Cifrado

Debe habilitarse este servicio para proteger las contraseñas de la configuración de los dispositivos:


hostname(config)#service password-encryption


    1. SNMP

      1. String de Comunidad SNMP Privado y Público


La configuración no debe contener strings de comunidad predeterminados. 

Se debería utilizar SNMPv3, que proporciona autenticación, autorización y privatización de los datos (CIFRADO). 

El siguiente comando deshabilita los strings predeterminados:


hostname(config)#no snmp-server community {private}

hostname(config)#no snmp-server community {public}


      1. Accesos de Escritura y Lectura



La primera recomendación es utilizar SNMPv3 ya que las versiones 1 y 2 utilizan strings en texto plano. 

Siempre que no sea imprescindible, los accesos de escritura y lectura SNMP deben deshabilitarse.

 Para realizarlo,


hostname(config)#no snmp-server


Para sólo deshabilitar los permisos de escritura,


hostname(config)#no snmp-server community {string_de_la_comunidad}


Para habilitar SNMPv3 correctamente no hay que olvidar utilizar el modelo AuthPriv que permite autenticar y cifrar toda la comunicación SNMP 
( aunque eso sí, hay que tener en cuenta el uso de CPU que esto conlleva )

snmp-server enable

snmp-server enable traps all

snmp-server group {nombre_de_grupo} v3 priv

snmp-server user {usuario}{groupname} v3 encrypted auth md5 {password} priv aes 128{Encr_Key}

snmp-server host {interface}{hostname} version 3 {usuario}


La versión de IOS estudiada investigada permite hasta AES 256 y otros cifrados potentes.

      1. SNMP y ACLs


Las ACLs deben configurarse para restringir el acceso, especificando que sólo es posible acceder des de unas estaciones de trabajo autorizadas en una zona de gestión fiable:



hostname(config)#access-list { numero_ACL_snmp }permit {snmp_access-list}

hostname(config)#access-list deny any log



Si no existe una ACL aplicada, ningún string de comunidad SNMP será aceptado. 

Para configurar las restricciones del acceso SNMP vía ACL:



hostname(config)#snmp-server community {string_comunidad{ro | rw} {numero_ACL_snmp}



      1. Control de Acceso


Se deben configurar los strings de lectura autorizados de la comunidad SNMP y restringir el acceso, a aquellos sistemas de gestión autorizados. 

La cadena de la comunidad debe ser distinta a todas las credenciales de cualquier otro dispositivo. 

Para ello puede utilizarse:


hostname(config)#snmp-server community {read_community_ string} {ro} {snmp_access-list_number}


  1. Control



El control comprende la supervisión (monitorización), las actualizaciones de la tabla de ruta, y en general el funcionamiento dinámico del router.

Servicios, configuraciones y secuencias de datos que dan soporte y documentan la operacionalidad, el control de tráfico y el estado dinámico del router. 

Ejemplos de estos servicios son: 

 -El registro de logs (por ejemplo, Syslog), 

-Los protocolos de enrutamiento, 

-Los protocolos de estado como el CDP y HSRP, 

-Los protocolos de topología de red como STP

-La seguridad de los protocolos de control de tráfico, como IKE


Protocolos de control de red como ICMP, NTP, ARP e IGMP dirigido o enviado por el propio router, también se incluyen en esta sección.

    1. Reloj del Sistema

En este punto debe realizarse lo siguiente:

  • Configurar el reloj de los dispositivos con la hora universal coordinada (UTC) de forma explícita:

hostname(config)#clock timezone UTC 0

  • Deshabilitar el reloj que incluye los ajustes para el horario de verano:

hostname(config)#no clock summer-time


    1. Reglas Globales de Servicio

      1. CDP


Debe deshabilitarse el CDP (Cisco Discovery Protocol), ya que permite la identificación de otros dispositivos del segmento LAN. Para deshabilitarlo de manera global:


hostname(config)#no cdp run


      1. Servicio Finger


Este servicio permite identificar qué usuarios están loggeados en el dispositivo. 

Puede exponer el sistema a ataques de denegación de servicio, DoS. Para deshabilitarlo:


Para versiones posteriores a 12.1 (5) y 12.1 (5) T:

hostname(config)#no ip finger

Para versiones anteriores a 12.1 (5) y 12.1 (5) T:

hostname(config)#no service finger


      1. Servidor IP BOOTP


Deben deshabilitarse servicios innecesarios como echo, discard, chargen, etc.

Para hacerlo se desactivará el servidor BOOTP:


hostname(config)#no ip bootp server


      1. Servicio de Identificación


Este protocolo identifica las sessions TCP de los usuarios. 

Esto puede proporcionar información de los usuarios a un atacante. 

Deberá deshabilitarse el servidor ident de la siguiente manera:



hostname(config)#no identd



      1. Servidor IP HTTP


Este servidor permite la gestión remota de los routers, al ser una version no segura de http debe deshabilitarse:


hostname(config)#no ip http server


      1. Configuración Remota del Inicio


El servicio de configuración permite que el dispositivo cargue automáticamente su configuración de arranque desde un dispositivo remoto (por ejemplo, un servidor TFTP). 

Los protocolos utilizados para transferir los archivos de configuración, tales como el protocolo trivial de transferencia de archivos (TFTP) y File Transfer Protocol (FTP), no son seguros. 

Debe desactivarse la carga automática de los archivos de configuración de forma remota desde un servidor de red, de la siguiente manera:


hostname(config)#no boot network

hostname(config)#no service config


      1. Servicios TCP keepalives-in y out


El servicio tcp keepalives-in, para conexiones entrantes, permite que el dispositivo detecte cuando el host remoto no funciona y ha caído la sesión. 

Éste debe ser habilitado para matar las sesiones en las que la parte remota ha muerto, procediendo con:

hostname(config)#service tcp-keepalives-in

El servicio tcp keepalives-out, para conexiones salientes, permite que el dispositivo detecte cuando el host remoto no funciona y ha caido la sesión. 

Éste debe ser habilitado para matar las sesiones en las que la parte remota ha muerto, procediendo con:


hostname(config)#service tcp-keepalives-out


      1. Servidores tcp-small y udp-small


Los servicios TCP small como echo, chargen y daytime, no suelen utilizarse y a menudo se utilizan por atacantes para lanzar ataques DoS (Denial of Service). 

Deben deshabilitarse como procede:


hostname(config)#no service tcp-small-servers


hostname(config)#no service udp-small-servers


      1. Servidor TFTP


Trivial File Transfer Protocol (TFTP) no es un servicio seguro. 

Permite a cualquiera, que pueda conectarse al dispositivo, transferir archivos, tales como listas de control de acceso, las configuraciones de los routers e imágenes del sistema. 

Para deshabilitarlo:

hostname(config)#no tftp-server

El cliente TFTP tobviamente ampoco es seguro, ya que transmite la información en texto plano, lo que la hace esnifable por un intruso que haya accedido a la red.


      1. Uso de servidor SCP para transporte de información.


Es posible implementar SCP para los trabajos de backup de configuraciones, versiones de IOS, etc. 

El servicio SCP va unido a SSH y AAA y debe estar configurado previamente, ya que usaremos el user / pass de usuario individual para conectarnos:


hostname(config)#ip scp server enable


    1. Registro de la Actividad (Logging)


      1. Ajustes Generales


El loging debe ser activado para poder permitir el control tanto del funcionamiento como la seguridad de los eventos relacionados.

Los registros son críticos para responder a los incidentes de seguridad. 

Para habilitarlo:


hostname(config)#logging on


El dispositivo puede copiar y almacenar los mensajes de registro en un buffer de memoria interna.

El buffer de datos está disponible sólo desde un exec del router o una sesión Exec habilitada

Esta forma de registro es útil para la depuración y el seguimiento de las conexiones al router. 

Para configurar el buffer, con un tamaño recomendado de 16000, procede:


hostname(config)#logging buffered tamaño_del_buffer


Para una mayor seguridad debe configurarse el nivel de registro en la consola del dispositivo de la siguiente manera:

hostname(config)#logging console critical


      1. Registros en el Servidor Syslog


Se deben designar uno o más servidores syslog por dirección IP, siguiendo:


hostname(config)#logging host servidor_syslog


Configurado simplemente, envía los logs por el 512 UDP, en texto plano, por lo que hay que envolverlo en SSL para que sea seguro ( obviamente el servidor syslog debe aceptar conexiones SSL/TLS ).


      1. Registro del Trap Severity Level


Esto determina la gravedad de los mensajes que genera el protocolo simple de administración de red (SNMP) trap y/o mensajes de syslog. 

Este valor debe ser fijado a “debugging” (7) o “informacional” (6), pero no inferior. 

Para establecerlo:

hostname(config)#logging trap informacional


      1. Timestamps


Las marcas de tiempo deben incluirse en los registros de depuración y en los de actividad. 

Para configurarlos, respectivamente, procede:


hostname(config)#service timestamps debug datetime { msec } { show-timezone 
}

hostname(config)#service timestamps log datetime { msec } { show-timezone }



    1. NTP (Network Time Protocol)


Network Time Protocol (NTP) permite a los dispositivos mantener la hora exacta cuando se sincroniza con un servidor horario de confianza y fiable.

La sincronización de la hora del sistema centralizado con una fuente confiable y en tiempo real permite la correlación fiable de los acontecimientos sobre la base de la secuencia real en que ocurrieron. 

Por esto debe designarse un servidor NTP primario, horario y de confianza, procediendo:


hostname(config)#ntp server {ntp_server_1}


  1. Gestión de tránsitos

Esta sección afecta a los servicios y ajustes relacionados con los datos que pasan a través del router. 

La configuración del router en este ámbito incluye listas de acceso a la interfaz, la funcionalidad (por ejemplo, CBAC), NAT e IPSec. 

Los ajustes del tráfico que afectan a servicios como la verificación del RPF unicast y CAR / QoS también quedan incluidos.


    1. Reglas de Enrutamiento

Todos los servicios/funcionalidades innecesarias deben deshabilitarse, de entre ellas:

  • Deshabilitar la el broadcast IP en cada interfaz para evitar ataques DoS.


hostname(config)#interface id-interfaz

hostname(config-if)#no ip directed-broadcast


  • Deshabilitar el enrutamiento de origen, funcionalidad IP mediante la cual los paquetes individuales pueden especificar rutas, para evitar ataques.

hostname(config)#no ip source-route


  • Deshabilitar el IP Proxy ARP en todas las interfaces.

hostname(config)#interface 
{nombre_interfaz}

hostname(config-if)#no ip proxy-arp


  • No deben definirse interfaces Tunnel.


hostname(config)#no interface tunnel {instance}


Servicios que deben estar habilitados:


  • RPF (Unicast Reverse-Path Forwarding) debe estar habilitado en todas las interfaces o externas o de alto riesgo:



hostname(config)#ip cef

hostname(config)#interface 
{nombre_interfaz}

hostname(config-if)#ip verify unicast reverse-path rx (versiones posteriores a 12.0(15)S)

hostname(config-if)#ip verify unicast reverse-path (versiones anteriores a 12.0(15)S)


  1. SEGURIDAD FISICA DE LOS SWITCHES


Esta sección afecta a la securización de acceso físico a los switches.

    1. Port Security y deshabilitación de puertos no usados.

Es recomendable configurar port security en los switches, identificando positivamente la IP del servidor contra el que conectan. 


El número de MAC admitidas y la acción a tomar tiene que ser compatible con la operación normal del equipo. 


En caso de ser necesario cambiar una NIC de un switch, es mandatorio hacer participar a los administradores del switch en cuestión para que se modifique la autenticación de la MAC.

Los puertos no usados deben estar deshabilitados siempre ( shutdown ).


    1. Seguridad por consola.


El puerto de consola está habilitado para realizar gestión OOB ( out of band management ), por lo que es necesario securizarlo convenientemente usando contraseñas seguras cifradas y logeando los accesos convenientemente.

  1. Actualizaciones de sistema

La normativas actuales obliga a tener el equipamiento acorde a las últimas actualizaciones disponibles por el proveedor, por lo que regularmente se realizarán las correspondientes instalaciones de parches y upgrades de software.

Es necesario que inicialmente el equipo cuente con la versión software estable más actual a fecha de hoy.

  1. ANEXO.

    1. Esta sección afecta a la Prerequisitos para la Configuración del SSH



Antes de configurar el acceso SSH, deben realizarse las siguientes tareas:

  1. Configurar el hostname del dispositivo.
  2. Configurar el nombre del dominio del dispositivo.
  3. Generar un par de claves RSA, necesaria para el acceso SSH.
  4. Guardar el par de claves RSA.


hostname(config)#hostname { hostname_dispositivo }

hostname(config)#domain-name { nombre-dominio }

hostname(config)#crypto key generate rsa modulus { 2048 }

hostname(config)#write mem



    1. Operaciones seguras con Cisco.


Es importante tener un seguimiento de los avisos de seguridad relacionados con Cisco.

 Cisco Product Security Incident Response Team (PSIRT).
http://www.cisco.com/go/psirt.

Cisco Security Vulnerability Policy.
http://www.cisco.com/en/US/products/products_security_vulnerability_policy.html


    1. Recomendaciones de Cisco para seguridad.



  1. Monitorización de avisos y respuestas de seguridad
  2. Utilizar AAA / radius /tacacts.
  3. Gestión centralizada de logs y monitorización.
  4. Usar protocolos seguros de comunicacion para la gestión ( SSH / SCP ).
  5. Mejorar la visibilidad del tráfico mediante herramientas dedicadas ( netflow ).
  6. Almacenamiento securizado de backups de configuraciones.

Disociacion de Claves Parte II

Another article about PowerShell

if something I have made clear working with Powershell for so long is that it is not as simple as many want it to appear and the second...

Aplicando Gauss...y su campana