Comment créer un kill switch VPN sous Linux avec UFW
Un kill switch VPN est un ensemble de règles de pare-feu qui arrêteront tout le trafic Internet lorsque votre VPN n’est pas connecté. Ils sont entièrement automatisés, le kill switch n’intervenant qu’en cas de problème avec votre connexion sécurisée.
Si vous vous êtes déjà reproché de naviguer alors que votre VPN était en panne sans même vous en rendre compte, créer un kill switch VPN avec UFW est une solution assez simple.
Qu’est-ce que l’UFW ?
UFW est un ensemble de scripts qui agissent comme un wrapper pour le pare-feu Linux iptables. iptables est un outil puissant, mais il n’est pas très simple à utiliser. UFW simplifie grandement la création d'un ensemble de règles utiles, surtout si vous n'êtes pas un utilisateur expérimenté de Linux qui connaît iptables par cœur.
Si vous avez déjà eu des difficultés avec les réseaux Linux mais que vous avez toujours besoin d'un pare-feu sécurisé et convivial, je recommande UFW.
Avant que tu commences
Avant de commencer, c'est une bonne idée de vous assurer que votre système est à jour. J'utiliserai Ubuntu 18 LTS pour ce guide. Tant que vous utilisez un système d'exploitation Linux basé sur Debian, les étapes seront identiques.
Utilisez les commandes suivantes pour mettre à jour votre système d'exploitation et les logiciels installés :
|_+_|Une fois l’exécution des commandes terminée, vous êtes prêt à commencer à configurer un kill switch VPN avec UFW.
Désactiver IPv6
De nombreux fournisseurs VPN ne disposent toujours pas d’une prise en charge adéquate d’IPv6, ce qui peut entraîner des fuites de données et d’autres problèmes. Je pense que c'est une bonne idée de désactiver complètement IPv6, sauf si vous êtes sûr que votre fournisseur le prend en charge.
Cette étape est facultative et vous pouvez l'ignorer si nécessaire.
Comment désactiver IPv6
Vous devrez désactiver IPv6 pour le système d’exploitation et UFW pour être sûr que votre fournisseur VPN ne transmettra pas le trafic IPv6 non chiffré. Dans Ubuntu, cela signifie que vous devrez modifier les fichiers suivants :
- /etc/sysctl.conf pour désactiver le réseau IPv6
- /etc/default/ufw pour empêcher UFW de créer automatiquement des règles IPv6
Pour commencer, ouvrez /etc/sysctl.conf pour l'édition avec la commande de console suivante :
|_+_|Faites défiler le fichier jusqu'à ce que vous voyiez une entrée pour net.ipv6.conf et ajoutez les trois lignes suivantes à la fin du fichier de configuration :
|_+_|Enregistrez vos modifications avec Ctrl+X , ET et forcez le système à recharger sysctl.conf et à appliquer vos modifications à l'aide de la commande :
|_+_|Vous pouvez confirmer que les modifications ont été appliquées avec succès en examinant les fichiers dans le /proc qui contiennent des informations sur votre système. Dans ce cas, utilisez la commande suivante pour vous assurer qu'IPv6 est désactivé au niveau du système d'exploitation :
|_+_|Si votre système affiche un 1 en sortie, IPv6 a été désactivé avec succès.
Ensuite, vous souhaiterez empêcher UFW de créer automatiquement des règles de pare-feu IPv6. Même si le protocole a été désactivé au niveau du système d’exploitation, UFW insiste obstinément pour ajouter des règles IPv6 jusqu’à ce qu’on lui dise d’arrêter. Cela réduira l'encombrement de votre ensemble de règles et pourrait vous éviter une certaine confusion plus tard.
Pour désactiver IPv6 dans UFW, ouvrez le fichier /etc/default/ufw pour l'édition à l'aide de cette commande :
|_+_|Faites défiler jusqu'à ce que vous trouviez le paramètre pour les règles IPv6 et modifiez-le pour lire :
|_+_|Presse Ctrl+X , ET pour enregistrer vos modifications. Si vous avez déjà activé UFW avant de démarrer ce projet, tu devras le désactiver avec la commande suivante :
|_+_|Maintenant que IPv6 a été désactivé à l'échelle du système, vous pouvez passer à la collecte des informations dont vous avez besoin pour configurer le kill switch VPN avec UFW.
Obtenir les informations dont vous avez besoin
Afin de configurer un kill switch VPN dans UFW, vous avez besoin de trois informations :
- Le adresse IP publique du serveur VPN auquel vous vous connectez
- Le port et protocole votre serveur utilise pour communiquer
- Le sous-réseau de votre réseau local
Ces paramètres se trouvent dans le fichier de configuration de votre serveur VPN. Afin d’obtenir des informations sur votre connexion, vous devrez parcourir la configuration et noter vos paramètres.
Afficher les paramètres du serveur VPN
Dans la plupart des cas, votre configuration VPN sera stockée dans /etc/openvpn , mais il est possible de l’installer n’importe où. Si vous ne voyez pas de *.ovpn ou *.conf déposer dans /etc/openvpn , vérifiez votre répertoire personnel.
Le port, protocole et adresse IP publique dont vous avez besoin sera en haut du fichier de configuration. J'ai utilisé cette commande pour afficher la mienne, comme ci-dessus :
|_+_|Notez les trois, car vous en aurez besoin pour configurer UFW.
Afficher le sous-réseau
Vous devrez également connaître le sous-réseau LAN sur lequel se trouve votre ordinateur. Dans de nombreux cas, ce sera 192.168.1.0/24 mais si vous n’êtes pas sûr, c’est une bonne idée de confirmer avant de configurer un kill switch VPN avec UFW.
Il existe plusieurs manières différentes d'obtenir les informations dont vous avez besoin, mais je recommande cette commande :
|_+_|Vous verrez un inet entrée pour chaque carte réseau de votre système. Dans la plupart des cas, il n'y aura que deux entrées ; un pour votre adaptateur de bouclage et un pour votre adaptateur LAN. Ignorer l'adaptateur de bouclage , qui aura toujours un sous-réseau de 127.0.0.1/8 , et notez l'autre entrée.
Configurer un kill switch VPN avec UFW
Une fois que vous aurez les informations dont vous avez besoin, vous pourrez configurer le kill switch VPN avec UFW. Il y a trois étapes dans ce processus :
- Autoriser explicitement le trafic LAN afin que les services réseau fonctionnent même lorsque le VPN est en panne
- Interdire tout autre trafic sauf s'il passe par la connexion cryptée
- Activer UFW pour activer l'ensemble de règles
Une fois que vous avez terminé, le kill switch VPN sera actif. Tous les paramètres resteront actifs même si vous redémarrez votre ordinateur.
Autoriser le trafic local
Il est important de permettre à votre ordinateur d'accéder au réseau local même lorsque le VPN est en panne si vous comptez sur les ressources du réseau local. Étant donné que la plupart des gens utilisent l’impression réseau et que de nombreux utilisateurs de Linux s’appuient sur SSH, je vous recommande vivement de ne pas sauter cette étape.
Veuillez noter que cela autorisera uniquement le trafic entrant ou sortant sur votre réseau local. Votre connexion Internet sera désactivée lorsque le VPN sera en panne comme prévu.
Vous devrez connaître votre sous-réseau LAN de l'étape précédente et utiliser ce sous-réseau à la place du mien sur 192.168.1.0/24 .
Utilisez les commandes suivantes pour autoriser l'accès LAN à votre ordinateur :
|_+_|Vous devriez recevoir une confirmation lorsque chaque règle est ajoutée, comme ci-dessus.
Configurer le kill switch VPN
Ensuite, vous configurerez le kill switch lui-même. Il n’y a que 4 ou 5 commandes que vous devrez saisir, mais cela coupera complètement votre connexion Internet lorsque le VPN sera déconnecté.
Pour commencer, définissez la stratégie par défaut pour refuser tout le trafic à l'aide de ces deux commandes :
|_+_|Ensuite, ajoutez une exception au jeu de règles vous permettant de vous connecter au serveur VPN. Sans cette ligne, vous ne pourrez pas vous authentifier et votre session VPN ne pourra pas démarrer correctement. Utilisez le VPN port, protocole et adresse IP publique vous avez pris note lors d’une étape précédente.
Une fois que vous êtes sûr d'avoir les informations dont vous avez besoin, exécutez cette commande avec vos propres paramètres à la place des miens :
|_+_|Maintenant que vous pouvez vous connecter au VPN via votre pare-feu, vous devrez écrire une règle ou deux forçant tout le trafic sortant à passer par cette connexion. Pour ce guide, je suppose que votre VPN se connecte à l'aide du périphérique réseau. réglage0 , puisque c'est la valeur par défaut.
Si vous avez besoin de confirmer, vous pouvez connectez-vous à votre VPN et courir adresse IP | grep inet encore. Vous verrez une entrée supplémentaire pour la connexion VPN et vous pourrez choisir le nom de votre adaptateur de tunnel VPN parmi les informations répertoriées.
Une fois que vous êtes sûr de savoir quel périphérique réseau votre VPN utilise, exécutez cette commande pour forcer tout le trafic sortant à utiliser le VPN :
|_+_|En option, vous souhaiterez peut-être autoriser les connexions via le VPN. Par exemple, vous pourriez avoir un client BitTorrent avec une interface Web à laquelle vous devez vous connecter depuis le Web, ou un service comme Plex qui nécessite des connexions entrantes via le VPN. Exécutez cette commande pour autoriser les connexions entrantes si vous le souhaitez :
|_+_|Une fois que vous avez exécuté la commande finale, votre kill switch VPN est prêt à être activé.
Activer UFW
L'activation d'UFW avec votre ensemble de règles personnalisé est simple. Exécutez cette commande et UFW démarrera au démarrage :
|_+_|Si vous devez désactiver votre kill switch, vous pouvez utiliser cette commande :
|_+_|UFW se souvient de l'ensemble de règles que vous avez créé, alors n'hésitez pas à activer et désactiver le pare-feu quand vous le souhaitez. N'oubliez pas que lorsque UFW est désactivé, il n'est pas garanti que votre trafic Internet soit crypté.
Bien sûr, il est facile de vérifier si UFW est actif ou non, et quelles règles sont appliquées à votre réseau. Vérifiez l'état d'UFW à l'aide de cette commande :
|_+_|C’est tout ce qu’il y a à faire pour configurer UFW, mais je vous recommande de suivre quelques étapes supplémentaires pour faciliter un peu l’utilisation d’OpenVPN avec un kill switch.
Configurer votre VPN pour vous connecter automatiquement
Bien que cette étape soit facultative, la configuration d’un kill switch ne sera utile que si vous vous connectez automatiquement à votre VPN. OpenVPN est notoirement lourd, mais il existe quelques astuces que vous pouvez utiliser pour rationaliser la connexion à votre VPN.
Voici ce que je recommande :
- Exécutez OpenVPN en tant que service à l'aide d'un *.conf fichier au lieu d'un *.ovpn profil
- Enregistrez votre nom d'utilisateur et votre mot de passe pour qu'OpenVPN puisse se connecter automatiquement
- Utilisez chmod pour verrouiller votre configuration VPN
Si vous mettez en œuvre ces trois suggestions, vous pourrez vous connecter automatiquement à votre VPN en sachant que vos informations de connexion sont sécurisées. Vous pourrez également contrôler votre connexion VPN depuis la console système, ce qui simplifie grandement l'arrêt et le redémarrage de la connexion VPN.
Exécutez OpenVPN en tant que service
La plupart des gens ont leur configuration VPN enregistrée avec un *.ovpn extension de fichier. Mais si vous changez l'extension en *.conf , et assurez-vous que le fichier se trouve dans /etc/openvpn , vous pourrez gérer la connexion comme vous le feriez pour n’importe quel autre service système.
Configurer votre connexion OpenVPN pour qu'elle s'exécute en tant que service est aussi simple que de renommer un fichier. Tout d'abord, déplacez votre existant *.ovpn profil à /etc/openvpn si ce n'est pas déjà là.
Renommez ensuite le profil pour lui donner un *.conf extension de fichier. Dans mon cas, j'ai enregistré le profil OpenVPN sous nord-usa.ovpn , je vais donc utiliser la commande suivante pour le renommer :
|_+_|Une fois renommé, vous pouvez démarrer et arrêter OpenVPN comme n’importe quel autre service systemd. Par exemple, j'utiliserais cette commande pour me connecter :
|_+_|Et cette commande pour se déconnecter :
|_+_|Vous remarquerez cependant qu’OpenVPN vous demande à chaque fois un nom d’utilisateur et un mot de passe. Ce n'est pas idéal, mais vous pouvez y remédier en enregistrant votre nom d'utilisateur et votre mot de passe.
Enregistrez votre nom d'utilisateur et votre mot de passe
Dans votre profil OpenVPN, il y a une ligne qui indique à votre client comment s'authentifier. Certaines organisations utilisent des clés RSA, mais presque tous les VPN grand public nécessitent un nom d'utilisateur et un mot de passe. Avec une seule modification de cette ligne, vous pouvez stocker votre mot de passe et ne jamais être invité à vous reconnecter.
Commencez par ouvrir votre profil OpenVPN pour le modifier. Vous souhaiterez remplacer le nom de fichier approprié, mais j'ai utilisé cette commande :
|_+_|Faites défiler jusqu'à ce que vous trouviez la ligne qui dit auth-utilisateur-pass , et modifiez-le pour qu'il se lise comme ceci :
|_+_|Cela dit à OpenVPN de regarder /etc/openvpn/passwd pour vos informations d'identification. Tout ce que vous avez à faire est de créer ce fichier avec votre nom d'utilisateur et votre mot de passe et OpenVPN se connectera automatiquement. Utilisez cette commande pour créer le fichier et l'ouvrir pour le modifier :
|_+_|La structure est très simple, votre nom d'utilisateur est sur la première ligne et votre mot de passe sur la seconde. Assurez-vous qu'il ressemble au mien ci-dessus, puis enregistrez avec Ctrl+X , ET .
Essayez maintenant de vous connecter à nouveau en utilisant cette commande, en remplaçant le nom de votre configuration :
|_+_|Vous remarquerez qu’il n’y a plus de demande de nom d’utilisateur et de mot de passe et votre session VPN démarre immédiatement.
Verrouillez la configuration
Chaque fois que vous stockez un nom d'utilisateur et un mot de passe dans un fichier en texte brut, vous souhaiterez le verrouiller pour vous assurer que les utilisateurs non autorisés ne peuvent pas y accéder. C'est également une bonne idée de s'assurer que le fichier en question appartient à l'utilisateur root. Notez que cela représente le minimum de sécurité : le hachage du fichier est une meilleure option, mais cela dépasse le cadre de ce guide.
Pour verrouiller la configuration, vous devrez suivre les étapes suivantes :
- Remplacez la propriété de /etc/openvpn/passwd et de votre profil VPN par l'utilisateur root
- Modifiez les autorisations sur les deux fichiers pour restreindre l'accès
Lorsque vous avez terminé, votre liste de répertoire devrait ressembler à la mienne ci-dessus.
Afin de changer de propriétaire, vous utiliserez le chown commande comme celle-ci, en remplaçant le nom de votre profil OpenVPN par le mien :
|_+_|Définir la propriété sur root empêchera les utilisateurs de modifier les autorisations pour quelque chose de moins sécurisé. Les autorisations correctes permettront uniquement à l'utilisateur root de lire le fichier, ce qui est tout ce dont OpenVPN a besoin pour pouvoir se connecter lorsqu'il est exécuté en tant que service. Aucun autre utilisateur de votre système ne pourra voir les informations d'identification en texte brut.
Pour modifier les autorisations, utilisez ces commandes :
|_+_|Une fois que vous avez terminé, listez le contenu du répertoire OpenVPN avec cette commande :
|_+_|Vous verrez que le propriétaire est désormais root et que seul root a un accès en lecture aux fichiers. Une fois que vous avez fini de verrouiller les autorisations de fichiers, vous pouvez configurer en toute sécurité OpenVPN pour qu'il démarre automatiquement au démarrage.
Connexion automatique à votre VPN
Il ne reste plus qu'à dire à systemd que vous souhaitez qu'OpenVPN se connecte au démarrage de votre ordinateur. Vous pouvez le faire avec une seule commande, en remplaçant le nom de votre profil par nord des États-Unis :
|_+_|Vous avez terminé et OpenVPN se connectera désormais à chaque démarrage de votre ordinateur. Il est entièrement protégé par le kill switch UFW et vous pouvez être sûr qu’aucun trafic non chiffré ne quittera le réseau depuis votre poste de travail.
Image supérieure sous licence pour réutilisation par codeproject.com