Mostrando entradas con la etiqueta raspberry pi. Mostrar todas las entradas
Mostrando entradas con la etiqueta raspberry pi. Mostrar todas las entradas

martes, 12 de enero de 2016

CREACIÓN DE CERTIFICADOS SSL AUTOFIRMADOS EN APACHE

En anteriores tutoriales vimos como instalar algunos programas como "Zabbix" o "Daloradius" en las que utilizamos "Apache" para administrarlos remotamente.
El problema reside en que por defecto estábamos utilizando el protocolo "HTTP" en donde los datos circulan por la red en texto plano. Esto es un gran riesgo en la seguridad ya que permite a cualquier hacker que se cuele en nuestra red, hacer un "sniffing" y conseguir acceso a nuestros datos sensibles como contraseñas,...
En esta captura vemos como no es difícil hacerse con el usuario y la password a través del programa "Wireshark".














Para resolver este problema, utilizaremos el protocolo "HTTPS" en nuestro servicio "Apache", que como sabemos maneja el puerto 443 por defecto.
"HTTPS" utiliza un cifrado basado en "SSL/TLS" con el objetivo de crear un canal cifrado para la comunicación de los datos más sensibles entre cliente y servidor.
"SSL" permite que el tráfico se envíe de forma segura entre las dos partes sin la posibilidad de que sea interceptado en la red, pero también permite la validación de la identidad del servidor por una autoridad certificadora "CA" que verifica su identidad a través de una firma.
Por lo que cumple dos de los características mas importantes en la seguridad: Autenticación y Confidencialidad.
En este sentido, para crear certificados digitales que son firmados por terceros tenemos 3 opciones:
  • Enviar la solicitud a una autoridad de confianza oficial para que nos firme nuestro certificado como Symantec,... que lógicamente son de pago y bastante caros en su mayoría.
  • Crear nuestro propia autoridad certificadora "CA" y firmar el certificado con esa autoridad creada, lo que implica que tendremos que instalar el certificado de la autoridad de confianza en los diferentes navegadores que utilizemos.
  • Autofirmar nuestro propio certificado al crearlo. Con ello los navegadores advertirán que no pueden verificar la validez del certificado a través de la "CA".
Esta última opción es la que vamos a implementar en nuestra "LAN" doméstica, ya que es la más sencilla de crear y porque nuestro objetivo final es la encriptación de la comunicación, no la validación del certificado a través de un tercero.

Lo primero que debemos hacer es conectarnos a nuestra Raspberry por SSH, RPD,..
Seguidamente abriremos el terminal y habilitaremos el módulo "SSL" en "Apache":

$ sudo a2enmod ssl

Reiniciamos el servicio para que la configuración surta efecto y nuestra Raspberry pueda manejar "SSL":

$ sudo service apache2 restart

Crearemos ahora una carpeta en el directorio de "Apache" para almacenar la clave y el certificado.

$ sudo mkdir /etc/apache2/ssl

Ahora generaremos nuestro certificado y clave utilizando "OpenSSL":

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/raspberry2.key -out /etc/apache2/ssl/raspberry2.crt

Las opciones utilizadas son:
  • x509: Especifica que queremos hacer un archivo de certificado autofirmado.
  • nodes: nuestro archivo de clave no tendrá "Passphrase", ya que cada vez que reiniciemos "Apache" nos la pediría, por lo que sería bastante molesto. 
  • days: Caducidad en días de nuestro certificado.
  • newkey rsa:2048: Se creará una solicitud de certificado y una clave privada nueva con un cifrado "RSA" de 2048 bits.
  • keyout: Destino del archivo de salida para el archivo de la clave privada.
  • out: Destino del archivo de salida para el certificado.


Rellenamos los datos que nos piden para el certificado según queramos. Es importante que en "Common Name" indiquemos en nombre de nuestro dominio o en su defecto la ip de nuestra Raspberry.














Ya tenemos nuestro certificado autofirmado creado. Ahora nos queda configurar los host virtuales en "Apache" editando el siguiente archivo:

$ sudo nano /etc/apache2/sites-available/default-ssl.conf

Cambiamos o añadimos los siguientes parámetros:

ServerName nuestrodominio o ip de la Raspberry:443
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/raspberry2.crt
SSLCertificateKeyFile /etc/apache2/ssl/raspberry2.key

