Cisco IOS – Configuración de acceso SSH con PKI

Una de las funcionalidades de Cisco IOS versión 15 es el acceso SSH con certificados. Esto es, el acceso ssh usando la infraestructura de clave pública o PKI.

En este post vamos a ver cómo se configura, pero antes hablaré brevemente de la gestión automatizada de la red.

  • Gestión automatizada:

Una de las ventajas principales del acceso SSH con PKI, es la gestión automatizada y fácil de los dispostivos de red. En linux, unix etc hace mucho que se usa PKI para este propósito, pero para los dispositivos de red Cisco basado en IOS, es desde la versión 15. Hasta ahora con la mayoría de los dispostivos de red Cisco, había que utilizar ssh con scripting mediante expects para introducir el password del usuario u otros métodos como por ejemplo snmp de escritura para poder realizar cambios masivos y automatizados.
A parte de las tradicionales herramientas de pago como por ejemplo Cattools, existen otras soluciones de gestión muy interesantes como Puppet, Chef o Ansible.

Uno de los fabricantes que recientemente nos ha visitado en el trabajo es Arista Networks. Aunque todavía no he jugado con los Arista, éstos son administrables mediante Puppet, Chef, Ansible, CFEngine …

Cisco por su parte lanzó en el 2012 Cisco ONE ( Open Network Enviroment ) y Cisco OnePK con uno de los propósitos claros, adaptar sus dispositivos a esta tendencia pero todavía no son demasiado populares. Otros fabricantes llevan más tiempo con API’s disponibles para la gestión de sus dispositivos.

Del site de Cisco:

“Cisco Open Network Environment (ONE) is a comprehensive solution to help networks become more open, programmable, and application-aware.”

Por otro lado también dice:

“The broad capabilities of Cisco ONE help meet the needs of numerous market segments, including emerging concepts such as software-defined networking (SDN).”

Claramente, estos productos están además orientados a que Cisco no se quede fuera del mercado de las SDN’s. No en vano, se habla de las SDN’s como una solución “Cisco Killer” porque permite la gestión dinámica de la red en un entorno multi-vendor. Veremos hacia donde va el mercado, pero parace que cada día están tomando más relevancia las SDN’s…

Volviendo al propósito de este post:

1º – Crearemos una clave privada y una clave pública desde una estación Windows con PuttyGen
2º – Configuraremos la clave pública en un switch Cisco Catalyst con IOS versión 15 para el acceso ssh.
3º – Accederemos por ssh usando la clave privada con Putty

Descarga de Putty y PuttyGen en http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

  • Creación de la clave pública y privada con PuttyGen:

Abrimos PuTTyGen y pulsamos “Generate” para crear las claves RSA.

Veremos una barra de progreso y moveremos el ratón para generar la aleatoriedad necesaria en la creación de las claves.

cisco-pki-puttygen-1

Observaremos la clave pública:

cisco-pki-puttygen-2

Pulsamos en “save public key” y en “save private key” y guardamos las claves.

En este caso he llamado a los archivos pki-capa3-public y pki-capa3-private.

cisco-pki-puttygen-3

En este ejemplo no he protegido la clave privada con contraseña porque se hallará en un servidor aislado y asegurado, que estará encargado de lanzar comandos de forma masiva contra los dispositivos de red y seguridad. Así pues, respondemos que sí a la siguiente pregunta:

cisco-pki-puttygen-5

Con un editor de texto como notepad, pspad o alternativo, abrimos el fichero que contiene la clave pública pues en seguida vamos a necesitarla para la configuración. En mi ejemplo la clave pública es:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20140414"
AAAAB3NzaC1yc2EAAAABJQAAAQEAiJEBmYYFAWlxJaA6bkeUtMf/D99+XKKWNfrP
tvXCzpWfjXHGf6cejJR0hcoEAigdaC5ZG+ahKtz9v3uFgupljb8KaM2cdRpm37Q4
Wc8jPBj9W0NqbPHL8fdDg5Va58g78/vJftJd+wwB3QwrtjJ6U1AlygEd1+d3QN46
rUYbUwSU8tm7k3lnrSATTZ3tiXaueZKrj8fvykPmPLsHFZr3SO7HMDSWscsW4f4a
BEGeMdnFywoHSvFYQZXE3v1PbeQSy+01XhQrkZODyXY/fZf19wxvqM9sCTaG0pm1
vINZOWD2G0JIvZ8IZD0xZe5p03DEboar65P9NQiQGwi4bOR/vQ==
---- END SSH2 PUBLIC KEY ----

