Configuración de SSH para administrar los dispositivos de forma remota y cifrada (en lugar de Telnet, que va en texto claro), y del Access-class para restringir desde qué redes se permite ese acceso.
Conceptos previos (mínimos)
- Existe SSH versión 1 y versión 2 (se usa la 2, más segura).
- Los dispositivos de red pueden ser clientes o servidores SSH.
- SSH reemplaza a Telnet para la administración remota porque cifra la sesión.
Prerrequisitos
- Un nombre de host y un nombre de dominio (se necesitan para generar la llave RSA).
- Un usuario local (o AAA) para autenticar el acceso.
- Conectividad IP hacia el dispositivo (una IP de gestión).
Configuración (SSH)
1. Identidad del dispositivo
Se necesita un nombre de host y un nombre de dominio
-
Comando:
Router(config)# hostname <Nombre> -
Ejemplo:
Router(config)# hostname R3 -
Comando:
R3(config)# ip domain-name <domain> -
Ejemplo:
R3(config)# ip domain-name lab.local
ip domain-nameespera un nombre de dominio (texto), no una dirección IP.
2. Usuario local para autenticar (Opcional)
Si ya tienes un usuario creado y una clave, este paso es opcional, puedes seguir con el siguiente.
- Comando:
R3(config)# username <Nombre-Usuario> privilege 15 algorithm-type scrypt secret <Clave> - Ejemplo:
R3(config)# username admin privilege 15 algorithm-type scrypt secret Cl4ve-F1rme!
| Número | Algoritmo | Cómo se obtiene | |
|---|---|---|---|
| 5 | MD5 | secret | |
| 8 | SHA-256 | algorithm-type sha256 secret | |
| 9 | scrypt | algorithm-type scrypt secret | La mejor opcion |
3. Generar las claves RSA
- Comando:
R3(config)# crypto key generate rsa modulus 2048
4. Forzar SSH versión 2
- Comando:
R3(config)# ip ssh version 2
5. Líneas vty: solo SSH y login con base local
R3(config)# line vty 0 4
R3(config-line)# exec-timeout 10 0
R3(config-line)# transport input ssh
R3(config-line)# login local
R3(config-line)# end
Con
line vty 0 4, pueden estar 5 conectados a la vez. Si entra un sexto, lo rechaza.
Enexec-timeout 10 0, el numero 10 es para decidir los Minutos y el 0 los Segundos.
Verificar:
`R3# show users`
`Line User Host(s) Idle Location`
`0 con 0 admin idle 00:00:12`
* `2 vty 0 admin idle 00:00:00 192.168.1.10`
`3 vty 1 admin idle 00:01:45 192.168.1.20`
Configuración Adicional (SSH)
1. Tiempo máximo para completar el login SSH
- Comando:
R3(config)# ip ssh time-out <Numero> - Ejemplo:
R3(config)# ip ssh time-out 60
Rango: 1 a 120 segundos (por defecto, 120).
2. Límite de intentos de contraseña por conexión SSH
Es el número de intentos de contraseña permitidos por conexión antes de desconectar.
- Comando:
R3(config)# ip ssh authentication-retries 3
Rango: 0 a 5 (por defecto, 3).
Si el cliente falla 3 veces, la conexión se cierra y tiene que abrir otra.
Resultado:
SW1# ssh -l admin 192.168.1.1
Password:
Password:
Password:
% Authentication failed.
[Connection to 192.168.1.1 closed by foreign host]
3. Cierre automático de sesión por inactividad
- Comando:
R3(config-line)# exec-timeout <Minutos-Segundos> - Ejemplo:
R3(config-line)# exec-timeout 5 0= Cierra la sesión si no hay actividad durante 5 minutos y 0 segundos.
Se escribe dentro de la línea (line vty o line console).
R3(config)# line vty 0 4
R3(config-line)# exec-timeout 5 0
R3(config-line)#
Cuando se cumple el tiempo, la sesión se cierra sola:
R3#
[Connection to 192.168.1.1 closed by foreign host]
4. Protección contra fuerza bruta
- Comandos:
SW1(config)# login block-for <segundos-bloqueo> attempts <intentos> within <segundos-ventana>
SW1(config)# login on-failure log
SW1(config)# login on-success log
- Ejemplo:
SW1(config)# login block-for 120 attempts 3 within 60
SW1(config)# login on-failure log
SW1(config)# login on-success log
login block-for 120 attempts 3 within 60: tras 3 fallos en 60 segundos, bloquea los intentos de login durante 120 segundos.
Configuración (Access-class)
Nos sirve para restringir el acceso a Telnet y SSH desde redes no autorizadas.
- Comando:
R1(config)# access-list <Numero-ACL> permit <IPv4> <Wildcard> - Ejemplo:
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255= Permite todo el origen 192.168.1.0 a 192.168.1.255.
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)# line vty 0 4
R1(config-line)# access-class 1 in
- La ACL define qué red(es) pueden administrar el equipo.
access-class 1 in: aplica esa ACL a las conexiones entrantes a las líneas VTY.
Verificar: show access-lists, ver si existe y si tiene tráfico.
Configuración Adicional
Gestión del switch (SVI y Gateway)
Un switch de capa 2 no enruta; su acceso remoto se hace por una IP de gestión en una interfaz VLAN (SVI). El
ip default-gatewayes lo que le permite responder a equipos de otras subredes. Es para la administración remota.
Switch(config)# hostname SW1
SW1(config)# interface vlan 1
SW1(config-if)# ip address 192.168.1.10 255.255.255.0
SW1(config-if)# no shutdown
SW1(config-if)# exit
SW1(config)# ip default-gateway 192.168.1.1
Verificar: SW1# show ip interface brief, & Qué deberías ver:
| Qué mirar | Valor esperado | Significado |
|---|---|---|
Vlan1 / IP-Address | 192.168.1.10 | La IP de gestión quedó aplicada |
Method | manual | La IP se configuró a mano |
Status / Protocol | up / up | La SVI está activa |
| Puertos físicos | unassigned | Correcto: en un switch L2 los puertos no llevan IP |
Ejemplos completos
Ejemplo 1
Router> enable
Router# configure terminal
Router(config)# interface gigabitEthernet 0/0
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Router(config-if)# no shutdown
Router(config-if)# exit
Router(config)# hostname R3
R3(config)# ip domain-name lab.local
R3(config)# username admin privilege 15 algorithm-type scrypt secret Cl4ve-F1rme!
R3(config)# crypto key generate rsa modulus 2048
R3(config)# ip ssh version 2
R3(config)# line vty 0 4
R3(config-line)# transport input ssh
R3(config-line)# login local
R3(config-line)# exit
Ejemplo 2 - Puede continuar el ejemplo anterior pero esta vez sera la configuración adicional y añadiendo una ACL.
R3(config)# ip ssh time-out 60
R3(config)# ip ssh authentication-retries 3
R3(config)# line vty 0 4
R3(config-line)# exec-timeout 5 0
R3(config-line)# exit
R3(config)# access-list 1 permit 192.168.1.0 0.0.0.255
R3(config)# line vty 0 4
R3(config-line)# access-class 1 in
R3(config-line)# end
Verificación
Estado de SSH (versión, timeout)
R1# show ip ssh
SSH Enabled - version 2.0
Authentication methods:publickey,keyboard-interactive,password
Authentication Publickey Algorithms:x509v3-ssh-rsa,ssh-rsa
Hostkey Algorithms:x509v3-ssh-rsa,ssh-rsa
Authentication timeout: 60 secs; Authentication retries: 3
Minimum expected Diffie Hellman key size : 1024 bits
IOS Keys in SECSH format(ssh-rsa, base64 encoded): R1.lab.local
Sesiones SSH activas
R1# show ssh
Connection Version Mode Encryption Hmac State Username
0 2.0 IN aes128-ctr hmac-sha2-256 Session started admin
0 2.0 OUT aes128-ctr hmac-sha2-256 Session started admin
1 2.0 IN aes128-ctr hmac-sha2-256 Session started admin
1 2.0 OUT aes128-ctr hmac-sha2-256 Session started admin
%No SSHv1 server connections running.
Configuración de las líneas VTY
R1# show running-config | section vty
line vty 0 4
access-class 1 in
exec-timeout 5 0
login local
transport input ssh