Salut,
J'ai envie de faire mon chieur ^^, non j'ai juste quelques suggestion.
Tous d'abord coté du script de création d'user :
- Personnellement je partirai plus sur un script qui s'execute avec des paramètres, du genre :
./user.sh add username
ce qui permets de pouvoir automatisé totalement le script.
- Au niveau de l'IP mis dans le fichier de configuration, ton script ne récupéra pas forcément la bonne IP (sauf dans le cas d'un dédiés externalisé), mais le gars qui monte sa seedbox chez lui, il ce retrouvera avec l'IP local, et dans ce cas le VPN n'aura aucune utilité, tu peux la récupérer avec cette commande par exemple :
wget -qO- http://ifconfig.me/ip
- Dernier point sur script, enfin plutôt sur le fichier de configuration générer, il est possible d'intégrer toutes les clés et certification directement dans le fichier .ovpn, en utilisant des balises, comme indiqué
ici.
Concernant la configuration d'openvpn, elle est simple, fonctionnel, et sécure. Mais utilisé une authentification en plus pourrait être un plus. L'avantage d'openvpn, est que pour une authentification, il suffit de lancé un simple script bash, qui fait la vérification, le retour de ce script (exit 0 ou 1) définira le success ou non de l'authentification. Donc il serait facilement faisable, pour les personnes ayant utilisé le tuto mondédié sur rtorrent/rutorrent, de réutilisé le htdigest pour l'authentification VPN.
Voici une configuration que j'avais utilisé pour une authentification avec user unix :
/etc/openvpn/server-udp.conf :
##general
port 1443
proto udp
dev tun
server 10.5.0.0 255.255.255.0
##key
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
tls-auth /etc/openvpn/keys/ta.key 0
##option
persist-key
persist-tun
keepalive 5 60
reneg-sec 432000
##option authen.
comp-lzo
client-to-client
username-as-common-name
auth-user-pass-verify /etc/openvpn/script/login.sh via-env
script-security 3 system
client-connect /etc/openvpn/script/connect.sh
client-disconnect /etc/openvpn/script/disconnect.sh
##push to client
max-clients 50
push "persist-key"
push "persist-tun"
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
## log-status
status /etc/openvpn/log/udp.log
log-append /etc/openvpn/log/openvpn.log
verb 3
/etc/openvpn/script/login.sh :
#!/bin/bash
SALT="$(cat /etc/shadow | grep $username | cut -d: -f2 | cut -d$ -f3)"
PWDHASH="$(mkpasswd -msha-512 $password $SALT)"
PWDSHADOW="$(cat /etc/shadow | grep $username | cut -d: -f2)"
[ "$common_name" == "$username" ] && [ "$PWDHASH" == "$PWDSHADOW" ] && echo "username : $username" && echo "Authentication Ok." && exit 0 || echo "authentication Failed.";exit 1
/etc/openvpn/script/connect.sh :
#!/bin/bash
DATE=$(date)
echo "$DATE : $common_name on $trusted_ip:$trusted_port to $ifconfig_pool_remote_ip:$remote_port_1 Received:$bytes_received and sent $bytes_sent" >> /etc/openvpn/log/connect.log
/etc/openvpn/script/disconnect.sh :
#!/bin/bash
DATE=$(date)
echo "$DATE : $common_name disconnected" >> /etc/openvpn/log/connect.log
Donc voilou, j'aime bien faire le chieur, ^^
Bonne soirée,