Autenticación local en Vyatta tras inicio de conexión VPN de acceso remoto con OpenVPN usando el plugin openvpn-auth-pam.so
Os presento en esta entrada una forma de generar un nivel más de seguridad para las VPNs de acceso remoto creadas en Vyatta con el módulo OpenVPN, configurando el sistema Vyatta para que cuando se inicie la sesión VPN de acceso remoto (RA) lance un plugin que solicita un usuario y un password al cliente que trata de crear la VPN y obligarlo asi a pasar por un proceso de autenticación.
En esta entrada tenemos un tutorial de configuración de VPNs en Vyatta con OpenVPN.
Esto es gracias al módulo de autenticación PAM (Pluggable Authentication Module) de Unix y al script de OpenVPN /usr/lib/openvpn/openvpn-auth-pam.so que fuerza al usuario que se conecte por VPN a autenticarse en el sistema. Es necesario por tanto crear en el sistema Vyatta una cuenta de usuario para tal fin y lo que es más recomendable en este caso seria crear un usuario sin privilegios algunos en el sistema.
De esta forma conseguiríamos crear una VPN de acceso remoto mucho más segura, ya que si una vez creada la VPN de acceso remoto y configurado un cliente en un portátil con sus correspondientes certificados de autenticación el usuario pierde el portátil y no configuramos este paso, cualquiera que pudiese encenderlo podría acceder sin ningún problema a la empresa a la que la VPN conecta.
Nota para los usuarios de la versión VC6.2-2011.02.09 de Vyatta: No usar este proceso ya que hay un bug que no permite activarlo. Ver entrada donde se explica todo y se expone una solución temporal.
Lo que vamos a hacer es simplemente crear un nuevo usuario en el sistema Vyatta, modificar sus características manualmente para que no tenga acceso de consola (shell) al sistema y así poder usarlo solo para este propósito. Estos son los pasos.
-
Creamos un nuevo usuario con credenciales vpnuser/pass:
openredes@openredesR1# set system login user vpnuser authentication plaintext-password pass [edit] openredes@openredesR1# -
Le asignamos como nivel operador:
openredes@openredesR1# set system login user vpnuser level operator [edit] openredes@openredesR1# -
Aplicamos cambios y almacenamos la nueva configuración:
openredes@openredesR1# commit [edit] openredes@openredesR1# save Saving configuration to '/opt/vyatta/etc/config/config.boot'... Done [edit] openredes@openredesR1# -
Abrimos el archivo /etc/passwd, localizamos la entrada relativa al nuevo usuario:
vpnuser:x:1001:100::/home/vpnuser:/bin/vbash -
Y la modificamos, eliminando su consola de usuario /bin/vbash y le asignamos una no valida /bin/false:
vpnuser:x:1001:100::/home/vpnuser:/bin/false
Así el nuevo usuario “vpnuser” no tendrá ninguna consola de sistema asignada. -
Con la VPN RA ya creada le decimos al módulo OpenVPN que cuando se vaya a conectar algún usuario lance el script de autenticación PAM que se encuentra en la ruta /usr/lib/openvpn/openvpn-auth-pam.so, esto lo hacemos usando en Vyatta el parámetro “openvpn-option” que es la forma de pasarle opciones al módulo OpenVPN cuando estas no están reflejadas en el CLI de Vyatta:
openredes@openredesR1# set interfaces openvpn vtunXX openvpn-option "--plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn"Nota: si en la configuración de la VPN RA ya habíamos pasado alguna opción a módulo OpenVPN usando el parámetro “openvpn-option” hemos de tener en cuenta que el comando anterior nos sobrescribe valores anteriores, entonces, en caso de tener otras opciones configuradas, habrá que reflejarlas de nuevo entre las comillas del comando anterior, por ejemplo:
openredes@openredesR1# set interfaces openvpn vtunXX openvpn-option "--comp-lzo --dev-type tun --plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn --push route 192.168.0.0 255.255.255.0 --push route 192.168.1.0 255.255.255.0 --remote-cert-tls client --script-security 2"













Pingback: Bug 6771, VC6.2-2011.02.09 - El proceso commit en Vyatta falla cuando se usa la autenticacion PAM en el modulo OpenVPN | openredes - Networking Open Source
Pingback: Configuración avanzada de parámetros del módulo OpenVPN en Vyatta | openredes - Networking Open Source
Pingback: Vyatta en español | openredes - Networking Open Source
Pingback: Significado de los parametros de configuracion del archivo .ovpn en un cliente remoto de OpenVPN | openredes - Networking Open Source