Mientras buscaba en Internet las herramientas que se pueden usar para monitorear las conexiones OpenVPN activas, encontré una herramienta basada en Python llamada openvpn-monitor que utiliza la interfaz de administración de OpenVPN para generar un informe html que muestra el estado de un servidor OpenVPN, incluidos todos los actuales. conexiones
Cómo monitorear conexiones OpenVPN usando la herramienta openvpn-monitor
Requisitos
Antes de que pueda continuar, hay algunas cosas que deben configurarse.
Instalar y configurar el servidor OpenVPN
Por supuesto, puede querer monitorear las conexiones del servidor OpenVPN sin tener un servidor OpenVPN en ejecución. Siga los enlaces a continuación para instalar y configurar el servidor OpenVPN en los sistemas CentOS/Ubuntu;
Instale y configure el servidor OpenVPN en CentOS 8
Instale y configure el servidor OpenVPN en Ubuntu 20.04
Habilitar interfaz de administración
openvpn-monitor
herramientas requiere que la interfaz de administración de OpenVPN esté habilitada. La interfaz de administración de OpenVPN permite que OpenVPN se controle administrativamente desde un programa externo a través de un socket de dominio TCP o Unix. El servidor de administración OpenVPN se puede habilitar en un socket Unix o en un puerto TCP designado. Si bien el uso del socket Unix es el método recomendado, la herramienta openvpn-monitor utiliza la conexión TCP de la interfaz de administración OpenVPN. Por lo tanto, se recomienda enfáticamente que establezca la IP de la interfaz de administración de OpenVPN en 127.0.0.1 (localhost) para restringir la accesibilidad del servidor de administración a los clientes locales.
La conexión TCP de la interfaz de administración de OpenVPN se puede habilitar editando el archivo de configuración del servidor de OpenVPN y agregando la línea, management IP port
.
vim /etc/openvpn/server/server.conf
... comp-lzo persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 auth SHA512 # Enable OpenVPN Management Interface on localhost using TCP port 17562 management 127.0.0.1 17562
La línea;
management 127.0.0.1 17562
Establece la dirección IP de la interfaz de administración de OpenVPN en 127.0.0.1 (localhost) y el puerto TCP 17562. El monitor openvpn espera que la interfaz de administración de OpenVPN escuche en el puerto TCP 5555. Lo cambiaremos más adelante.
Verifique que el puerto asignado no esté siendo utilizado por ningún otro programa en su sistema;
lsof -i :17562
Si ninguna aplicación está usando el puerto, reinicie el servicio del servidor OpenVPN;
systemctl restart [email protected]
Verifique que el puerto ahora esté abierto;
lsof -i :17562
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 44178 root 3u IPv4 189028 0t0 TCP localhost:17562 (LISTEN)
Asegúrese de que el servicio del servidor OpenVPN se esté ejecutando;
systemctl status [email protected]
● [email protected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-08-16 16:15:46 UTC; 1h 15min ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 44178 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 2282) Memory: 1.9M CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected] └─44178 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf Aug 16 16:15:46 ubuntu20.kifarunix-demo.com systemd[1]: Starting OpenVPN service for server... Aug 16 16:15:46 ubuntu20.kifarunix-demo.com systemd[1]: Started OpenVPN service for server.
Instalar y configurar la herramienta openvpn-monitor
Existen diferentes métodos para instalar la herramienta openvpn-monitor como se describe en el repositorio de Github del programa. En este tutorial, usaremos Apache para servir las conexiones OpenVPN de openvpn-monitor.
Instalar Apache para openvpn-monitor
Instale Apache y las dependencias requeridas del paquete;
apt install git apache2 libapache2-mod-wsgi python3-geoip2 python3-ipaddr python3-humanize python3-bottle python3-semantic-version geoip-database geoipupdate
Descargar el programa openvpn-monitor
A continuación, clone el repositorio Github de openvpn-monitor en el directorio raíz de su servidor web predeterminado. En esta configuración, usamos, /var/www/html/openvpn-monitor
directorio.
git clone https://github.com/furlongm/openvpn-monitor.git /var/www/html/openvpn-monitor
ls /var/www/html/openvpn-monitor/
AUTHORS COPYING images MANIFEST.in openvpn-monitor.conf.example openvpn-monitor.py README.md requirements.txt setup.py tests VERSION.txt
Configurar monitor-openvpn
Cambie el nombre del archivo de configuración de muestra, openvpn-monitor.conf.example
a openvpn-monitor.conf
.
cp /var/www/html/openvpn-monitor/openvpn-monitor.conf{.example,}
Reemplace la interfaz de administración de OpenVPN si la cambió a un puerto diferente al 5555 definido en openvpn-monitor.py
Programa Python.
cd /var/www/html/openvpn-monitor
grep -irl 5555 . | xargs -I {} sed -i 's/5555/17562/' {}
A continuación, ahora puede abrir el archivo de configuración y establecer el nombre del sitio, agregar un logotipo, establecer la ubicación predeterminada del mapa (latitud y longitud, por defecto es Nueva York, EE. UU.).
Así es como se ve nuestro archivo de configuración modificado;
cat /var/www/html/openvpn-monitor/openvpn-monitor.conf
[openvpn-monitor]
site=Kifarunix-demo-VPN
#logo=logo.jpg
latitude=11.016844
longitude=76.955833
maps=True
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S
[VPN1]
host=localhost
port=17562
name=Kifarunix-demo VPN
show_disconnect=False
Anote la ubicación de la base de datos de ciudades GeoIP2. Si no está disponible en su sistema, regístrese y descargue una versión gratuita de MaxMind.
Una cosa más es que esta configuración se prueba en Ubuntu 20.04, siendo Python 3 el predeterminado. Dado que openvpn-monitor usa python, simplemente cree un enlace simbólico de python 3 a python;
ln -s /usr/bin/python3 /usr/bin/python
Configurar Apache para ejecutar el script openvpn-monitor
A continuación, ejecute el siguiente comando para configurar Apache para ejecutar el script de Python openvpn-monitor.
vim /etc/apache2/sites-available/openvpn-monitor.conf
ScriptAlias / /var/www/html/openvpn-monitor/openvpn-monitor.py
<Directory /var/www/html/openvpn-monitor>
Options +ExecCGI
AddHandler cgi-script .py
DirectoryIndex openvpn-monitor.py
AllowOverride None
Require ip 192.168.0.0/16
</Directory>
Guarde y salga del archivo de configuración.
Establezca la propiedad del directorio raíz web de openvpn-monitor en el usuario de Apache, www-data
.
chown -R www-data: /var/www/html/openvpn-monitor/
Compruebe la sintaxis de configuración de Apache;
apachectl -t
Syntax OK
Habilite la configuración del sitio Apache openvpn-monitor y deshabilite el sitio predeterminado.
a2ensite openvpn-monitor.conf
a2dissite 000-default.conf
Inicie Apache y permita que se ejecute en el arranque del sistema;
systemctl enable --now apache2
Depuración de openvpn-monitor
Puede ejecutar openvpn-monitor desde la línea de comandos para verificar si realmente genera el informe html correctamente:
cd /var/www/html/openvpn-monitor python openvpn-monitor.py
También puede agregar la opción -d
para la depuración;
python openvpn-monitor.py -d
Salida de muestra;
...
oms.addListener("click", function(marker) {
popup.setContent(marker.alt);
popup.setLatLng(marker.getLatLng());
map.openPopup(popup);
});
oms.addListener("spiderfy", function(markers) {
map.closePopup();
});
bounds.extend(centre);
map.fitBounds(bounds);
</script>
</div></div>
<div class="well well-sm">
Page automatically reloads every 5 minutes.
Last update: <b>16/08/2020 19:10:26</b></div>
</div></body></html>
DEBUG:
=== begin vpns
{'VPN1': {'host': 'localhost',
'name': 'Staff VPN',
'port': '17562',
'release': 'OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] '
'[LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep '
'5 2019',
'sessions': {},
'show_disconnect': False,
'socket_connected': True,
'state': {'connected': 'CONNECTED',
'local_ip': IPv4Address('10.8.0.1'),
'mode': 'Server',
'remote_ip': '',
'success': 'SUCCESS',
'up_since': datetime.datetime(2020, 8, 16, 16, 15, 46)},
'stats': {'bytesin': 0, 'bytesout': 0, 'nclients': 0},
'version': Version('2.4.7')}}
=== end vpns
Acceso a openvpn-monitor en el navegador
Si todo está bien, ahora puede acceder a sus estadísticas de OpenVPN a través de la dirección http://<OpenVPN-server-Address/openvpn-monitor
o http://<OpenVPN-server-Address/
según nuestra redirección.
Y ahí tienes Hermoso, ¿no? Todo el crédito va a furlongm. Como puede ver, tenemos el estado de conexión de mis clientes OpenVPN conectados localmente.
Eso marca el final de nuestra guía sobre cómo monitorear las conexiones OpenVPN usando la herramienta openvpn-monitor. Disfruta.
Referencia
monitor-openvpn
Tutoriales relacionados
Instale y configure el servidor OpenVPN en Ubuntu 20.04
Configurar la autenticación basada en LDAP de OpenVPN
Asigne direcciones IP estáticas para clientes OpenVPN
Configure el cliente VPN strongSwan en Ubuntu 18.04/CentOS 8