VPN CISCO CON CERTIFICADO OPEN SSL GENERADO EN LINUX DEBIAN

Iba hablaros sobre el VLAN Hopping y como hacer el saltar de una Vlan a otra con el doble etiquetado, pero vamos a cambiar un poco la temática de los anteriores post.

Echamos de menos a Chema escribiendo sobre aplicaciones para sistemas operativos que nos facilitan la vida, Chema animate y cuelga algo anda que tanto facebook es malo para el cuerpo.

Para los que ya sabeis hacer una VPN o estais estudiando para el CCNA Security, si teneis una VPN establecida ya entre dos routers CISCO os vamos a explicar como establecer la VPN con certificados generados con openSSL desde DEBIAN. Podeis prácticar OPENSSL siguiendo este curso de la universidad Politecnica de Madrid gratuito y que esta ahora mismo desarrollandose a tiempo libre, os dejo el enlace, echarle un vistazo os va gustar y vais aprender bastante (no sobre CISCO):

http://www.criptored.upm.es/crypt4you/temas/privacidad-proteccion/leccion1/leccion1.html

Este será nuestro esquema:

escenario

Dos routers conectados por VPN mediante SITE to SITE haciendo un peer entre RA y RC con RB por el medio.

Instalamos un debian en una máquina virtual, por defecto ya viene instalado el openssl y si no viene pues desde modo super user escribimos apt-get install openssl

Procedemos a solicitar los certificados de router1 y router2:

Creamos directorios para trabajar en nuestro directorio de usuario:

Crear directorio: mkdir cisco

Movernos al directorio creado: cd cisco
Crear varios directorios: mkdir certs newcerts private crl
Crear el directorio index vacio sint exto con: touch index.txt
Ahora meter en serial echo 01: echo 01 > serial
Copiar por seguridad a donde estamos el fichero openssl.cnf: cp /etc/ssl/openssl.cnf

Ahroa vamos a modificar el fichero /etc/ssl/openssl.cnf y modificamos con nano /etc/ssl/openssl.cnf dos de las entradas que hay dentro del fichero y las dejamos así:

dir = .
certificate = $dir/certs/cacert.pem

Copiamos y salimos.

Toca generar el par de claves de CA y el certificado raíz.

openssl y damos al enter a continuación ya en modo openssl

genrsa –des3 –out private/cakey.pem 2048

Nos pide inserta una key, poneis la vuestra habitual, por ejemplo ciscopass

vpn1
openssl req –new –x509 –days 1000 –key private/cakey.pem –out certs/cacert.pem –config openssl.cnf

De este no pongo imagen pero sería similar.

Nos va pedir los datos para el certificado raiz, os pongo un ejemplo de lo que podeis poner.

Country = ES, State or province = AST, Locality = Koeln, Organization Name = CMD, Sistemas Unit = Prueba, Common Name = CA. Email y otros campos los dejamos vacios.

Ojo en la creación de certificados más adelante, hay que tener cuidado con el common name, no debemos de poner el mismo ya que luego no deben coincidir deben ser únicos. Es decir al crear el certificado para RouterA y nos pida los datos de más arriba podemos poner en Common Name=RA

Podemos ver en pantalla el certificado raíz con el siguiente comando:

root@Mich:/home/miguel/prueba# openssl x509 -in certs/cacert.pem -noout -text

Toca generar los certificados para los routers, los vamos hacer un poco más ligeros de 1024 en vez de 2048 como el de CA de antes, así que generamos la RSA para RA y para RB, dejo la de RA pero la de RC sería lo mismo pero cambiando el nombre.pem. Recordar la palabra que ponéis, si no estais en producción y es una prueba lo que estais haciendo usar siempre la misma.

generarcertR6

Escribí R6key.pem pero en vuestro caso sería RAkey.pem, lo mismo para RCkey pero variando ahí el nombre, el proceso es el mismo.

Si os fijais en la sintasis y quereis saber para que sirve el -noout el -text de más arriba o el -out que utilizamos en esta genración de certificado pinchar en este enlace que tiene una buena chuleta en pdf, aunque habrá algunos como des3 que ya os imaginais que es hacerlo con triple DES:

Haz clic para acceder a chuleta_openssl.pdf

Toca solicitar la petición a la CA del certificado de RA y RC, dando la llave RSA que acabamos de generar y dando de salida una petición:

