Při hledání nástrojů, které lze použít ke sledování aktivních připojení OpenVPN na internetu, jsem narazil na nástroj založený na pythonu s názvem openvpn-monitor, který využívá rozhraní pro správu OpenVPN ke generování html zprávy, která zobrazuje stav serveru OpenVPN, včetně všech aktuálních spojení.
Jak monitorovat připojení OpenVPN pomocí nástroje openvpn-monitor
Předpoklady
Než budete moci pokračovat, je třeba nastavit několik věcí.
Nainstalujte a nakonfigurujte OpenVPN Server
Samozřejmě můžete chtít sledovat připojení k serveru OpenVPN, aniž byste měli spuštěný server OpenVPN. Pomocí níže uvedených odkazů nainstalujte a nastavte server OpenVPN na systémech CentOS/Ubuntu;
Nainstalujte a nastavte OpenVPN Server na CentOS 8
Nainstalujte a nastavte OpenVPN Server na Ubuntu 20.04
Povolit rozhraní pro správu
openvpn-monitor
nástroje vyžadují, aby bylo povoleno rozhraní pro správu OpenVPN. Rozhraní správy OpenVPN umožňuje správu OpenVPN z externího programu přes TCP nebo unix doménový socket. Server pro správu OpenVPN lze povolit na soketu Unix nebo na určeném portu TCP. Zatímco použití soketu Unix je doporučenou metodou, nástroj openvpn-monitor využívá připojení TCP rozhraní pro správu OpenVPN. Proto důrazně doporučujeme nastavit IP rozhraní pro správu OpenVPN na 127.0.0.1 (localhost), abyste omezili přístup k serveru pro správu místním klientům.
Rozhraní pro správu OpenVPN Připojení TCP lze povolit úpravou konfiguračního souboru serveru OpenVPN a přidáním řádku, 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
Řádek;
management 127.0.0.1 17562
Nastaví IP adresu rozhraní správy OpenVPN na 127.0.0.1 (localhost) a port TCP 17562. Openvpn-monitor očekává, že rozhraní správy OpenVPN bude naslouchat na portu TCP 5555. Později to změníme.
Zkontrolujte, zda přiřazený port nepoužívá žádný jiný program ve vašem systému;
lsof -i :17562
Pokud port nepoužívá žádná aplikace, restartujte službu serveru OpenVPN;
systemctl restart [email protected]
Zkontrolujte, zda je port nyní otevřený;
lsof -i :17562
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 44178 root 3u IPv4 189028 0t0 TCP localhost:17562 (LISTEN)
Ujistěte se, že služba serveru OpenVPN běží;
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.
Instalace a nastavení nástroje openvpn-monitor
Existují různé způsoby instalace nástroje openvpn-monitor, jak je uvedeno v úložišti programu Github. V tomto tutoriálu použijeme Apache k serveru připojení openvpn-monitor OpenVPN.
Nainstalujte Apache pro openvpn-monitor
Nainstalujte Apache a požadované závislosti balíčku;
apt install git apache2 libapache2-mod-wsgi python3-geoip2 python3-ipaddr python3-humanize python3-bottle python3-semantic-version geoip-database geoipupdate
Stáhněte si program openvpn-monitor
Dále naklonujte úložiště Github openvpn-monitor do výchozího kořenového adresáře webového serveru. V tomto nastavení používáme /var/www/html/openvpn-monitor
adresář.
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
Nakonfigurujte openvpn-monitor
Přejmenujte ukázkový konfigurační soubor, openvpn-monitor.conf.example
na openvpn-monitor.conf
.
cp /var/www/html/openvpn-monitor/openvpn-monitor.conf{.example,}
Nahraďte rozhraní pro správu OpenVPN, pokud jste jej změnili na jiný port než 5555 definovaný na openvpn-monitor.py
Program Python.
cd /var/www/html/openvpn-monitor
grep -irl 5555 . | xargs -I {} sed -i 's/5555/17562/' {}
Nyní můžete otevřít konfigurační soubor a nastavit název webu, přidat logo, nastavit výchozí umístění mapy (zeměpisnou šířku a délku, výchozí je New York, USA).
Takto vypadá náš upravený konfigurační soubor;
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
Všimněte si umístění GeoIP2 City Database. Pokud není ve vašem systému k dispozici, zaregistrujte se a stáhněte si bezplatnou verzi z MaxMind.
Ještě jedna věc je, že toto nastavení je testováno na Ubuntu 20.04, přičemž python 3 je výchozí. Protože openvpn-monitor používá python, jednoduše vytvořte symbolický odkaz z pythonu 3 na python;
ln -s /usr/bin/python3 /usr/bin/python
Nakonfigurujte Apache pro spouštění skriptu openvpn-monitor
Dále spusťte níže uvedený příkaz a nakonfigurujte Apache tak, aby spouštěl skript openvpn-monitor Python.
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>
Uložte a ukončete konfigurační soubor.
Nastavte vlastnictví kořenového webového adresáře openvpn-monitor na uživatele Apache, www-data
.
chown -R www-data: /var/www/html/openvpn-monitor/
Zkontrolujte syntaxi konfigurace Apache;
apachectl -t
Syntax OK
Povolte konfiguraci webu Apache openvpn-monitor a deaktivujte výchozí web.
a2ensite openvpn-monitor.conf
a2dissite 000-default.conf
Spusťte Apache a povolte jeho spuštění při spouštění systému;
systemctl enable --now apache2
Ladění openvpn-monitor
Openvpn-monitor můžete spustit z příkazového řádku a zkontrolovat, zda skutečně generuje html sestavu správně:
cd /var/www/html/openvpn-monitor python openvpn-monitor.py
Můžete také přidat možnost -d
pro ladění;
python openvpn-monitor.py -d
Ukázkový výstup;
...
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
Přístup k openvpn-monitor v prohlížeči
Pokud je vše v pořádku, můžete nyní přistupovat ke statistikám OpenVPN prostřednictvím adresy http://<OpenVPN-server-Address/openvpn-monitor
nebo http://<OpenVPN-server-Address/
podle našeho přesměrování.
A tady to je. Krásné, že? Veškeré zásluhy patří furlongm. Jak můžete vidět, máme stav připojení pro mé lokálně připojené klienty OpenVPN.
To znamená konec našeho průvodce, jak monitorovat připojení OpenVPN pomocí nástroje openvpn-monitor. Užijte si to.
Reference
openvpn-monitor
Související výukové programy
Nainstalujte a nastavte OpenVPN Server na Ubuntu 20.04
Nakonfigurujte OpenVPN LDAP Based Authentication
Přiřaďte klientům OpenVPN statické IP adresy
Nakonfigurujte klienta strongSwan VPN na Ubuntu 18.04/CentOS 8