GNU/Linux >> Tutoriels Linux >  >> Panels >> OpenVPN

Comment surveiller les connexions OpenVPN à l'aide de l'outil openvpn-monitor

Dans ce didacticiel, nous allons apprendre à surveiller les connexions OpenVPN à l'aide de l'outil openvpn-monitor. Ce didacticiel se concentre sur la surveillance des connexions OpenVPN établies à l'aide d'OpenVPN Community Edition. OpenVPN CE fournit une norme de facto pour la création de connexions VPN sécurisées sur Internet à l'aide d'un protocole de sécurité personnalisé qui utilise SSL/TLS.

En parcourant Internet à la recherche d'outils pouvant être utilisés pour surveiller les connexions OpenVPN actives, je suis tombé sur un outil basé sur python appelé openvpn-monitor qui utilise l'interface de gestion OpenVPN pour générer un rapport html qui affiche l'état d'un serveur OpenVPN, y compris tous les Connexions.

Comment surveiller les connexions OpenVPN à l'aide de l'outil openvpn-monitor

Prérequis

Avant de pouvoir continuer, il y a quelques éléments qui doivent être configurés.

Installer et configurer le serveur OpenVPN

Bien sûr, vous pouvez vouloir surveiller les connexions du serveur OpenVPN sans qu'un serveur OpenVPN ne soit en cours d'exécution. Suivez les liens ci-dessous pour installer et configurer le serveur OpenVPN sur les systèmes CentOS/Ubuntu ;

Installer et configurer le serveur OpenVPN sur CentOS 8

Installer et configurer le serveur OpenVPN sur Ubuntu 20.04

Activer l'interface de gestion

openvpn-monitor tools nécessite que l'interface de gestion OpenVPN soit activée. L'interface de gestion OpenVPN permet à OpenVPN d'être contrôlé administrativement à partir d'un programme externe via un socket de domaine TCP ou Unix. Le serveur de gestion OpenVPN peut être activé sur un socket Unix ou sur un port TCP désigné. Bien que l'utilisation du socket Unix soit la méthode recommandée, l'outil openvpn-monitor utilise la connexion TCP de l'interface de gestion OpenVPN. Il est donc fortement recommandé de définir l'IP de l'interface de gestion OpenVPN sur 127.0.0.1 (localhost) pour limiter l'accessibilité du serveur de gestion aux clients locaux.

La connexion TCP de l'interface de gestion OpenVPN peut être activée en modifiant le fichier de configuration du serveur OpenVPN et en ajoutant la ligne 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 ligne ;

management 127.0.0.1 17562

Définit l'adresse IP de l'interface de gestion OpenVPN sur 127.0.0.1 (localhost) et le port TCP 17562. Le moniteur openvpn s'attend à ce que l'interface de gestion OpenVPN écoute sur le port TCP 5555. Nous modifierons cela plus tard.

Vérifiez que le port attribué n'est utilisé par aucun autre programme sur votre système ;

lsof -i :17562

Si aucune application n'utilise le port, redémarrez le service serveur OpenVPN ;

systemctl restart [email protected]

Vérifiez que le port est maintenant ouvert ;

lsof -i :17562
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
openvpn 44178 root    3u  IPv4 189028      0t0  TCP localhost:17562 (LISTEN)

Assurez-vous que le service de serveur OpenVPN est en cours d'exécution ;

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.

Installer et configurer l'outil openvpn-monitor

Il existe différentes méthodes d'installation de l'outil openvpn-monitor, comme indiqué dans le référentiel Github du programme. Dans ce didacticiel, nous utiliserons Apache pour servir de serveur aux connexions OpenVPN openvpn-monitor.

Installer Apache pour openvpn-monitor

Installez Apache et les dépendances de paquet requises ;

apt install git apache2 libapache2-mod-wsgi python3-geoip2 python3-ipaddr python3-humanize python3-bottle python3-semantic-version geoip-database geoipupdate

Télécharger le programme openvpn-monitor

Ensuite, clonez le référentiel Github openvpn-monitor dans le répertoire racine de votre serveur Web par défaut. Dans cette configuration, nous utilisons /var/www/html/openvpn-monitor répertoire.

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

