Mit open vpn kann mann mal abgesehen vom Anonymen surfen auch noch andere Optionen umsetzen obwohl das die primäre Funktion von einem Vpn ist.
ich Bastel grade noch ein einer User/pass Lösung mit Mysql Unterstützung um nicht für jeden Clienten ein Zertifikat erstellen zu müssen.
Der nächste schritt wäre dann da für eine Php Script zu erstellen von welchem man die User anlegen & löschen kann.
Dazu benutze ich das
Plugin openvpn-auth-pam.so in Verbindung mit
leider Funktioniert das ganze noch nicht so richtig.
mein Script sieht bisher wie folgt aus:
config.sh:
Code:
#!/bin/bash
##Dababase Server
HOST='localhost'
#Default port = 3306
PORT='3306'
#Username
USER='dein user'
#Password
PASS='dein passwort'
#database name
DB='vpn_db
exit 0
connect.sh:
Code:
#!/bin/bash
. /etc/openvpn/scripts/config.sh
##insert data connection to table log
mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e "INSERT INTO log (log_id,user_id,log_trusted_ip,log_trusted_port,log_remote_ip,log_remote_port,log_start_time,log_end_time,log_received,log_send) VALUES(NULL,'$common_name','$trusted_ip','$trusted_port','$ifconfig_pool_remote_ip','$remote_port_3306',now(),'0000-00-00 00:00:00','$bytes_received','$bytes_sent')"
##set status online to user connected
mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e "UPDATE user SET user_online='yes' WHERE user='$common_name'"
exit 0
disconnect.sh:
Code:
#!/bin/bash
. /etc/openvpn/scripts/config.sh
##set status offline to user disconnected
mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e "UPDATE user SET user_online='no' WHERE user='$common_name'"
##insert data disconnected to table log
mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e "UPDATE log SET log_end_time=now(),log_received='$bytes_received',log_send='$bytes_sent' WHERE log_trusted_ip='$trusted_ip' AND log_trusted_port='$trusted_port' AND user='$common_name' AND log_end_time='0000-00-00 00:00:00'"
exit 0
login.sh
Code:
#!/bin/bash
. /etc/openvpn/script/config.sh
##Authentication
user_id=$(mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -sN -e "select user_id from user where user_id = '$username' AND user_pass = '$password' AND user_enable=1 AND user_start_date != user_end_date AND TO_DAYS(now()) >= TO_DAYS(user_start_date) AND (TO_DAYS(now()) <= TO_DAYS(user_end_date) OR user_end_date='0000-00-00')")
##Check user
[ "$user_id" != '' ] && [ "$user_id" = "$username" ] && echo "user : $username" && echo 'authentication ok.' && exit 0 || echo 'authentication failed.'; exit 1
Das ist der Teil für das login in der Server.conf
Code:
#client-cert-not-required
username-as-common-name
##user/pass auth from mysql
plugin /usr/local/lib/openvpn/openvpn-auth-pam.so openvpn
;auth-user-pass-verify /etc/pam.d/openvpn via-env
##script connect-disconnect
script-security 2
;learn-address /etc/openvpn/extra scripts/learn-address.sh
client-connect /etc/openvpn/scripts/connect.sh
client-disconnect /etc/openvpn/scripts/disconnect.sh
client-login /etc/openvpn/scripts/login.sh
vieleicht kann mir ja jemand bei der Lösung helfen?
mfg