OpenVPN road-warrior et Shorewall

Posted on Sun 22 October 2017 in Libre

Pour l'usage en déplacement/depuis l'étranger/sur des Wi-Fi pourris, il est intéréssant de disposer d'une connexion VPN.

J'utilise pour cela l’intéressant script "OpenVPN road-warrior", certes très vindicatif dans le titre, néanmoins très efficace : https://github.com/Nyr/openvpn-install

Le setup est le suivant :

utlisateur <=== vpn ===> Serveur + OpenVPN <---> Internet

Depuis quelques temps j'ai pris gout à utiliser Shorewall afin de maîtriser simplement la configuration firewall de ce serveur.

L'utilisation concurrente de Shorewall + OpenVPN est possible il faut tout de même prendre soin de paramétrer tout cela correctement

Fichier /etc/shorewall/interfaces

Rien de transcendant, juste déclarer l'interface vpn

#ZONE   INTERFACE       OPTIONS
net     eth0            dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0
vpn     tun0            dhcp
Fichier /etc/shorewall/masq

Il faut indiquer à Shorewall qu'il faut effectuer un masquerade du traffic venant du sous-réseau 10.8.0.0/24 (réseau VPN) vers l'interface eth0 (patte Internet sur le serveur)

eth0    10.8.0.0/24
Fichier /etc/shorewall/policy

Autoriser le traffic provenant du VPN vers eth0 dans le fichier policy

###############################################################################
#SOURCE         DEST            POLICY          LOG LEVEL       LIMIT:BURST
[...]
vpn             net             ACCEPT
Fichier /etc/shorewall/rules

Autoriser le service OpenVPN à écouter sur le port que vous utilisez. A noter que 1194 est parfois filtré, préférez-y un port plus standard (443/80/53/...) ( voir https://memo-linux.com/openvpn-sur-le-port-443-partage-avec-un-serveur-web/)

# OpenVPN
ACCEPT          net             $FW       udp     1194
Fichier /etc/shorewall/tunnels

Dernier fichier a ne pas oublier sinon ça ne peut pas fonctionner, déclarer le tunnel. Adapter avec le port UDP ou TCP choisit et l'IP publique de votre serveur

#TYPE         ZONE           GATEWAY        GATEWAY_ZONE
openvpn:1194  net            IP_SERVEUR
Test de connexion

Tout est prêt, plus qu'a tester si tout fonctionne.

Tester la connexion OpenVPN. Si connexion OK on passe à la suite.

Lancer un ping vers une IP, si shorewall n'a pas été redémarré ça ne doit pas passer. Relancer shorewall en mode safe (rollback vers ancienne configuration automatique)

shorewall safe-restart

Le ping doit maintenant passer > la connexion sort bien par eth0 vous avez un OpenVPN qui roule pour vous connecter de n'importe ou!