openssl req –new –key private/RAkey.pem –out certs/RAreq.pem –config openssl.cnf

openssl req –new –key private/RCkey.pem –out certs/RCreq.pem –config openssl.cnf

Mi intención era marcar en verde la RSA RAkey.pem pero os capture la imagen y ahora no puedo pero bueno ya la veis en el comando de la imagen solo que escribí R6key.pem

Ahora la CA usando la petición (request) generá el certificado, hay que hacerlo para RA y para RC, es muy parecido en Windows al proceso con el ADCS.

openssl ca -notext –in certs/RAreq.pem –out certs/RAcert.pem –config openssl.cnf

openssl ca -notext –in certs/RCreq.pem –out certs/RCcert.pem –config openssl.cnf

Toca pasarlo todo al contenedor PKCS#12, por que hacemos esto, pues porque tenemos que  definir un formato de fichero usado comúnmente para almacenar claves privadas con su certificado de clave pública protegido mediante clave simétrica.

Recordar la clave de exportación que ya sabeis de anteriores pasos.

Ahora toca pasar los certificados del directorio de linux donde los habéis generado al router. Yo he usado el método del USB 🙂 me parecio el más rápido para no tener que hacer nada especial con el vmware, ya que mi router 2911 dispone de puerto USB, así que hice un copy usbflash0: flash: hay que tener en cuenta que para que nos reconozca el usb debe de estar recien formateado y ojo con el formato de partición que usais si vais con este método.

Finalmente los importamos:

RA(config)# crypto ca import RALab pkcs12 flash:RA.p12 test
RA(config)# crypto ca trustpoint RALab
enrollment terminal
revocation-check none
exit

RC(config)# crypto ca import RCLab pkcs12 flash:RC.p12 test
RC(config)# crypto ca trustpoint RCLab
enrollment terminal
revocation-check none
exit

Crypto ca trustpoint significa que vamos a ser un entidad de certificación que acepta certificados autofirmados y no necesita firma de terceros, esto por resumir, al final del post os explico que quiero decir con resumir.

Enrollment terminal se usa para indicar que los certificados van a ser un copy paste del certificado directamente de un txt, o lo que es lo mismo en nuestro caso una importación.

Revocation-check none significa que no vamos a usar ninguna lista de rovocación, como una CRL o un online responder.

Por último queda cambiar en la politica de vuestra vpna la authentication pre-share por rsa-sig  que al visualizar la configuración no aparecerá pues por defecto es rsa-sig

Os dejo un ejemplo:

RA(config)# crypto isakmp policy 10
RA(config-isakmp)# authentication rsa-sig
RA(config-isakmp)# encryption aes 256
RA(config-isakmp)# hash sha
RA(config-isakmp)# group 5
RA(config-isakmp)# lifetime 3600
RA(config-isakmp)# end

Para RC lo mismo

También quitar las líneas que no se van a usar ya de la pre-shared, ejemplo:

R1(config)#no crypto isakmp key cisco123456 address 10.2.2.1

Cosas que pueden suceder, pues para que se establezca la VPN pues haberla tenido antes de los certificados funcionando para evitar problemas y estar seguros que la FASE 1 y 2 las hacia correctamente.

Yo por ejemplo tuve problemas al generar los pines, donde menos piensas, en el equipo, resulta que tenía un movil conectado a la wifi pero haciendo de modem para mi pc (si si para escaquearme y saltarme el firewall del trabajo) y al ser wifi realmente me generó una métrica mas baja en la tabla de enrutamiento del pc y ahi tenía el problema que salia por otra red el ping extendido.

07-06-2013 21-36-48 07-06-2013 21-37-12 07-06-2013 21-37-31Fue cuestión de cambiarla y a correr.

Espero que aprendierais algo, ya que tuve que escribirlo dos veces entero, pues un fallo con el teclado me hizo perder todo …, na que la lie con el wordpress 😦 a quien no le paso alguna vez ??, así que me he armado de valor y lo he vuelto a escribir todo un poco mas escueto, pero ahí queda todo esto, ahora ya puedo dar a subir el post y descargar toda la FURIA que llevo guardando por cada letra que he repetido, ya puedo golpear y romper el teclado, quizas tambien el ratón …

Publicado el junio 7, 2013 en Redes y etiquetado en , , . Guarda el enlace permanente. Deja un comentario.

Deja un comentario