Amélioration partie serveur
This commit is contained in:
parent
51b0ab8b5e
commit
118abf445a
153
HowtoOpenVPN.md
153
HowtoOpenVPN.md
|
@ -38,18 +38,14 @@ library versions: LibreSSL 2.6.3, LZO 2.10
|
||||||
|
|
||||||
## Configuration serveur
|
## Configuration serveur
|
||||||
|
|
||||||
On met en place une PKI sur le serveur via [shellpki](HowtoShellpki) :
|
On met en place une PKI sur le serveur via [shellpki](https://gitea.evolix.org/evolix/shellpki). Voir le README du projet.
|
||||||
|
|
||||||
|
On génère le dhparam :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
# mkdir /etc/openvpn/ssl
|
# openssl dhparam -out /etc/shellpki/dh2048.pem 2048
|
||||||
# git clone https://gitea.evolix.org/evolix/shellpki.git /etc/openvpn/ssl
|
|
||||||
# cd /etc/openvpn/ssl
|
|
||||||
# sh shellpki.sh init
|
|
||||||
# sh shellpki.sh create
|
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Mettre un _Common Name_ du type `fw.vpn.example.com` avec une durée de plusieurs années. Pour plus d'informations, voir [HowtoShellpki](HowtoShellpki)
|
|
||||||
|
|
||||||
La configuration se fait via le fichier `/etc/openvpn/server.conf` avec les paramètres suivants à adapter :
|
La configuration se fait via le fichier `/etc/openvpn/server.conf` avec les paramètres suivants à adapter :
|
||||||
|
|
||||||
* `server` : réseau privé sur lequel le serveur VPN et les clients communiqueront
|
* `server` : réseau privé sur lequel le serveur VPN et les clients communiqueront
|
||||||
|
@ -62,84 +58,38 @@ La configuration se fait via le fichier `/etc/openvpn/server.conf` avec les para
|
||||||
### Serveur sous Debian
|
### Serveur sous Debian
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
#
|
|
||||||
# General settings
|
|
||||||
#
|
|
||||||
|
|
||||||
user nobody
|
user nobody
|
||||||
group nogroup
|
group nogroup
|
||||||
|
|
||||||
# Do not try to re-read key file and reopen tun device on restart since it runs
|
local 198.51.100.1
|
||||||
# without root privileges.
|
port 1194
|
||||||
|
proto udp
|
||||||
|
dev tun
|
||||||
|
mode server
|
||||||
|
keepalive 10 120
|
||||||
|
|
||||||
|
cipher AES-128-CBC # AES
|
||||||
|
compress lzo
|
||||||
|
|
||||||
persist-key
|
persist-key
|
||||||
persist-tun
|
persist-tun
|
||||||
#persist-remote-ip
|
|
||||||
#persist-local-ip
|
|
||||||
|
|
||||||
# Status file
|
status /var/log/openvpn-status.log
|
||||||
status /var/log/openvpn/status.log 1
|
log-append /var/log/openvpn.log
|
||||||
#log /var/log/openvpn/openvpn.log
|
|
||||||
# Logging verbosity. Logs are sent to syslog.
|
|
||||||
verb 3
|
|
||||||
|
|
||||||
# Keepalive
|
ca /etc/shellpki/cacert.pem
|
||||||
keepalive 10 120
|
cert /etc/shellpki/certs/fw.vpn.example.com.crt
|
||||||
#reneg-sec 300
|
key /etc/shellpki/private/fw.vpn.example.com-1621504035.key
|
||||||
|
dh /etc/shellpki/dh2048.pem
|
||||||
|
|
||||||
#
|
server 192.0.2.0 255.255.255.0
|
||||||
# Network settings
|
|
||||||
#
|
|
||||||
|
|
||||||
port 1194
|
push "route 192.0.3.0 255.255.255.0"
|
||||||
proto udp
|
|
||||||
dev tun
|
|
||||||
|
|
||||||
# Enable compression
|
|
||||||
# comp-lzo
|
|
||||||
# compress lzo (à partir d'OpenVPN 2.4)
|
|
||||||
|
|
||||||
#
|
|
||||||
# key/certificate
|
|
||||||
#
|
|
||||||
|
|
||||||
ca /etc/openvpn/ssl/ca/cacert.pem
|
|
||||||
cert /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.crt
|
|
||||||
key /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.key
|
|
||||||
dh /etc/openvpn/ssl/ca/dh2048.pem
|
|
||||||
|
|
||||||
#
|
|
||||||
# private network
|
|
||||||
#
|
|
||||||
|
|
||||||
server 192.0.2.0 255.255.0.0
|
|
||||||
mode server
|
|
||||||
|
|
||||||
# Management interface (used by check_openvpn for Nagios)
|
# Management interface (used by check_openvpn for Nagios)
|
||||||
management 127.0.0.1 1195 /etc/openvpn/management-pwd
|
management 127.0.0.1 1195 /etc/openvpn/management-pwd
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Générer un mot de passe pour l'accès à l'interface de management (nécessaire au check Nagios) :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# apg -n1 -m 12 > /etc/openvpn/management-pwd
|
|
||||||
~~~
|
|
||||||
|
|
||||||
On peut ensuite utiliser le [check NRPE OpenVPN suivant](https://gitea.evolix.org/evolix/EvoBSD/src/branch/dev/roles/openvpn/files/check_openvpn.pl):
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# apt install libnet-telnet-perl # Debian
|
|
||||||
# pkg_add p5-Net-Telnet # OpenBSD
|
|
||||||
# /usr/lib/nagios/plugins/check_openvpn.pl -H 127.0.0.1 -p 1195 -P $(cat /etc/openvpn/management-pwd)
|
|
||||||
~~~
|
|
||||||
|
|
||||||
On peut également utiliser le [check NRPE suivant](https://gitea.evolix.org/evolix/EvoBSD/src/branch/dev/roles/openvpn/files/check_openvpn_certificates.sh) pour vérifier les dates d'expirations de la CA et du certificat serveur:
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# /usr/lib/nagios/plugins/check_openvpn_certificates.sh
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Un script [cert-expirations.sh](https://gitea.evolix.org/evolix/shellpki/src/branch/dev/cert-expirations.sh) peut également être mis en cron pour avertir régulièrement des prochaines expirations des certificats clients et serveur. Voir [HowtoOpenVPN#recevoir-par-mail-un-récapitulatif-des-prochaines-expirations-des-certificats-openvpn]()
|
|
||||||
|
|
||||||
### Serveur sous OpenBSD
|
### Serveur sous OpenBSD
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
|
@ -154,7 +104,7 @@ verb 4
|
||||||
user nobody
|
user nobody
|
||||||
group nobody
|
group nobody
|
||||||
chroot /var/empty
|
chroot /var/empty
|
||||||
#compress lzo
|
compress lzo
|
||||||
|
|
||||||
max-clients 50
|
max-clients 50
|
||||||
keepalive 15 120
|
keepalive 15 120
|
||||||
|
@ -225,6 +175,46 @@ Si on ne veut pas avoir à redémarrer OpenVPN, on peut également utiliser un c
|
||||||
0 4 * * 6 cp /var/log/openvpn.log /var/log/openvpn.log.$(date +\%F) && echo "$(date +\%F' '\%R) - logfile turned over via cron" > /var/log/openvpn.log && gzip /var/log/openvpn.log.$(date +\%F) && find /var/log/ -type f -name "openvpn.log.*" -mtime +365 -exec rm {} \+
|
0 4 * * 6 cp /var/log/openvpn.log /var/log/openvpn.log.$(date +\%F) && echo "$(date +\%F' '\%R) - logfile turned over via cron" > /var/log/openvpn.log && gzip /var/log/openvpn.log.$(date +\%F) && find /var/log/ -type f -name "openvpn.log.*" -mtime +365 -exec rm {} \+
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
### Commun à Debian et OpenBSD
|
||||||
|
|
||||||
|
Générer un mot de passe pour l'accès à l'interface de management (nécessaire au check Nagios) :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# apg -n1 -m 12 > /etc/openvpn/management-pwd
|
||||||
|
~~~
|
||||||
|
|
||||||
|
On peut utiliser le [check NRPE OpenVPN suivant](https://gitea.evolix.org/evolix/EvoBSD/raw/branch/dev/roles/openvpn/files/check_openvpn.pl):
|
||||||
|
|
||||||
|
~~~
|
||||||
|
## Debian
|
||||||
|
# apt install libnet-telnet-perl
|
||||||
|
# /usr/local/lib/nagios/plugins/check_openvpn -H 127.0.0.1 -p 1195 -P $(cat /etc/openvpn/management-pwd)
|
||||||
|
|
||||||
|
## OpenBSD
|
||||||
|
# pkg_add p5-Net-Telnet
|
||||||
|
# /usr/local/libexec/nagios/plugins/check_openvpn.pl -H 127.0.0.1 -p 1195 -P $(cat /etc/openvpn/management-pwd)
|
||||||
|
~~~
|
||||||
|
|
||||||
|
On peut également utiliser le [check NRPE suivant](https://gitea.evolix.org/evolix/EvoBSD/raw/branch/dev/roles/openvpn/files/check_openvpn_certificates.sh) pour monitoring les dates d'expirations de la CA et du certificat serveur:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# /usr/local/lib/nagios/plugins/check_openvpn_certificates.sh # Debian
|
||||||
|
# /usr/local/libexec/nagios/plugins/check_openvpn_certificates.sh # OpenBSD
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Un script [cert-expirations.sh](https://gitea.evolix.org/evolix/shellpki/src/branch/dev/cert-expirations.sh) peut être mis en cron pour avertir régulièrement des prochaines expirations des certificats clients et serveur :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
@monthly /usr/share/scripts/cert-expirations.sh | mail -E -s "PKI VPN XXX : recapitulatif expirations" mail@example.com
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Penser à remplacer :
|
||||||
|
|
||||||
|
* L'horaire d'exécution du cron, si voulu ;
|
||||||
|
* L'emplacement des certificats dans le script (/etc/shellpki/certs/), ceux-ci peuvent se trouver dans "/etc/openvpn/ssl/certs/" ou ailleurs encore ;
|
||||||
|
* Le nom du surveur XXX dans le sujet "PKI VPN XXX" ;
|
||||||
|
* L'adresse mail de contact.
|
||||||
|
|
||||||
## Configuration client
|
## Configuration client
|
||||||
|
|
||||||
Pour simplifier la configuration pour les utilisateurs finaux on peut générer un fichier de configuration embarquant les certificats :
|
Pour simplifier la configuration pour les utilisateurs finaux on peut générer un fichier de configuration embarquant les certificats :
|
||||||
|
@ -237,7 +227,7 @@ proto udp
|
||||||
tls-client
|
tls-client
|
||||||
remote vpn.example.com 1194
|
remote vpn.example.com 1194
|
||||||
|
|
||||||
#compress lzo
|
compress lzo
|
||||||
nobind
|
nobind
|
||||||
user nobody
|
user nobody
|
||||||
group nogroup
|
group nogroup
|
||||||
|
@ -433,21 +423,6 @@ L'erreur `Bad LZO decompression header byte` signifie que la compression LZO n'
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
### Recevoir par mail un récapitulatif des prochaines expirations des certificats OpenVPN
|
|
||||||
|
|
||||||
Un script [cert-expirations.sh](https://gitea.evolix.org/evolix/shellpki/src/branch/dev/cert-expirations.sh) peut être mis en cron pour avertir régulièrement des prochaines expirations des certificats clients et serveur :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
@monthly /usr/share/scripts/cert-expirations.sh | mail -E -s "PKI VPN XXX : recapitulatif expirations" mail@example.com
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Penser à remplacer :
|
|
||||||
|
|
||||||
* L'horaire d'exécution du cron, si voulu ;
|
|
||||||
* L'emplacement des certificats dans le script (/etc/shellpki/certs/), ceux-ci peuvent se trouver dans "/etc/openvpn/ssl/certs/" ou ailleurs encore ;
|
|
||||||
* Le nom du surveur XXX dans le sujet "PKI VPN XXX" ;
|
|
||||||
* L'adresse mail de contact.
|
|
||||||
|
|
||||||
### Permettre aux clients de conserver la même IP au fil de connexions
|
### Permettre aux clients de conserver la même IP au fil de connexions
|
||||||
|
|
||||||
#### ipp.txt
|
#### ipp.txt
|
||||||
|
|
Loading…
Reference in a new issue