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.
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
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.
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.
Eliminación de usuarios genéricos.
No debe existir usuario
genérico alguno.
Todos los usuarios deben ser nominales.
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]
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
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
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
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
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
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.
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}
Para configurar el mensaje que
se presenta cuando un usuario inicia sesión en el dispositivo:
hostname(config)#banner
{login
texto-mensaje}
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
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}
Debe habilitarse este servicio
para proteger las contraseñas de la configuración de los
dispositivos:
hostname(config)#service
password-encryption
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}
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.
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}
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}
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.
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
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
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
Deben deshabilitarse servicios
innecesarios como echo, discard, chargen, etc.
Para hacerlo se
desactivará el servidor BOOTP:
hostname(config)#no
ip bootp server
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
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
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
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
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
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.
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
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
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 ).
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
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
}
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}
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.
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)
Esta sección afecta a la
securización de acceso físico a los switches.
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 ).
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.
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.
Antes de configurar el acceso
SSH, deben realizarse las siguientes tareas:
- Configurar el hostname del dispositivo.
- Configurar el nombre del dominio del dispositivo.
- Generar un par de claves RSA, necesaria para el acceso SSH.
- 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
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
- Monitorización de avisos y respuestas de seguridad
- Utilizar AAA / radius /tacacts.
- Gestión centralizada de logs y monitorización.
- Usar protocolos seguros de comunicacion para la gestión ( SSH / SCP ).
- Mejorar la visibilidad del tráfico mediante herramientas dedicadas ( netflow ).
- Almacenamiento securizado de backups de configuraciones.