Comment créer un VPN Killswitch en utilisant iptables sur Linux

Comment créer un VPN Killswitch en utilisant iptables sur Linux

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