Beim Durchsuchen des Internets nach Tools, die zur Überwachung aktiver OpenVPN-Verbindungen verwendet werden können, bin ich auf ein Python-basiertes Tool namens openvpn-monitor gestoßen, das die OpenVPN-Verwaltungsschnittstelle verwendet, um einen HTML-Bericht zu erstellen, der den Status eines OpenVPN-Servers einschließlich aller aktuellen anzeigt Verbindungen.
Überwachen von OpenVPN-Verbindungen mit dem openvpn-monitor-Tool
Voraussetzungen
Bevor Sie fortfahren können, müssen einige Dinge eingerichtet werden.
Installieren und konfigurieren Sie den OpenVPN-Server
Natürlich können Sie OpenVPN-Serververbindungen überwachen wollen, ohne dass ein OpenVPN-Server läuft. Folgen Sie den Links unten, um den OpenVPN-Server auf CentOS/Ubuntu-Systemen zu installieren und einzurichten;
OpenVPN-Server unter CentOS 8 installieren und einrichten
OpenVPN-Server unter Ubuntu 20.04 installieren und einrichten
Verwaltungsschnittstelle aktivieren
openvpn-monitor
Tools erfordert, dass die OpenVPN-Verwaltungsschnittstelle aktiviert ist. Die OpenVPN-Verwaltungsschnittstelle ermöglicht es, OpenVPN administrativ von einem externen Programm über einen TCP- oder Unix-Domain-Socket zu steuern. Der OpenVPN-Verwaltungsserver kann auf einem Unix-Socket oder auf einem bestimmten TCP-Port aktiviert werden. Während die Verwendung des Unix-Sockets die empfohlene Methode ist, verwendet das openvpn-monitor-Tool die TCP-Verbindung der OpenVPN-Verwaltungsschnittstelle. Es wird daher dringend empfohlen, die OpenVPN-Verwaltungsschnittstellen-IP auf 127.0.0.1 (localhost) einzustellen, um den Zugriff auf den Verwaltungsserver auf lokale Clients zu beschränken.
Die TCP-Verbindung der OpenVPN-Verwaltungsschnittstelle kann aktiviert werden, indem die Konfigurationsdatei des OpenVPN-Servers bearbeitet und die Zeile 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
Die Zeile;
management 127.0.0.1 17562
Legt die IP-Adresse der OpenVPN-Verwaltungsschnittstelle auf 127.0.0.1 (localhost) und den TCP-Port 17562 fest. Der openvpn-monitor erwartet, dass die OpenVPN-Verwaltungsschnittstelle TCP-Port 5555 überwacht. Wir werden das später ändern.
Stellen Sie sicher, dass der zugewiesene Port von keinem anderen Programm auf Ihrem System verwendet wird;
lsof -i :17562
Wenn keine Anwendung den Port verwendet, starten Sie den OpenVPN-Serverdienst neu;
systemctl restart [email protected]
Überprüfen Sie, ob der Port jetzt geöffnet ist;
lsof -i :17562
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 44178 root 3u IPv4 189028 0t0 TCP localhost:17562 (LISTEN)
Stellen Sie sicher, dass der OpenVPN-Serverdienst ausgeführt wird;
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.
OpenVPN-Monitor-Tool installieren und einrichten
Es gibt verschiedene Methoden zur Installation des openvpn-monitor-Tools, wie im Github-Repository des Programms beschrieben. In diesem Tutorial verwenden wir Apache, um die openvpn-monitor OpenVPN-Verbindungen zu servern.
Installieren Sie Apache für openvpn-monitor
Installieren Sie Apache und die erforderlichen Paketabhängigkeiten;
apt install git apache2 libapache2-mod-wsgi python3-geoip2 python3-ipaddr python3-humanize python3-bottle python3-semantic-version geoip-database geoipupdate
Laden Sie das Programm openvpn-monitor herunter
Klonen Sie als Nächstes das Github-Repository openvpn-monitor in das Stammverzeichnis Ihres Standard-Webservers. In diesem Setup verwenden wir /var/www/html/openvpn-monitor
Verzeichnis.
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
openvpn-monitor konfigurieren
Benennen Sie die Beispielkonfigurationsdatei um, openvpn-monitor.conf.example
zu openvpn-monitor.conf
.
cp /var/www/html/openvpn-monitor/openvpn-monitor.conf{.example,}
Ersetzen Sie die OpenVPN-Verwaltungsschnittstelle, wenn Sie sie auf einen anderen Port als 5555 geändert haben, der in openvpn-monitor.py
Python-Programm.
cd /var/www/html/openvpn-monitor
grep -irl 5555 . | xargs -I {} sed -i 's/5555/17562/' {}
Als Nächstes können Sie jetzt die Konfigurationsdatei öffnen und den Site-Namen festlegen, ein Logo hinzufügen und den Standardkartenstandort festlegen (Breiten- und Längengrad, standardmäßig New York, USA).
So sieht unsere modifizierte Konfigurationsdatei aus:
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
Notieren Sie sich den Speicherort der GeoIP2 City Database. Wenn es auf Ihrem System nicht verfügbar ist, registrieren Sie sich und laden Sie eine kostenlose Version von MaxMind herunter.
Eine weitere Sache ist, dass dieses Setup auf Ubuntu 20.04 getestet wird, wobei Python 3 der Standard ist. Da openvpn-monitor Python verwendet, erstellen Sie einfach einen symbolischen Link von Python 3 zu Python;
ln -s /usr/bin/python3 /usr/bin/python
Apache konfigurieren, um das openvpn-monitor-Skript auszuführen
Führen Sie als Nächstes den folgenden Befehl aus, um Apache für die Ausführung des Python-Skripts openvpn-monitor zu konfigurieren.
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>
Speichern und beenden Sie die Konfigurationsdatei.
Legen Sie den Besitz des openvpn-monitor-Webstammverzeichnisses auf den Apache-Benutzer www-data
.
chown -R www-data: /var/www/html/openvpn-monitor/
Überprüfen Sie die Apache-Konfigurationssyntax;
apachectl -t
Syntax OK
Aktivieren Sie die Apache-Site-Konfiguration von openvpn-monitor und deaktivieren Sie die Standard-Site.
a2ensite openvpn-monitor.conf
a2dissite 000-default.conf
Starten Sie Apache und aktivieren Sie ihn für die Ausführung beim Systemstart;
systemctl enable --now apache2
OpenVPN-Monitor debuggen
Sie können openvpn-monitor von der Befehlszeile aus ausführen, um zu überprüfen, ob der HTML-Bericht tatsächlich korrekt generiert wird:
cd /var/www/html/openvpn-monitor python openvpn-monitor.py
Sie können auch die Option -d
zum Debuggen;
python openvpn-monitor.py -d
Beispielausgabe;
...
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
Zugriff auf openvpn-monitor im Browser
Wenn alles in Ordnung ist, können Sie nun über die Adresse http://<OpenVPN-server-Address/openvpn-monitor
oder http://<OpenVPN-server-Address/
gemäß unserer Weiterleitung.
Und los geht's. Schön, nicht? Alle Kredite gehen an furlongm. Wie Sie sehen können, haben wir den Verbindungsstatus für meine lokal verbundenen OpenVPN-Clients.
Damit endet unser Leitfaden zur Überwachung von OpenVPN-Verbindungen mit dem openvpn-monitor-Tool. Viel Spaß.
Referenz
openvpn-monitor
Verwandte Tutorials
OpenVPN-Server unter Ubuntu 20.04 installieren und einrichten
Konfigurieren Sie die OpenVPN-LDAP-basierte Authentifizierung
Weisen Sie OpenVPN-Clients statische IP-Adressen zu
Konfigurieren Sie den strongSwan VPN-Client auf Ubuntu 18.04/CentOS 8