# [OpenVPN] Autentificación mediante LDAP (Abierto)

## galidor

Hola a todos, ando liado con OpenVPN y mi intención es autentificar a los usuarios mediante certificados así como con usuario y contraseña. Hasta el momento la única solución que he encontrado es instalar nss_ldap y pam_ldap para que el sistema vea usuarios en ldap y poder autentificarlos y si no quiero que inicien sesión ponerles la shell a /sbin/nologin pero no me parece la solución óptima. 

La duda: he leido que openvpn es capaz de autentificar usuarios sobre ldap pero no encuentro el USE necesario para ello y no sé si se encuentra integrado ni cómo activarlo. He encontrado este módulo http://code.google.com/p/openvpn-auth-ldap/ pero no creo que la gente de openvpn publicite en su web autentificación sobre ldap si no lo integran de alguna manera en su código.

Resumiendo, pretendo generar una OU en el ldap que contenga usuarios sólo para openvpn y que el esquema que siga esa OU no sea el del sistema donde tenga entradas del tipo shell, home y compañía.

No sé si me he explicado debidamente pero agradezco cualquier ayuda.

----------

## galidor

Amplio info.

OpenVPN lo que hace es utilizar un plugin que se llama openvpn-auth-pam.so para comunicarse con pam y mediante pam y nss debes configurar la autentificación en ldap, radius, mysql o el backend que quieras que sea compatible con pam con lo que entiendo que no es OpenVPN el que tiene soporte para autentificar contra LDAP o RADIUS como dice en su web sino que te da acceso a PAM y ya te apañarás tú con los módulos que configures en él.

El módulo que he encontrado para autentificación directa contra LDAP debería hacer lo que pretendo pero no sé bien cómo instalarlo.

http://code.google.com/p/openvpn-auth-ldap/

Si alguien me puede echar una mano a partir de este punto...

----------

## inconexo

Hola!

uso OpenVPN con unos 50 portatiles. Hasta ahora siempre habia usado cerfiticados para autentificar usuarios, con password, y haciendo filtrados con iptables de las MAC que los TAP-Win32 para dar sensacion de mas seguridad

No sabia que existia posibilidad de cruzarlo con LDAP! Con este numero de usuarios de verdad que seria deseable integrarlo en un directorio

Me temo que tengo los mismos conocimientos que tu de este asunto, pero me pongo a trabajar en ello y vamos comentado los avances

Un saludo!

----------

## galidor

Gracias, yo estoy en ello ahora mismo a ver si sale algo en claro.

De momento estoy intentando averiguar lo que necesito para compilar el módulo que he mencionado antes ya que la solución que tiene a PAM como intermediario no me gusta nada.

El caso es que tanto tiempo sirviéndome de portage para instalar me ha hecho un cómodo y no recuerdo ni lo que significan las opciones del configure:

```
./configure --prefix=/usr/local --with-openldap=/usr/local --with-openvpn=/usr/ports/security/openvpn/work/openvpn-2.0.2

```

Por lo que puedo leer...

 *Quote:*   

> ‘--with-package’
> 
> The package package will be installed, so configure this package to work with package.
> 
> Possible values of package include ‘gnu-as’ (or ‘gas’), ‘gnu-ld’, ‘gnu-libc’, ‘gdb’, ‘x’, and ‘x-toolkit’.
> ...

 

Pero no sé bien lo que debo poner para que todo funcione. ¿Significa esto que va a compilar de nuevo openvpn y openldap?

¿Alguien que sepa hacer ebuilds?  :Razz: 

----------

## galidor

Estoy intentando compilarlo completando las opciones del configure tal y como he entendido de los comentarios anteriores y la salida del configure me da el siguiente error:

```
checking how to run the Objective C preprocessor... /lib/cpp

configure: error: Objective C preprocessor "/lib/cpp" fails sanity check
```

Aquí alguien tenía el mismo error en Ubuntu pero no consigo encontrar nada que se le parezca a gobjc

http://code.google.com/p/openvpn-auth-ldap/issues/detail?id=6

A ver si alguien me puede decir cómo continuar.

Gracias.

----------

## galidor

Vale, mea culpa por escribir tan rápido.

Existen estas use para el paquete gcc que quizás tengan algo que ver.

 *Quote:*   

>  - - objc        : Build support for the Objective C code language
> 
>  - - objc++      : Build support for the Objective C++ language
> 
>  - - objc-gc     : Build support for the Objective C code language Garbage Collector

 

----------

## galidor

Me pregunto y me contesto a mi mismo, estoy en plan existencialista.

He conseguido compilar el módulo openvpn-auth-ldap.so y paso a explicar los pasos que he seguido:

PASO UNO: Obviamente... descargar los fuentes desde http://code.google.com/p/openvpn-auth-ldap/ y descomprimirlos.

PASO DOS: Confirmamos cumplir los requerimientos que se nos pide.

Para obtener los fuentes de OpenVPN y OpenLDAP de las versiones que tenemos instaladas debemos buscar en /usr/portage/distfiles y de no estar ahí descargarlos mediante emerge -fav openvpn openldap.

Descomprimir los fuentes donde cada uno considere. A mi me ha parecido adecuado /usr/local/src.

Confirmar el tener instalado el paquete dev-util/re2c.

Para que GCC sea capaz de compilar Objetive-C es necesario confirmar tener activo el use objc mediante equery uses gcc.

PASO TRES: Acceder al directorio donde hemos descomprimido los fuentes de openvpn-auth-ldap y ejecutar el configure de la siguiente manera.

```
./configure --prefix=/usr/local --with-openvpn=/usr/local/src/openvpn-2.0.9 --with-openldap=/usr/local/src/openldap-2.3.43
```

Lo que significa que a la hora de hacer el make install el módulo quedará instalado en la ruta que hayamos indicado en $PREFIX/lib/openvpn-auth-ldap.so y que puede encontrar los fuentes de openvpn y openldap en las rutas indicadas mediante --with-openvpn y --with-openldap. Nota: Las rutas que pasemos deben ser absolutas.

PASO CUATRO: Si todo ha ido bien ejecutad el make y cuando finalice tendremos el módulo compilado en src/.

Estoy en este punto y a partir de aquí imagino que bastará con seguir las instrucciones que aparecen en la web del módulo.

Ya iré comentando.

----------

