Comment créer un VPN Killswitch en utilisant iptables sur Linux
- 1901
- 53
- Anaïs Charles
Objectif
Utilisez des iptables pour bloquer toutes les connexions Internet dans le cas où votre VPN est déconnecté.
Distribution
Cela fonctionnera sur n'importe quelle distribution Linux.
Exigences
Une installation Linux fonctionnelle avec des privilèges racine.
Conventions
- # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de
Sudo
commande - $ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier
Introduction
Si vous êtes connecté à un VPN, vous avez besoin d'un killswitch. Non, ce n'est pas aussi métal que ça puisse paraître. C'est juste un mécanisme qui arrête votre connexion Internet lorsque vous êtes déconnecté du VPN. Il vous protège de la fuite par inadvertance des informations sensibles sur Internet lorsque la connexion VPN baisse.
Certains services VPN offrent aux clients un killswitch intégré, mais aucun n'est aussi fiable que l'utilisation d'iPtables. Étant donné qu'Iptables est indépendant de votre service VPN, et qu'il est intégré dans le noyau lui-même, il n'échouera pas lorsque votre VPN. Iptable est également une technologie de sécurité bien prouvée qui peut et assurera votre ordinateur en sécurité.
Sysctl
Avant de commencer à créer des règles iptables, vous devriez apporter des modifications à la sysctl
configuration. Dans certaines distributions, il est situé à / etc / sysctl.D / 99-SYSCTL.confli
. D'autres l'ont à / etc / sysctl.confli
. Ouvrez ce fichier, et localisez la ligne suivante et modifiez-la pour correspondre à l'exemple ici.
filet.ipv4.ip_forward = 1
Ensuite, ajoutez les lignes suivantes au bas du fichier. Assurez-vous de modifier les interfaces pour correspondre à celles de votre machine.
filet.ipv6.confli.tous.disable_ipv6 = 1 net.ipv6.confli.défaut.disable_ipv6 = 1 net.ipv6.confli.à.disable_ipv6 = 1 net.ipv6.confli.ETH0.disable_ipv6 = 1
Sauvegarder et quitter. Puis courez:
# sysctl -p
Configurer le document
Vous pouvez maintenant créer un fichier pour vos règles. Peu importe où vous le faites, alors faites-en un. Il sera appelé ipv4
Pour ce guide.
Démarrez le fichier en ajoutant les lignes suivantes. Ils seront le début et la fin du fichier.
* Filtre Commit
Règles de base
Avant de configurer les iptables pour permettre à tout trafic dont vous avez besoin pour changer sa valeur par défaut pour interdire tout le trafic. Ajoutez ces trois règles pour supprimer tout le trafic par défaut.
-P Drop d'entrée -p Drop-Drop -p Drop-Drop
Saisir
Il est plus sûr de permettre uniquement le trafic entrant à partir de connexions établies ou connexes. Configurez ça suivant.
-Une entrée -m Conntrack --ctstate lié, établi -J accepter
Boucle et ping
Ensuite, permettez l'interface de bouclage et ping.
-Une sortie -o lo -j accepter -a sortie -o tun0 -p icmp -j accepter
Cela suppose que votre connexion VPN est activée tun0
. Vérifiez cela avec ip a
, Si tu n'es pas sûr.
Lan
Cela n'a pas beaucoup de sens de fermer ou de bloquer votre trafic LAN, en particulier sur un réseau domestique, alors permettez-le aussi.
-Une sortie -d 192.168.1.0/24 -J accepter
DNS
Pour cette prochaine partie, vous devrez connaître l'adresse IP du (s) serveur DNS de votre VPN. Si votre VPN a accès ou votre résoudre.confli
, vous les trouverez probablement là-bas.
-Une sortie -d 10.45.16.1 -J accepter
Autoriser le VPN
Bien sûr, vous devez autoriser le VPN lui-même. Il y a deux parties à cela. Vous devez autoriser le port de service et l'interface.
-Une sortie -p udp -m udp --dport 1194 -j accepter -a sortie -o tun0 -j accepter
Encore une fois, vérifiez le port et l'interface que votre connexion VPN utilise.
Tu pourrais arrêter ici. Cela fonctionnera très bien pour un killswitch. Cependant, si vous voulez que les iptables fonctionnent comme un pare-feu régulier et bloquer les connexions sur des ports indésirables, vous pouvez le faire.
De là, vous supprimeriez la dernière ligne qui accepte tout le trafic tun0
, et le remplacer par des allocations spécifiques pour les ports que vous souhaitez autoriser.
-Une sortie -o tun0 -p tcp --dport 443 -j accepter -a sortie -o tun0 -p tcp --dport 80 -j accepter -a output -o tun0 -p tcp --dport 993 -j accepter -a output -o tun0 -p tcp --dport 465 -j accepter
Vous obtenez l'idée générale. C'est plus long et plus fastidieux, mais cela vous donne plus de contrôle sur ce que le trafic passe.
Ipv6
IPv6 est vraiment mauvais pour les VPN en ce moment. La plupart ne les soutiennent pas adéquatement, et vos informations peuvent s'échapper sur cette connexion. Il est préférable de l'arrêter complètement.
Créez un autre fichier pour IPv6 et bloquez tout.
-P Drop d'entrée -p Drop-Drop -p Drop-Drop
Commettre
Vous devez importer vos fichiers dans iptables pour qu'ils prennent effet. Tout d'abord, effacez toutes les anciennes règles.
# iptables -f && iptables -x
Importez les nouveaux à partir de vos fichiers.
# iptables-restore < /tmp/ipv4 # ip6tables-restore < /tmp/ipv6
Le rendre permanent
Iptables n'enregistre pas son état après un redémarrage par défaut. Vous devez configurer cela vous-même.
Debian / Ubuntu
Les systèmes basés à Debian ont un programme appelé, iptables
. C'est un service qui gère la sauvegarde et le chargement de vos configurations.
Lorsque vous l'installez, iptables
vous demandera si vous souhaitez enregistrer votre configuration existante. Dis oui.
# apt installe iptables persistant
Étant donné que Debian Systems exécute les services au démarrage par défaut, vous n'avez rien à faire d'autre.
Autres Systemd
D'autres systèmes ont deux façons différentes de gérer cela. La première consiste à modifier / etc / sysconfig / iptables-config
. Il y aura l'une des deux lignes là-bas. Modifiez celui que vous devez ressembler à ce qui suit.
Iptables_save_on_stop = "oui" ou iptables_save_on_restart = "oui"
L'autre moyen est d'utiliser les fonctions de sauvegarde et de restauration des iptables. Créez un répertoire où vous souhaitez enregistrer vos règles.
# mkdir / etc / iptables / # iptables-save> / etc / iptables / iptables.Règles # ip6tables-save> / etc / iptables / ip6tables.règles
Ensuite, créez un script pour charger ces règles lorsque votre ordinateur démarre.
#! / bin / bash iptables-restore < /etc/iptables/iptables.rules; ip6tables-restore < /etc/iptables/ip6tables.rules;
Openrc
Les systèmes OpenRC comme Gentoo ont leur propre façon d'économiser les configurations.
# RC-Service Iptables Enregistrer # RC-Service IP6Tables Enregistrer # RC-Service Iptables Démarrer # RC-Service IP6Tables Démarrer # RC-Update Ajouter Iptables par défaut # rc-update Ajouter IP6Tables par défaut
Réflexions de clôture
L'utilisation d'un killswitch basé sur les iptables rend votre VPN beaucoup plus sécurisé. La fuite de données rend totalement à la défaite de l'utilisation d'un VPN, donc l'arrêt des fuites devrait être une priorité absolue.
Ne faites pas confiance aux soi-disant Killswitchs cuits aux clients VPN. La plupart ne fonctionnent pas. La seule façon de vraiment vous assurer que vos données ne fuient pas est de le faire vous-même avec les iptables.
Tutoriels Linux connexes:
- Choses à installer sur Ubuntu 20.04
- Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
- Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
- Installez Arch Linux dans VMware Workstation
- Téléchargement Linux
- Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
- Une introduction à l'automatisation Linux, des outils et des techniques
- Commandes Linux de base
- Choses à installer sur Ubuntu 22.04
- Installation de Manjaro Linux
- « Comment modifier un package RPM à l'aide de RPMReBuild
- Comment configurer la transmission-daemon sur un Raspberry Pi et le contrôler via l'interface Web »