Durante la ricerca in Internet degli strumenti che possono essere utilizzati per monitorare le connessioni OpenVPN attive, mi sono imbattuto in uno strumento basato su Python chiamato openvpn-monitor che utilizza l'interfaccia di gestione di OpenVPN per generare un rapporto html che mostra lo stato di un server OpenVPN, inclusi tutti gli attuali connessioni.
Come monitorare le connessioni OpenVPN utilizzando lo strumento openvpn-monitor
Prerequisiti
Prima di poter procedere, è necessario configurare alcune cose.
Installa e configura il server OpenVPN
Ovviamente potresti voler monitorare le connessioni del server OpenVPN senza avere un server OpenVPN in esecuzione. Segui i link sottostanti per installare e configurare il server OpenVPN su sistemi CentOS/Ubuntu;
Installa e configura il server OpenVPN su CentOS 8
Installa e configura il server OpenVPN su Ubuntu 20.04
Abilita interfaccia di gestione
openvpn-monitor
strumenti richiede che l'interfaccia di gestione di OpenVPN sia abilitata. L'interfaccia di gestione di OpenVPN consente il controllo amministrativo di OpenVPN da un programma esterno tramite un socket di dominio TCP o unix. Il server di gestione OpenVPN può essere abilitato su un socket Unix o su una porta TCP designata. Sebbene l'utilizzo del socket Unix sia il metodo consigliato, lo strumento openvpn-monitor utilizza la connessione TCP dell'interfaccia di gestione OpenVPN. Si consiglia pertanto vivamente di impostare l'IP dell'interfaccia di gestione OpenVPN su 127.0.0.1 (localhost) per limitare l'accessibilità del server di gestione ai client locali.
Interfaccia di gestione OpenVPN La connessione TCP può essere abilitata modificando il file di configurazione del server OpenVPN e aggiungendo la riga 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 linea;
management 127.0.0.1 17562
Imposta l'indirizzo IP dell'interfaccia di gestione OpenVPN su 127.0.0.1 (localhost) e la porta TCP 17562. Il monitor openvpn prevede che l'interfaccia di gestione OpenVPN sia in ascolto sulla porta TCP 5555. Lo cambieremo in seguito.
Verifica che la porta assegnata non sia utilizzata da nessun altro programma sul tuo sistema;
lsof -i :17562
Se nessuna applicazione utilizza la porta, riavvia il servizio server OpenVPN;
systemctl restart [email protected]
Verifica che la porta sia ora aperta;
lsof -i :17562
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 44178 root 3u IPv4 189028 0t0 TCP localhost:17562 (LISTEN)
Assicurati che il servizio del server OpenVPN sia in esecuzione;
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.
Installa e configura lo strumento openvpn-monitor
Esistono diversi metodi per installare lo strumento openvpn-monitor come indicato nel repository Github del programma. In questo tutorial, useremo Apache per gestire le connessioni OpenVPN di openvpn-monitor.
Installa Apache per openvpn-monitor
Installa Apache e le dipendenze del pacchetto richieste;
apt install git apache2 libapache2-mod-wsgi python3-geoip2 python3-ipaddr python3-humanize python3-bottle python3-semantic-version geoip-database geoipupdate
Scarica il programma openvpn-monitor
Quindi, clona il repository Github di openvpn-monitor nella directory principale del server Web predefinito. In questa configurazione utilizziamo /var/www/html/openvpn-monitor
directory.
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
Configura openvpn-monitor
Rinominare il file di configurazione di esempio, openvpn-monitor.conf.example
a openvpn-monitor.conf
.
cp /var/www/html/openvpn-monitor/openvpn-monitor.conf{.example,}
Sostituisci l'interfaccia di gestione di OpenVPN se l'hai modificata in una porta diversa da 5555 definita su openvpn-monitor.py
Programma Python.
cd /var/www/html/openvpn-monitor
grep -irl 5555 . | xargs -I {} sed -i 's/5555/17562/' {}
Successivamente, puoi ora aprire il file di configurazione e impostare il nome del sito, aggiungere un logo, impostare la posizione predefinita della mappa (latitudine e longitudine, impostazione predefinita su New York, USA).
Ecco come appare il nostro file di configurazione modificato;
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
Prendere nota della posizione del database della città GeoIP2. Se non è disponibile sul tuo sistema, registrati e scarica una versione gratuita da MaxMind.
Un'altra cosa è che questa configurazione è testata su Ubuntu 20.04, con python 3 come predefinito. Poiché openvpn-monitor utilizza python, crea semplicemente un collegamento simbolico da python 3 a python;
ln -s /usr/bin/python3 /usr/bin/python
Configura Apache per eseguire lo script openvpn-monitor
Quindi, esegui il comando seguente per configurare Apache in modo che esegua lo 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>
Salva ed esci dal file di configurazione.
Imposta la proprietà della directory principale web openvpn-monitor sull'utente Apache, www-data
.
chown -R www-data: /var/www/html/openvpn-monitor/
Controlla la sintassi della configurazione di Apache;
apachectl -t
Syntax OK
Abilita la configurazione del sito Apache openvpn-monitor e disabilita il sito predefinito.
a2ensite openvpn-monitor.conf
a2dissite 000-default.conf
Avvia Apache e abilitalo all'esecuzione all'avvio del sistema;
systemctl enable --now apache2
Debug di openvpn-monitor
Puoi eseguire openvpn-monitor dalla riga di comando per verificare se genera effettivamente il rapporto html correttamente:
cd /var/www/html/openvpn-monitor python openvpn-monitor.py
Puoi anche aggiungere l'opzione -d
per il debug;
python openvpn-monitor.py -d
Esempio di output;
...
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
Accesso a openvpn-monitor sul browser
Se tutto va bene, ora puoi accedere alle tue statistiche OpenVPN tramite l'indirizzo http://<OpenVPN-server-Address/openvpn-monitor
o http://<OpenVPN-server-Address/
secondo il nostro reindirizzamento.
Ed ecco qua. Bello, vero? Tutto il merito va a furlongm. Come puoi vedere, abbiamo lo stato della connessione per i miei client OpenVPN connessi localmente.
Questo segna la fine della nostra guida su come monitorare le connessioni OpenVPN utilizzando lo strumento openvpn-monitor. Divertiti.
Riferimento
openvpn-monitor
Esercitazioni correlate
Installa e configura il server OpenVPN su Ubuntu 20.04
Configura l'autenticazione basata su LDAP OpenVPN
Assegna indirizzi IP statici ai client OpenVPN
Configura il client VPN strongSwan su Ubuntu 18.04/CentOS 8