Openvpn e monitoraggio utenti

Buon giorno a tutti
ho un certo numero di utenti che hanno un account openvpn sul server fedora. Siccome devo monitorarli come e quando si collegano volevo chiedere un cosiglio ai più esperti per un’ interfaccia grafica che mi dia l’ equivalente dei comandi di sistema
w per vedere chi c’è
last per vedere nel mese i collegamenti
ac -p per vedere le ore.
Ora ho installato Openvpn-control che mi dà l’ equivalente del comando w. Mi dice insomma chi è collegato in quel momento ma non mi basta. Non mi dice infatti quanti e quando un utente si è collegato. Tra l’ altro non riesco a trovare documentazione o istruzioni neanche di quel programma.
Queste informazioni mi servono per fatturare a fine mese, ma al momento stò facendo ad occhio.
Ringrazio anticipatamente per i suggerimenti.

David

bhè… perché non ti fai uno script che legge i log.

Io al posto tuo farei così, aggiungi la riga

status /etc/openvpn/openvpn-status.log

nella configurazione server, questo ti crea un file log con chi è connesso in quel momento, imposta cron per eseguirti ogni minuto uno script che controlla questo file e controlla chi è connesso, questo script ovviamente devi farlo in modo che registri in qualche posto i dati. In questo modo sai chi si connette e per quanto tempo.

Io ho sintetizzato molto, ma il sistema è fattibilissimo.
Ciao.

Grazie della celere risposta. Domani mattina provo subito a mettere in pratica. Mi va meglio come sistema, perché così posso controllare via ssh.

Ecco un possibile risultato ed è un grande risultato. Però volevo disturbarti per un consiglio di come impostare lo script. L’output di pratenza è questo:

OpenVPN CLIENT LIST
Updated,Sat Mar 27 10:03:17 2010
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
client1,78.21.242.104:1045,10055791,240948750,Fri Mar 26 23:22:59 2010
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.6,client1,78.21.242.104:1045,Sat Mar 27 09:26:44 2010
GLOBAL STATS
Max bcast/mcast queue length,0
END

Le mie domande sono invece:

  1. Una tua opinione su quale indirizzo sia 78.21.242.104.
  2. Dove posso trovare le informazioni dei distacchi. Connected since mi và bene, ma la data di distacco non ce la ho. Volevo chiedere se dovevo sul serio nello script ricavarmela così:
  3. Cron al tempo t esegue lo script
  4. Lo script legge dal file memorizzato ciclo di cron t-1 quali dovrebbero essere gli utenti e li memorizza su un array A
  5. Lo script legge dal file openvpn-status.log gli utenti collegati adesso e li memorizza sull’ array B
  6. Lo script confronta gli array A e B e dichiara chiusi gli utenti che non compaiono più memorizzandoli sull’ array C.
    Non sono un programmatore e mi scuso per le eventuali inesattezze espositive. Spero però di aver trasferito il concetto.
    David

Quello è l’ indirizzo pubblico sulla rete internet, 10.8.0.6 è invece l’ indirizzo “virtuale” che ha client1 all’ interno della vpn

Ma a te cosa interessa sapere? il tempo complessivo di connessione o anche quando sono connessi?

Comunque io l’ algoritmo lo farei così:

hai tre insiemi, la totalità dei client (1) , i client connessi (2) ( che all’ inizio è un’ insieme vuoto, lo chiamiamo insieme 2), e i client presenti nel file log(3), quindi attualemente connessi.
Fai il primo run dello script, lui che ne so… trova client1 e client3 connessi, se questi non sono presenti nell’ insieme 2 allora scrivi la loro connessione su database , poi lo script fa un’ altro controllo, cioè se qualche client presente in insieme 2 non è presente nello script allora scrivi su database la sua disconnessione.

In sintesi:

se client è in (3) ma non in (2) allora si è connesso
se client è in (2) ma non in (3) allora si è disconnesso

L’ insieme 2 lo tieni aggiornato su una tabella del database.

In questo modo ottieni i timestamp di connessione e disconnessione di tutti i client. Basta fare un altro script che magari a fine mese legge il database e “contabilizza” questi tempi.

Se hai pochi clienti usa python e sqlite, se ne hai molti usa python e mysql.
Ciao.

Ottimo. Ma è di gran lunga al limite delle mie modeste capacità di programmazione. Anche se la risoluzione di questo problema è assolutamente di importanza strategica per la strategia di sviluppo del mio piccolo studio, implementarlo significherebbe distogliere una grande quantità di ore dal mio vero mestiere. Siccome credo di non essere l’ unico ad avere questo problema ti chiedevo se sai se ci sono soluzioni di connessione ad un database per gli accessi di vpn anche a pagamento. Con ssh io mi vedo gli accessi e la storia degli accessi ogni sera, ed è un (ottimo) programma degli anni 70. Openvpn è recente e non esiste un sistema già pronto per avere il log degli accessi! Mi pare impossibile.
Ringrazio anticipatamente

David

Bhè… se ti sta bene un file di log allora prova a guardare su /var/log/syslog , lì dovresti trovare i log di openvpn

Sarebbe un inizio. Però /var/log/syslog non esiste da me. Forse devo mettere qualche direttiva sul server?
Mi servirebbe intanto l’ equivalente in openvpn del comando ssh last, ovvero un output del genere:
[root@pioneer ~]# last last root
root pts/0 10.8.0.14 Thu Apr 1 00:39 still logged in
root pts/0 10.8.0.14 Thu Apr 1 00:06 - 00:32 (00:26)
root pts/0 10.8.0.14 Wed Mar 31 23:54 - 00:05 (00:11)
root pts/0 192.168.9.27 Wed Mar 31 12:39 - 15:04 (02:25)
root pts/0 192.168.9.2 Wed Mar 31 12:33 - 12:33 (00:00)
root pts/0 192.168.9.2 Wed Mar 31 12:21 - 12:33 (00:12)
root pts/0 192.168.9.2 Wed Mar 31 12:08 - 12:19 (00:10)
root pts/0 192.168.9.2 Wed Mar 31 10:15 - 10:16 (00:01)
root pts/0 192.168.9.2 Wed Mar 31 10:02 - 10:02 (00:00)
root pts/0 192.168.9.27 Mon Mar 29 14:45 - 20:27 (05:42)
root pts/0 192.168.9.2 Sun Mar 28 23:42 - 00:55 (01:13)
root pts/0 10.8.0.18 Sun Mar 28 23:16 - 23:21 (00:05)

Possibile che non lo abbiano previsto?

nel file di configurazione del server c’è una cosa del genere ?

[code]

log in /var/log

status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3 [/code]

Ok virus ti ringrazio. E’ già un ottimo passo avanti. Ho attivato log append ed ora mi tiene la storia perlomeno dei collegamenti. Già comincio a fidarmi di più di questo attrezzo.
Ma incredibilmente mi segnala le connessioni ma non i distacchi. Anche con i verbose maggiori di 3.
Mi pare che i programmatori rispetto a ssh stanno veramente andando indietro come i gamberi. Come mai esistono applicazioni per controllare il tostapane con linux, e nessuna applicazione per controllare gli utenti openvpn. Credo veramente che il buon sevy72 potrebbe trovare una nicchia per sviluppare l’ applicativo di cui sopra.