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-name espera 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úmeroAlgoritmoCómo se obtiene
5MD5secret
8SHA-256algorithm-type sha256 secret
9scryptalgorithm-type scrypt secretLa 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.
En exec-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-gateway es 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é mirarValor esperadoSignificado
Vlan1 / IP-Address192.168.1.10La IP de gestión quedó aplicada
MethodmanualLa IP se configuró a mano
Status / Protocolup / upLa SVI está activa
Puertos físicosunassignedCorrecto: 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