La gestión remota de dispositivos de red es una práctica extendida y necesaria en el ámbito de la administración de la infraestructura de red. La gestión remota implica un riesgo de seguridad: la información de configuración y monitoreo de los dispositivos circula en sesiones TCP atravesando diferentes secciones de red, muchas de las cuales no están bajo nuestro control y que por lo tanto han de ser consideradas inseguras.
Sin embargo son muchos los que aún utilizan para esta tarea sesiones Telnet.
Telnet es un protocolo adecuado para la gestión remota de dispositivos pero inseguro. Las sesiones Telnet viajan por la red sin autenticar y sin cifrar, y por lo tanto quien capture el tráfico de esas sesiones accederá no solo a la información de configuración sino también a las claves que ingresemos que estarán viajando por la red en texto plano.
Es por esto necesario implementar para estas tareas SSH.
Para poder implementar SSH se requieren que el sistema operativo del dispositivo al que deseamos acceder soporte el servicio SSH.
Cisco IOS hoy soporta SSH en todas sus imágenes.
La otra condición, es contar con un cliente SSH.
Esto también es posible ya que no sólo clientes licenciados, sino también otros de acceso libre (p.e. Putty y Tera Term) soportan SSH.
Configuración básica del servicio SSH
La configuración básica del servicio SSH para el acceso de gestión es un procedimiento ampliamente difundido y por lo tanto, se supone conocido.
Los dispositivos Cisco IOS por defecto tienen habilitado el servicio de Telnet para el acceso remoto a la gestión del dispositivo, no el servicio SSH.
Por lo tanto, la utilización de SSH requiere de varios pasos de configuración:
* Prerequisitos
Router(config)#hostname LAB
Router(config)#ip domain-name ccnp.com
Router(config)#crypto key generate rsa modulus 2048
- Genera un par de llaves de cifrado RSA (en este caso de 2048 bits de longitud), que luego utilizará SSH.
Para que se genere el par de llaves de cifrado es necesario antes contar con hostname y nombre de dominio ya que son elementos utilizados para su generación.
Router(config)#username admin privilege 15 secret Clave_4A
- Crea un usuario con privilegios de nivel 15 en la base de usuario locales, con su clave de acceso (Clave_4A), que será luego utilizado por SSH.
Dado que la clave de usuario está definida como "secret", se guardará cifrada utilizando MD5 en el archivo de configuración, no en texto plano.
Este usuario y clave puede tener diferentes usos en la operación del dispositivo; en este caso lo utilizaremos específicamente para autenticar el acceso a la gestión remota.
Router(config)#ip ssh version 2
- Elige utilizar SSH versión 2 solamente para las conexiones remotas que se establezcan.
Por defecto IOS lo ejecuta en modo compatibilidad, es decir, admite conexiones SSHv1 y SSHv2.
* Activación de la autenticación en líneas virtuales con SSH
Router(config)#line vty 0 5
Router(config-line)#transport input ssh
- Define que el único protocolo para el acceso remoto utilizando terminal virtual es SSH.
Router(config-line)#login local
- Habilita la autenticación local utilizando las credenciales de usuario y clave que se definieron antes.
Router(config-line)#exit
* Restringir el acceso exclusivamente desde un conjunto de direcciones IP específicas
Router(config)#ip access-list standard SSH
Router(config-std-nacl)#permit 192.168.100.0 0.0.0.255
Router(config-std-nacl)#deny any log
Router(config-std-nacl)#exit
- Crea una lista de acceso estándar que sólo permite el paso de tráfico generado en la subred 192.168.100.0/24.
El resto del tráfico está denegado, y se guardará registro de los intentos rechazados.
Router(config)#line vty 0 5
Router(config)#access-class SSH in
- Aplica la ACL llamada SSH que se creó antes a los accesos por terminal virtual, limitando de esta manera a las direcciones IP de la red 192.168.100.0/24 el acceso por SSH al dispositivo.
Soporte SSH en IOS XE 17
- Cualquier imagen de IOS con soporte de cifrado estándar es compatible con servicios y clientes SSH estándar.
- IOS incluye tanto un cliente como un servicio SSH.
- Tanto el cliente como el servidor soportan SSH versión 2.
- La generación de claves RSA es requisito del lado del servidor SSH.
- La longitud del par de claves RSA debe ser, como mínimo, igual o superior a 768 bits. La práctica recomendada de seguridad hoy es que sea de 2048 bits.
- No se soporta reenvío de puertos ni compresión.
Algoritmos de SSH para la operación
El servicio SSH incluido en IOS XE admite varios algoritmos de cifrado que, en principio, negocia dinámicamente con el cliente en el momento de establecer la sesión. Los algoritmos de cifrado soportados son:
- ESS128-CTR
- AES192-CTR
- AES256-CTR
- AES128-CBC
- 3DES-CBC
- AES192-CBC
- AES256-CBC
Para la autenticación el servicio de SSH de IOS admite:Respecto a los algoritmos de manejo de llaves de cifrado, los soportados son: En la implementación por defecto los algoritmos se negocian dinámicamente entre cliente y servidor iniciando la negociación por los primeros que incluí en cada lista y luego avanzando en sentido descendente hasta alcanzar una coincidencia.
Respecto del cliente SSH incluido en IOS, los algoritmos de cifrado soportados son los siguientes, en orden descendente de preferencia.
- ESS128-CTR
- AES192-CTR
- AES256-CTR
- AES128-CBC
- 3DES-CBC
- AES192-CBC
- AES256-CBC
Los algoritmos de autenticación soportados por el cliente SSH, en orden de preferencia decreciente, son:
El cliente SSH de IOS soporta solamente un algorimo de llaves de cifrado que es SSH-RSA.
Selección de algoritmos criptográficos por configuración
Por defecto IOS negocia dinámicamente entre cliente y servidor los algoritmos criptográficos a utilizar.
Sin embargo, este comportamiento puede ser modificado por configuración de manera tal de especificar un algoritmo de cifrado específico.
Para fijar el algoritmo de cifrado soportado por el servicio SSH, la configuración es la siguiente:
Router#configure terminal
Router(config)#ip ssh server algorithm encryption aes128-ctr 3des-cbc
- Establece un grupo específico de algoritmos de cifrado soportados para la conexión con el servidor SSH y un orden de preferencia. En este ejemplo se intenta en primer lugar utilizar AES128-CTR y, si el cliente no lo soporta, entonces 3DES-CBC.
Si se incluye un único algoritmo, entonces no hay negociación y solo se puede utilizar ese algoritmo en el cliente.
Se debe especificar al menos un algoritmo.
Para definir los algoritmos de cifrado que se utilizarán en el cliente SSH de IOS, la configuración es la siguiente:
Router#configure terminal
Router(config)#ip ssh client algorithm encryption aes128-ctr 3des-cbc
- Establece un grupo específico de algoritmos de cifrado soportados para conexión iniciadas con el cliente SSH de IOS y el orden de preferencia. En este ejemplo se intenta en primer lugar utilizar AES128-CTR y, si el cliente no lo soporta, entonces 3DES-CBC.
Si se incluye un único algoritmo, entonces no hay negociación y solo se pueden establecer conexiones con servidores SSH que soporten ese algoritmo.
Se debe especificar al menos un algoritmo.
Para fijar el algoritmo utilizado para el intercambio de claves de autenticación, en el servidor, el comando es el siguiente:
Router#configure terminal
Router(config)#ip ssh server algorithm mac hmac-sha1
- Establece en el servicio SSH HMAC-SHA1 como algoritmo para la negociación de claves. Si se especifica más de uno, el orden indica el orden de preferencia de los mismos.
Se debe indicar al menos un algoritmo.
Si se desea fijar el algoritmo utilizado en la autenticación por el cliente SSH de IOS, el comando es el siguiente:
Router#configure terminal
Router(config)#ip ssh client algorithm mac hmac-sha1
- Establece HMAC-SHA1 como algoritmo para la negociación de claves en el cliente SSH de IOS. Si se especifica más de uno, el orden indica el orden de preferencia de los mismos.
Se debe indicar al menos un algoritmo.
Si lo que se desea es fijar el algoritmo de cifrado que se utiliza en la generación de llaves de cifrado en el servicio SSH (el cliente SSH de IOS solamente soporta llaves SSH-RSA, por lo que no hay posibilidad de modificar esa opción) el comando a utilizar es:
Router#configure terminal
Router(config)#ip ssh server algorithm hostkey x509v3-ssh-rsa
- Establece en el servicio SSH X509v3-SSH-RSA como algoritmo para la generación de llaves de cifrado a utilizar en la sesión SSH. Si se especifica más de uno, el orden indica el orden de preferencia de los mismos.
Se debe indicar al menos un algoritmo.
Estás invitado a participar de nuestro grupo en Facebook:
https://www.facebook.com/groups/librosnetworking/
O si preferís redes sociales con mayor control de tu privacidad,
podés participar de nuestro grupo en VKontakte
https://vk.com/libros.networking
o seguir las principales novedades en el grupo de Telegram:
https://t.me/LibrosNetworking
Las abreviaturas y siglas utilizadas en este post puede encontrarlas desarrolladas en