Configurer openvpn-monitor

Renommez l'exemple de fichier de configuration, openvpn-monitor.conf.example à openvpn-monitor.conf .

cp /var/www/html/openvpn-monitor/openvpn-monitor.conf{.example,}

Remplacez l'interface de gestion OpenVPN si vous l'avez changée en un port autre que 5555 défini sur openvpn-monitor.py Programme Python.

cd /var/www/html/openvpn-monitor
grep -irl 5555 . | xargs -I {} sed -i 's/5555/17562/' {}

Ensuite, vous pouvez maintenant ouvrir le fichier de configuration et définir le nom du site, ajouter un logo, définir l'emplacement de la carte par défaut (latitude et longitude, par défaut à New York, États-Unis).

Voici à quoi ressemble notre fichier de configuration modifié :

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

Notez l'emplacement de la base de données de la ville GeoIP2. S'il n'est pas disponible sur votre système, enregistrez-vous et téléchargez une version gratuite de MaxMind.

Une dernière chose est que cette configuration est testée sur Ubuntu 20.04, Python 3 étant la valeur par défaut. Puisque openvpn-monitor utilise python, créez simplement un lien symbolique de python 3 à python ;

ln -s /usr/bin/python3 /usr/bin/python

Configurer Apache pour exécuter le script openvpn-monitor

Ensuite, exécutez la commande ci-dessous pour configurer Apache afin qu'il exécute le script 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>

Enregistrez et quittez le fichier de configuration.

Définissez la propriété du répertoire racine Web openvpn-monitor sur l'utilisateur Apache, www-data .

chown -R www-data: /var/www/html/openvpn-monitor/

Vérifiez la syntaxe de configuration d'Apache ;

apachectl -t
Syntax OK

Activez la configuration du site Apache openvpn-monitor et désactivez le site par défaut.

a2ensite openvpn-monitor.conf
a2dissite 000-default.conf

Démarrez Apache et activez-le pour qu'il s'exécute au démarrage du système ;

systemctl enable --now apache2

Déboguer openvpn-monitor

Vous pouvez exécuter openvpn-monitor à partir de la ligne de commande pour vérifier s'il génère réellement le rapport html correctement :

cd /var/www/html/openvpn-monitor
python openvpn-monitor.py

Vous pouvez également ajouter l'option -d pour le débogage ;

python openvpn-monitor.py -d

Exemple de sortie ;

...
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

Accéder à openvpn-monitor sur le navigateur

Si tout va bien, vous pouvez maintenant accéder à vos statistiques OpenVPN via l'adresse http://<OpenVPN-server-Address/openvpn-monitor ou http://<OpenVPN-server-Address/ selon notre redirection.

Et voilà. Magnifique, n'est-ce pas ? Tout le mérite revient à furlongm. Comme vous pouvez le voir, nous avons le statut de connexion pour mes clients OpenVPN connectés localement.

Cela marque la fin de notre guide sur la façon de surveiller les connexions OpenVPN à l'aide de l'outil openvpn-monitor. Profitez-en.

Référence

openvpn-monitor

Tutoriels associés

Installer et configurer le serveur OpenVPN sur Ubuntu 20.04

Configurer l'authentification basée sur OpenVPN LDAP

Attribuer des adresses IP statiques aux clients OpenVPN

Configurer le client VPN strongSwan sur Ubuntu 18.04/CentOS 8

OpenVPN
  1. Comment autoriser les connexions à distance à MySQL

  2. Comment configurer un serveur OpenVPN sur Ubuntu 20.04

  3. Comment configurer un serveur OpenVPN sur Ubuntu 18.04

  4. Comment Ssh vers un serveur en utilisant un autre serveur ? ?

  5. Comment installer OpenVPN sur Ubuntu 18.04

Comment surveiller les performances de Linux à l'aide de l'outil systat

Comment installer et configurer un serveur OpenVPN sur Ubuntu 22.04

Comment surveiller les performances du serveur CentOS 8/7 à l'aide de Netdata

Comment redémarrer les services serveur à l'aide de Plesk Services Monitor

Comment surveiller les métriques système en temps réel à l'aide de l'outil Glances sous Linux

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN