Mes notes de configuration pour OpenVPN

Intro

OpenVPN a de multiples éléments paramétrables.

Je vais mettre ici quelques éléments spécifiques que j'ai déjà eu à utiliser. J'utilise traditionnellement un Debian pour mettre en place mes serveurs OpenVPN.

Coté client ou coté serveur?

On peut paramétrer son tunnel VPN du coté du serveur ou du coté du client. La principale différence est qu'il faudra utiliser le mot clé push lorsque l'on modifie le fichier de configuration du coté du serveur, également la configuration sera appliquée sur l'ensemble des clients.

Exemple

Voyons la difference de synthaxe évoquée juste au dessus en mettant en place la même configuration des deux cotés. Ici avec le paramétrage du serveur DNS.

dhcp-option DNS 192.168.0.200
push "dhcp-option DNS 192.168.0.200"

DNS

Configurer les serveurs dns et le domaine

dhcp-option DNS 192.168.0.200
dhcp-option DOMAIN domain.local

Filtrage

En terme de sécurité il peut être intéressant de restreindre les flux accessibles via le VPN, pour cela on pourra utiliser la commande iptables.

Netfilter - iptables

root@host:~# iptables -A FORWARD -o enp4s0 -p tcp --dport 3389 -j ACCEPT
root@host:~# iptables -A FORWARD -i enp4s0 -p tcp --sport 3389 -j ACCEPT
root@host:~# iptables -A FORWARD -o enp4s0 -p tcp --dport 53 -j ACCEPT
root@host:~# iptables -A FORWARD -o enp4s0 -p udp --dport 53 -j ACCEPT
root@host:~# iptables -A FORWARD -i enp4s0 -p udp --sport 53 -j ACCEPT
root@host:~# iptables -A FORWARD -i enp4s0 -p tcp --sport 53 -j ACCEPT
root@host:~# iptables -A FORWARD -o enp4s0 -j DROP

Routage

Mode passerelle

On peut activer le routage pour donner accès à l'intégralité d'un réseau.

net.ipv4.ip_forward = 1
root@host:~# sysctl -p /etc/sysctl.conf
root@host:~# iptables -t nat -A POSTROUTING -s 10.50.8.0/24 -o ens192 -j MASQUERADE

Ajouter une route pour un réseau

route 192.168.1.0 255.255.255.0

Exclure des routes

Ici un cas ou les adresses 192.168.0.251 et 192.168.0.250 seront accessibles via le VPN, le reste du réseau 192.168.0.0/24 sera quand à lui accessible via le LAN ou la passerelle par défaut interne. C'est particulièrement utile lorsque le Client et le Serveur utilisent le même plan d'adressage.

route 192.168.0.251 255.255.255.255
route 192.168.0.250 255.255.255.255
route 192.168.0.0 255.255.255.0 net_gateway

Amérliorer la sécurité

ta.key

Pour se prémunir du scan de ports, attaque de type DOS sur le port UDP OpenVPN, des initiations de négociation SSL/TLS depuis des machines non authorisées et des vulnérabilités de type buffer overflow dans le protocole SSL/TLS (source) nous pouvons ajouter la protection clé HMAC.

root@host:~# openvpn --genkey --secret /etc/openvpn/pki/issued/ta.key
tls-crypt /etc/openvpn/pki/issued/ta.key 0
tls-crypt ta.key 1

Méthode de vérification du certificat serveur

OpenVPN donne la possibilité de se prémunir des attaques de type Man-in-the-Middle. Si cela n'est pas paramétré le message : WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. devrait apparaitre dans les logs du client.

remote-cert-tls server

Divers

status /var/log/openvpn-status.log
root@host:~# cat /etc/openvpn/openvpn-status.log
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :