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
|
||||
|
||||
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
|
||||
# git clone https://gitea.evolix.org/evolix/shellpki.git /etc/openvpn/ssl
|
||||
# cd /etc/openvpn/ssl
|
||||
# sh shellpki.sh init
|
||||
# sh shellpki.sh create
|
||||
# openssl dhparam -out /etc/shellpki/dh2048.pem 2048
|
||||
~~~
|
||||
|
||||
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 :
|
||||
|
||||
* `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
|
||||
|
||||
~~~
|
||||
#
|
||||
# General settings
|
||||
#
|
||||
|
||||
user nobody
|
||||
group nogroup
|
||||
|
||||
# Do not try to re-read key file and reopen tun device on restart since it runs
|
||||
# without root privileges.
|
||||
local 198.51.100.1
|
||||
port 1194
|
||||
proto udp
|
||||
dev tun
|
||||
mode server
|
||||
keepalive 10 120
|
||||
|
||||
cipher AES-128-CBC # AES
|
||||
compress lzo
|
||||
|
||||
persist-key
|
||||
persist-tun
|
||||
#persist-remote-ip
|
||||
#persist-local-ip
|
||||
|
||||
# Status file
|
||||
status /var/log/openvpn/status.log 1
|
||||
#log /var/log/openvpn/openvpn.log
|
||||
# Logging verbosity. Logs are sent to syslog.
|
||||
verb 3
|
||||
status /var/log/openvpn-status.log
|
||||
log-append /var/log/openvpn.log
|
||||
|
||||
# Keepalive
|
||||
keepalive 10 120
|
||||
#reneg-sec 300
|
||||
ca /etc/shellpki/cacert.pem
|
||||
cert /etc/shellpki/certs/fw.vpn.example.com.crt
|
||||
key /etc/shellpki/private/fw.vpn.example.com-1621504035.key
|
||||
dh /etc/shellpki/dh2048.pem
|
||||
|
||||
#
|
||||
# Network settings
|
||||
#
|
||||
server 192.0.2.0 255.255.255.0
|
||||
|
||||
port 1194
|
||||
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
|
||||
push "route 192.0.3.0 255.255.255.0"
|
||||
|
||||
# Management interface (used by check_openvpn for Nagios)
|
||||
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
|
||||
|
||||
~~~
|
||||
|
@ -154,7 +104,7 @@ verb 4
|
|||
user nobody
|
||||
group nobody
|
||||
chroot /var/empty
|
||||
#compress lzo
|
||||
compress lzo
|
||||
|
||||
max-clients 50
|
||||
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 {} \+
|
||||
~~~
|
||||
|
||||
### 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
|
||||
|
||||
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
|
||||
remote vpn.example.com 1194
|
||||
|
||||
#compress lzo
|
||||
compress lzo
|
||||
nobind
|
||||
user nobody
|
||||
group nogroup
|
||||
|
@ -433,21 +423,6 @@ L'erreur `Bad LZO decompression header byte` signifie que la compression LZO n'
|
|||
|
||||
## 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
|
||||
|
||||
#### ipp.txt
|
||||
|
|
Loading…
Reference in a new issue