Revocar certificados RSA en OpenVPN – Bloqueo de llaves

logo-openvpnWikipedia nos dice:

Una red privada virtual o VPN (siglas en inglés de virtual private network), es una tecnología de red que permite una extensión de la red local sobre una red pública o no controlada, como por ejemplo Internet.

Ejemplos comunes son, la posibilidad de conectar dos o más sucursales de una empresa utilizando como vínculo Internet, permitir a los miembros del equipo de soporte técnico la conexión desde su casa al centro de cómputo, o que un usuario pueda acceder a su equipo doméstico desde un sitio remoto, como por ejemplo un hotel. Todo ello utilizando la infraestructura de Internet.

Cabe aclarar que ya debió de realizar los pasos del manual OpenVPN para poder realizar esta tarea:

Una vez que ya tenemos nuestro servidor VPN funcionando en nuestra red, supongamos que uno de los clientes VPN es necesario bloquearlo por las siguientes razones ..

  • La llave privada para el acceso a sido robada.
  • El usuario o llave se necesita que sea actualizada o cambiada.
  • El usuario ya no elabora en la empresa. (En el caso de personas que usan su llave para conectarse en cualquier sitio).
  • Usuario invitado el cual ya no se permitirá el acceso la red privada.
  • Otras más ..

Para esto hay que seguir con los siguientes pasos:Supongamos que tenemos una llave certificada de nombre cliente02, seguidamente nos dirigimos al directorio donde se cuenta los ficheros para la creación de certificados RSA llamdo easy-rsa:

cd /etc/openvpn/easy-rsa/2.0/

Dentro encontraremos el fichero revoke-full el cual nos permitirá bloquear al cliente que deseamos ya no haga mas uso del VPN.

Se hace de la siguiente forma:

source ./vars
./revoke-full cliente2

Nos deberá arrojar algo como esto:

Using configuration from  /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 04.
Data Base Updated
Using configuration from  /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
client2.crt:  /C=KG/ST=NA/O=OpenVPN-TEST/CN=cliente2/emailAddress=me@myhost.mydomain
error 23 at 0 depth lookup:certificate revoked

Precisamente en la última línea es lo que se busca, porque indica que la verificación del certificado revocado ha fallado.

El script “revoke-full” generará un CRL (certificate revocation list) llamado crl.pem en el directorio /etc/openvpn/easy-rsa/2.0/, este fichero debe copiarse a un directorio donde el servidor OpenVPN pueda acceder (el mismo propio de la configuración o en nuestro caso dejarlo dentro de /etc/openvpn/easy-rsa/2.0/), y activar dicho fichero en la configuración del servidor, añadiéndolo al fichero:

/etc/openvpn/easy-rsa/2.0/servidorvpn-udp-1194.conf

Antes de comp-lzo lo siguiente:

crl-verify /etc/openvpn/easy-rsa/2.0/keys/crl.pem

(NOTA: Hay que reiniciar el servicio).

A partir de ese momento, todos los clientes que se conecten serán verificados (su certificado) contra ese fichero, y cualquier resultado positivo será descartado (no permitirá la conexión).

NOTAS CRL:

Cuando la opción crl-verify es usada en OpenVPN, el fichero CRL es releido cada vez que un nuevo cliente se conecta (o un cliente ya conectado renegocia la conexión SSL/TLS (por defecto una vez cada hora). Esto hace que se pueda actualizar el fichero CRL mientras que el demonio OpenVPN esté corriendo, y el nuevo CRL tendrá efecto inmediato para los nuevos clientes que se conecten (o re-conecten). Si el cliente al que se le ha revocado el certificado está conectado, se puede reiniciar el servidor OpenVPN vía script de reinicio (/usr/local/etc/rc.d/openvpn en la configuración openvpn del servidor), o bien enviando una señal SIGUSR1 o SIGHUP al proceso), haciendo un flush a todos los clientes.

Como la directiva crl-verify puede ser usada tanto en la parte servidor como cliente del OpenVPN, normalmente es completamente innecesario distribuir el fichero CRL a los clientes, salvo que el certificado de servidor haya sido revocado. Evidentemente los clientes no tienen porqué saber nada al respecto, y menos saber qué otros certificados de clientes han sido revocados.


Autor: William López Jiménez
Correo electrónico: william [punto] koalasoft [arroba] gmail [punto] com
Sitio de Red: koalasoft.wordpress.com

 Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 2006-2014 William López Jiménez. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

2 pensamientos en “Revocar certificados RSA en OpenVPN – Bloqueo de llaves

Deja una opinión

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s