Como vemos, hemos introducido nuestro dominio o ip como servidor, y hemos activado "SSL" indicando la ruta de la clave y el certificado correspondiente.

A continuación activaremos nuestro nuevo host virtual:

$  sudo a2ensite default-ssl

Reiniciamos el servicio:

$ sudo service apache2 reload

Para probar que todo está configurado correctamente, nos conectaremos en el navegador de cualquier cliente:

https://192.168.0.102/

Nos advertirá que nuestro certificado no está firmado por una entidad autorizada CA.
En la parte inferior pinchamos en "acceder" .


















Ya podremos acceder a la pagina sin problemas y añadirá una excepción para la próxima vez que entremos.
Si pinchamos en la parte donde figura la dirección web, podremos comprobar que nuestra comunicación está cifrada y verificar los parámetros de nuestro certificado.
























Y eso es todo, si tenéis algún problema no dudéis en contactar conmigo.
Hasta otra.....





domingo, 15 de noviembre de 2015

INSTALAR UN SERVIDOR RADIUS EN RASPBERRY PI 2

En el anterior tutorial vimos como configurar un punto de acceso en nuestra Raspberry. Lo complementaremos hoy añadiendo un servidor "Radius" para implementar un poco mas de seguridad en la red doméstica.
"RADIUS" (Remote Authentication Dial-In User Server") es un protocolo AAA (Autenticación, Autorización y  registro de Auditoria) empleado  para controlar el acceso a los servicios de red. Nosotros lo utilizaremos para nuestro punto de acceso "Wifi", reemplazando a los famosos e inseguros métodos de clave compartida. 
El dispositivo cuando se intenta conectar a cualquier punto de acceso, enviará un nombre y una contraseña al cliente del servicio (NAS), que será la propia "AP". Este consultará las credenciales en el servidor "Radius", el cual, utilizando esquemas de autenticación como PAP, CHAP o EAP,  autorizará o denegará el acceso.

Para implementar este servicio, utilizaremos el programa "FreeRadius" y lo integraremos en una base de datos "MySQL". Instalaremos también el programa "DaloRadius", que nos facilitará la administración de nuestro servidor "Radius" via "Browser".

Primero instalaremos los paquetes para "FreeRadius" y su módulo para "MySQL":

$ sudo apt-get install freeradius freeradius-mysql freeradius-utils

Posteriormente, instalaremos las dependencias necesarias para "FreeRadius", entre ellas el servidor "MySQL" y "apache2":

$ sudo apt-get install apache2 php5 php5-gd php-pear php-db libapache2-mod-php5 php-mail php5-mysql mysql-server

Por último, descargaremos "DaloRadius" desde su código fuente:

$ sudo wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz

Descomprimiremos el archivo:

$ sudo tar xzf daloradius-0.9-9.tar.gz 

Moveremos el contenido y añadiremos un directorio nuevo llamado "daloradius" dentro del directorio raíz web de "Apache":

$ sudo mv -f daloradius-0.9-9 /var/www/daloradius/

Crearemos ahora la base de datos en "MySQL" con los esquemas pertinentes:

$ mysqladmin -u root -p create radius
$ cd /var/www/daloradius/contrib/db
$ mysql -u root -p radius < fr2-mysql-daloradius-and-freeradius.sql

Añadiremos el usuario "radius" y le otorgamos los permisos oportunos en "MySQL" para que "Freeradius" pueda administrar la base de datos que acabamos de crear:

$ mysql -u root -p

>GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY 'radpass';
>quit

Una vez configurada la base de datos, pasaremos a modificar los archivos pertinentes en "FreeRadius".

Abrimos el archivo principal "/etc/freeradius/radiusd.conf" y descomentamos la siguiente línea para habilitar el archivo de configuración "sql.conf":

$INCLUDE sql.conf

Editaremos ahora el archivo "/etc/freeradius/sql.conf" y modificamos estos parámetros:

server = "localhost"
login = "radius"
password = "radpass"
readclients = yes

Posteriormente, ediatremos el archivo "default" y "inner-tunnel", habilitando las opciones "sql" para que "Freeradius" pueda conectar con la base de datos.

$ sudo nano /etc/freeradius/sites-enabled/default

En los apartados "authorize", "accouting" y "post-auth" descomentamos las líneas "sql".

$ sudo nano /etc/freeradius/sites-enabled/inner-tunnel

También descomentamos en este archivo la opción "sql" en la sección "authorize".

Nos queda permitir que "DaloRadius" pueda también acceder a la base de datos con el usuario "radius", por lo que editamos el archivo " /var/www/daloradius/library/daloradius.conf.php":

$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'radpass';

Reiniciamos "FreeRadius" y "Apache2" para que nuestra configuración surta efecto:

$ sudo /etc/init.d/freeradius restart
$ sudo /etc/init.d/apache2 restart


Ahora haremos un "test" para confirmar que todos los programas funcionan correctamente.
Abrimos nuestro navegador e introducimos:

http://ip_o_nombre_Raspberry/daloradius

Introducimos las credenciales por defecto que son "administrator/radius":
















Vamos a "management > new user" y creamos el usuario "prueba" con password "prueba".















Testearemos la conexión en el t:

$ radtest prueba prueba 127.0.0.1 1581 testing123

Si nos devuelve el mensaje "Access-Accept" es que es la conexión es correcta.

Ya solo nos falta configurar el cliente "NAS", que en nuestro caso es el punto de acceso "Wifi".

Abriremos el archivo de configuración "/etc/hostapd/hostapd.conf" y modificaremos o añadiremos estos parámetros:


interface=wlan0

driver=rtl871xdrv
country_code=ES

logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2

dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd

ssid=castillo_movil
macaddr_acl=0
hw_mode=g
channel=11

wme_enabled=1 # Habilitta el modo n
ieee80211n=1 # Requerire autorización IEEE 802.1X

auth_algs=3

ieee8021x=1 # Ip de nuestra interfaz
eapol_version=2 # Version EAP
eap_message="bienvenidos al castillo" # Mensaje de bienvenida
eapol_key_index_workaround=1

wpa=3 # Tipo de WPA 
wpa_key_mgmt=WPA-EAP # Controla  los algoritmos de gestión de claves del #cliente. 
wpa_pairwise=TKIP # Controla el cifrado de datos WPA
wpa_group_rekey=600 # Intervalo de tiempo para  el cambio de claves GTK en segundos
wpa_gmk_rekey=86400 # Intervalo de tiempo para  el cambio de claves GMK en segundos
rsn_pairwise=CCMP
eap_server=0 # Es necesario si nuestro hostapd está configurado para actuar #como un servidor RADIUS

own_ip_addr=192.168.0.102 # La dirección IP del punto de acceso
nas_identifier=castilloAP # Identificador de nuestro NAS

auth_server_addr=192.168.0.102 # Ip del servidor RADIUS para la #autentificación
auth_server_port=1812 # Puerto de comunicación de RADIUS
auth_server_shared_secret=clave # Clave compartida entre NAS y RADIUS

acct_server_addr=192.168.0.102 # Ip del servidor RADIUS para la #cuentas de usuario
acct_server_port=1813 # Puerto de comunicación de RADIUS
acct_server_shared_secret=clave # Clave compartida entre NAS y RADIUS

En este archivo podemos observar que está configurado de forma que nuestro servidor "Radius" corresponde en ip con que nuestro "NAS", ya que La Raspberry va a desempeñar esos dos roles.


A continuación reiniciaremos "hostapd":

$ sudo /etc/init.d/hostapd restart

Añadiremos ahora nuestra "AP" como cliente "NAS". Accederemos via "web" a "Daloradius" y vamos a "management>nas>new nas".














Solo nos queda conectarnos a la "AP" introduciendo nuestras credenciales de prueba de manera automática desde un pc Windows 8/10, un móvil "Android", o un mac...
Si tenemos un pc con Windows 7 o anterior, deberemos configurar nuestra conexión de red de la siguiente forma:
































Podremos observar en el archivo de registro "syslog" de nuestra Raspberry que nos hemos auntentificado correctamente.


 




Ya tendremos por tanto nuestro servidor "RADIUS" activo. Con la amigable interface web "DaloRadius" podremos configurar y administrar todos los párametros relativos al servidor como control de usuarios, grupos, visualizar logs, vigencia de las cuentas, monitorizar el tráfico,... y muchas opciones más.

Hasta una nueva entrada...

domingo, 1 de noviembre de 2015

INSTALACIÓN DE ZABBIX EN NUESTRA RASPBERRY PI

"Zabbix "es una solución de monitorización de redes, de software gratuito y de código abierto (“open source”), que puede monitorizar muchos de los parámetros que intervienen en la red y analizar el estado de salud de la misma.
Esto nos permite una rápida reacción ante cualquier problema relacionado con nuestra red interna o externa, y también poder anticiparse ante cualquier fallo crítico.

"Zabbix" nos permitirá monitorizar todos los dispositivos que sean más críticos de nuestra red doméstica (un "nas",  un "router",  la propia Raspberry,..).

Personalmente, lo considero el mejor software de monitorización gratuito, muy lejos de otros competidores como por ejemplo Nagios.

En este tutorial instalaremos y configuraremos la versión 2.4 de "Zabbix" en Raspbian. 

Para el correcto funcionamiento de Zabbix necesitaremos un servidor Web con soporte PHP, y para registrar y depositar los datos utilizaremos un servidor MySQL. Además es necesario que PHP tenga soporte GD y las librerías para CURL, JABBER y SNMP así como los elementos necesarios para la compilación.

Empezaremos instalando todos los paquetes necesarios que este necesita:

$ sudo apt-get install make gcc libc6-dev libmysqlclient-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libiksemel-dev mysql-server libopenipmi-dev fping php5-gd snmp libsnmp-base openjdk-6-jdk unixodbc unixodbc-dev libxml2 libxml2-dev snmp-mibs-downloader snmpd python-pywbem php5-ldap php5-mysql

En un momento determinado de la instalación se nos pedirá que asignemos una contraseña para el usuario "root" en "MySQL". Introducimos la que mas nos plazca. En nuestro ejemplo es "zabbix":












Una vez instalados, pasaremos a descargar desde el código fuente la aplicación "Zabbix".
Nos vamos al directorio donde lo instalaremos:

$ sudo /usr/src

Descargamos el repositorio desde la web:

$ sudo wget "http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.4/zabbix-2.4.4.tar.gz"

Descomprimimos el archivo con el comando tar:

$ sudo tar -xzvf zabbix-2.4.4.tar.gz

Se nos habrá creado un nuevo directorio llamado "Zabbix-2.4.4" .

Para nuestra configuración introducimos el siguiente script (tenemos que estar dentro del nuevo directorio Zabbix-2.4.4 ):

$ sudo ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --enable-java --with-jabber --with-unixodbc --with-ldap


Para compilar el código usamos "make":



$ sudo make



Ahora instalamos los programas con el comando "make install":

$ sudo make install



El siguiente paso será crear el usuario "zabbix". Este se encarga de la ejecución y de las secuencias de comandos del entorno "Zabbix". 
Con el  siguiente comando se crea el usuario con una "UID" de sistema, se deniega el inicio de sesión interactivo y dirige su directorio principal al directorio de la instalación Zabbix:

$ sudo adduser --system --home /usr/local/sbin --no-create-home zabbix

Nos logueamos ahora en la base de datos MYSQL como root:

$ mysql –u root -p

Creamos una base de datos con el nombre de "zabbix":

>create database zabbix;

Otorgamos los permisos necesarios para que el usuario "zabbix" pueda controlar la base de datos creada desde nuestra Raspberry:

>grant all on zabbix.* to zabbix@localhost identified by 'zabbix';

Salimos de MYSQL:

>quit

Una vez creada la base de datos, vamos a importar las plantillas, construir las tablas y poblar la base de datos:

$ sudo mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.4/database/mysql/schema.sql

$ sudo mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.4/database/mysql/images.sql

$ sudo mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.4/database/mysql/data.sql

Ahora haremos algunos ajustes en el fichero de configuración de "Zabbix":

$ sudo nano /usr/local/etc/zabbix_server.conf

Cambiaremos los siguientes parámetros:

DBHost=localhost # Servidor de la base de datos.
DBName=zabbix # Nombre de la base de datos.
DBUser=zabbix # Usuario de la base de datos
DBPassword=zabbix # Contraseña de la base de datos
Timeout=30 # Tiempo en segundos que tiene que esperar el agente.
ExternalScripts=/usr/local/share/zabbix/externalscripts # Archivo para los scripts externos.
AlertScriptsPath=/usr/local/share/zabbix/alertscripts # Archivo para los scripts de alertas.
FpingLocation=/usr/bin/fping # Directorio del binario "Fping" para comprobar la conectividad de los "hosts".

Es importante que "Zabbix" se inicie automáticamente en el arranque del sistema. Para ello copiaremos los scripts de inicio de Zabbix en el directorio "/etc/init.d":

$ sudo cp /usr/src/zabbix-2.4.4/misc/init.d/debian/zabbix-* /etc/init.d/

Posteriormente abrimos el archivo "/etc/rc.local" y añadimos los scripts para que el servidor y el agente se ejecuten al iniciar el sistema:

$ sudo nano /etc/rc.local

Insertamos estas líneas:

/etc/init.d/zabbix-server start
/etc/init.d/zabbix-agent start 

Reiniciamos la Rasperry y ejecutamos el siguiente comando para comprobar que los servicios se han iniciado correctamente:

$ sudo ps aux | grep zabbix

 

Lo último que nos falta configurar es el "Frontend".
"Zabbix" se apoya en la interfaz web con la que el usuario puede administrar fácilmente el servidor. Para configurar "apache2" copiaremos los archivos necesarios en la carpeta que por defecto utiliza dicho programa:


$ sudo cp -R /usr/src/zabbix-2.4.4/frontends/php/* /var/www



Ahora asignaremos los permisos de los directorios y archivos para el usuario y grupo "www-data", y eliminaremos el archivo "index.html" del servidor Web:

$ chown -R www-data:www-data /var/www/*
$ sudo rm /var/www/index.html



Para que todo funcione correctamente debemos cambiar ciertos parámetros de "PHP" que por defecto son insuficientes para que el servicio funcione correctamente. Editamos el archivo "php.ini":

$ sudo nano /etc/php5/apache2filter/php.ini

Modificamos los siguientes parámetros:

post_max_size = 16M
max_execution_time = 600
max_input_time = 600
date.timezone = Europe/Madrid

Para que estos ajustes tomen efecto, reiniciamos "apache2"

$ sudo apache2ctl restart


Ahora procederemos a la configuración del "Frontend". Para ello, accederemos a él mediante la ip o con el nombre de nuestro servidor con el navegador que deseemos.

http://ip_o_nombre_de_la_raspberry/


Se nos mostrará un asistente de configuración.















Observamos que cumplimos todos los requisitos. En caso de que no cumpliéramos alguno, deberíamos modificarlo en el archivo "php.ini".
















Tenemos ahora que especificar la base de datos, usuario y password , además del tipo de base de datos y el puerto de escucha, que configuramos en "zabbix-server.conf".





























Ya tenemos nuestro nuestro "Frontend" listo.
















 

Nos aparecerá una ventana para introducir nuestras credenciales, que serán "admin/zabbix", y ya podremos configurar las alertas,"triggers", gráficos,... a nuestro antojo.














Es importante resaltar que el rendimiento de "Zabbix" depende directamente de la capacidad hardware de nuestra Rapsberry, por lo que al estar manejando constantemente una base de datos es aconsejable solo monitorizar una pequeña red local. En mi caso, tengo monitorizados 5 host dentro de mi LAN.
En el siguiente tutorial veremos como instalar los agentes "Zabbix" en Windows y Linux, para monitorizar host basados en esas dos plataformas.

Hasta otra....

jueves, 29 de octubre de 2015

INSTALAR OPENVPN CON AUTENTIFICACIÓN PAM EN RASPBERRY

En anteriores tutoriales instalamos y configuramos un servidor "OPENVPN" mediante certificados digitales.
El problema que esto supone es que las claves y certificados pueden caer en manos ajenas.
En caso de que pase esto, podemos revocar los certificados del cliente para que no pueda acceder.
Nos situaremos en el directorio en donde los creamos y ejecutamos el siguiente script:

$ cd /etc/openvpn/2.0/
$ sudo . ./vars
$ sudo ./revoke-full certificado_usuario

Sin embargo nosotros añadiremos una capa más de seguridad en nuestra comunicación en caso de robo o pérdida de dispositivo.
Trataremos de autentificar la conexión VPN mediante usuario y contraseña a través del módulo PAM, con lo que nos podremos conectar con cualquier usuario local de la Raspberry.

En este sentido tendremos dos opciones:
  • Conectarnos con autentificación de usuario/contraseña y certificado del cliente.
  • Conectarnos con autentificación de usuario/contraseña sin certificado del cliente.

AUTENTIFICACIÓN CON CERTIFICADO DEL CLIENTE

En el primer caso, que es el que estábamos siguiendo en el anterior tutorial, deberemos modificar ciertos parámetros en los archivos de configuración del servidor y del cliente.
En nuestra Raspberry, abrimos el archivo de configuración del servidor:

$ sudo nano /etc/openvpn/server.conf

Añadimos la siguiente línea:

plugin /usr/lib/openvpn/openvpn-auth-pam.so login

Lo que hacemos es activar el "plugin" para que "OPENVPN" pueda conectar con "PAM".

Reiniciamos el servicio para que se efectuen los cambios:

$ sudo /etc/init.d/openvpn restart

Ahora pasaremos a configurar el cliente:

$ sudo client.opvpn

Agregamos al final del archivo:

auth-user-pass

Con estos sencillos pasos, el servidor, a parte de requerir el certificado del cliente, nos pedirá las credenciales de algún usuario local para autentificar la identidad.


AUTENTIFICACIÓN SIN CERTIFICADO DEL CLIENTE

Para esta segunda opción, editaremos el archivo de configuración del servidor:

$ sudo nano /etc/openvpn/server.conf

Y añadiremos:


client-cert-not-required # No requerimos certificados de los clientes
username-as-common-name # El servidor utiliza el nombre de usuario para autentificar.
tmp-dir "/etc/openvpn/tmp/" # Directorio temporal para la autentificación.
plugin /etc/openvpn/openvpn-auth-pam.so login

Debemos crear el directorio temporal "tmp" para la autentificación ya que por defecto no existe:

$ sudo mkdir /etc/openvpn/tmp

Reiniciamos el servicio:

$ sudo /etc/init.d/openvpn restart

La configuración del archivo cliente la dejamos tal y como lo habíamos configurado en la primera opción, solo añadiendo:

auth-user-pass


CONTROL DE ACCESO A USUARIOS VPN

Si queremos controlar el acceso de los usuarios que se conectan a la VPN, haremos otras modificaciones mas profundas.
Crearemos un archivo de servicio "PAM" dedicado a la autentificación "OPENVPN" para que solo puedan conectar los usuarios que pertenezcan al grupo "vpn".

Primero crearemos el grupo sistema:

$ sudo addgroup vpn

A continuación añadiremos a los usuarios y le asignamos "vpn como grupo principal:

$ sudo  useradd usuario_vpn -M -s /bin/false -g vpn

Le asignamos una contraseña:

$ sudo passwd usuario_vpn

Ahora crearemos un archivo de configuración "PAM" para el servicio "OPENVPN":

$ sudo nano /etc/pam.d/openvpn

Agregamos los siguientes módulos:


auth    required        pam_unix.so    shadow    nodelay
auth    requisite       pam_succeed_if.so user ingroup vpn quiet
account required        pam_unix.so

El primer módulo le solicita al usuario una contraseña y luego verifica la contraseña usando la información almacenada en "/etc/passwd" y, si existe, en "/etc/shadow".
El siguiente módulo comprueba el requisito en el cual el usuario debe pertener al grupo "vpn" para validar la autentificación.
El módulo de la línea 3 verificará si la cuenta ha expirado o si el usuario no ha cambiado la contraseña.



A continuación solo tenemos que editar el archivo de configuración y añadir la nueva ruta para conectar con "PAM":
$ sudo nano /etc/openvpn/server.conf

Modificamos esta línea:
plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn

Reiniciamos "OPENVPN" para que los cambios surtan efecto:

$ sudo /etc/init.d/openvpn restart

A partir de ahora, solo los usuarios que pertenezcan al grupo "vpn" podrán validarse en el servidor.

Y eso es todo. Si tienes alguna inquietud o duda, puedes contactar conmigo o dejar un comentario al respecto.

Saludos...