Abrimos un terminal al switch o router.

  • Configuramos la clave pública de nuestro usuario.

En mi caso el usuario es “xavi”:

switch-2# conf t
switch-2(config)# ip ssh pubkey-chain
switch-2(conf-ssh-pubkey)# username xavi
switch-2(conf-ssh-pubkey-user)# key-string

pulsamos ENTER y pegamos la clave pública:

switch-2(conf-ssh-pubkey-data)#AAAAB3NzaC1yc2EAAAABJQAAAQEAiJEBmYYFAWlxJaA6bkeUtMf/D99+XKKWNfrP
switch-2(conf-ssh-pubkey-data)#tvXCzpWfjXHGf6cejJR0hcoEAigdaC5ZG+ahKtz9v3uFgupljb8KaM2cdRpm37Q4
switch-2(conf-ssh-pubkey-data)#Wc8jPBj9W0NqbPHL8fdDg5Va58g78/vJftJd+wwB3QwrtjJ6U1AlygEd1+d3QN46
switch-2(conf-ssh-pubkey-data)#rUYbUwSU8tm7k3lnrSATTZ3tiXaueZKrj8fvykPmPLsHFZr3SO7HMDSWscsW4f4a
switch-2(conf-ssh-pubkey-data)#BEGeMdnFywoHSvFYQZXE3v1PbeQSy+01XhQrkZODyXY/fZf19wxvqM9sCTaG0pm1
switch-2(conf-ssh-pubkey-data)#vINZOWD2G0JIvZ8IZD0xZe5p03DEboar65P9NQiQGwi4bOR/vQ==
switch-2(conf-ssh-pubkey-data)#exit
switch-2(conf-ssh-pubkey-user)#exit
switch-2(conf-ssh-pubkey)#exit           

Si revisamos cómo queda la clave pública en la configuración, veremos que ha sufrido una reducción, esto es, IOS ha realizado un hash de la misma:

switch-2#sh run | section ip ssh pub
ip ssh pubkey-chain
  username xavi
   key-hash ssh-rsa D070F265ED55BBBF01C0090438C6D13D

Por lo tanto, se puede llevar via copy & paste a otro dispositivo o crear una plantilla.

Ahora creamos un método de acceso con contraseña para nuestro usuario por si queremos acceder sin PKI:

switch-2(config)#username xavi privilege 15 secret 0 micontraseña
switch-2(config)#end
switch-2#wr
Building configuration...
[OK]
  • Accedemos con Putty al switch por ssh:

En este ejemplo el switch tiene ip 192.168.5.9

cisco-pki-puttygen-9

Antes de iniciar la conexión, seleccionamos la clave privada en el apartado SSH de las opciones de la izquerda:

cisco-pki-puttygen-10

cisco-pki-puttygen-11

Ahora ya podemos iniciar la conexión SSH pulsando en el botón “Open”:

cisco-pki-puttygen-12

En mi caso, por ser un entorno de laboratorio y por ser la configuración del switch nueva, me sale una alerta de que putty no tiene la llave del host en el registro. Pulsamos “Sí”:

cisco-pki-puttygen-13

Introducimos en Putty el usuario que corresponde a la clave pública que hemos configurado en el switch:

cisco-pki-puttygen-14

Si todo ha ído bien, accedemos correctamente con certificados y sin contraseña:

cisco-pki-puttygen-15

Finalmente exportamos la clave privada en formato OpenSSH por si necesitamos importarla fácilmente en un equipo linux.

cisco-pki-puttygen-16

cisco-pki-puttygen-17

  • En el próximo post, veremos cómo desde un servidor linux, podemos lanzar comandos masivamente a diversos dispositivos Cisco a la vez.

Te puede interesar:

Configurar SSH en dispositivos Cisco

 

Leave a Reply

Your email address will not be published. Required fields are marked *