dns2tcp: Évitez les portails captifs et surfez sur Internet sans limites

Normalement public Réseaux Wi-Fi avons portails captifs pour nous authentifier, si nous ne nous authentifions pas contre ces portails captifs, nous ne pourrons pas accéder à Internet. Si nous sommes dans un lieu public, une cafétéria, un hôtel, un restaurant ou tout autre endroit avec une connectivité Wi-Fi publique, il est très probable qu'il existe des portails captifs.

Ces portails vous demandent généralement des données personnelles telles que le nom complet, email, l'âge, entre autres, en fonction de l'endroit où ce réseau appartient. Si vous ignorez le portail captif ou fermez la fenêtre d'authentification, vous ne pourrez pas accéder à Internet, même si vous disposez d'une connectivité locale. Aujourd'hui, dans cet article, nous allons vous montrer le outil dns2tcp, ce qui nous permettra d'éviter ce type de portails captifs et d'avoir une connexion Internet illimitée

Il est bon de se rappeler que le DNS protocole remplit la fonction de résolution des noms de domaine que nous voulons. Ceci est extrêmement utile car, s'il n'existait pas, dans la barre d'adresse de notre navigateur, nous devrions toujours écrire les adresses IP, ce qui est pratiquement impossible à maintenir. Dans ce guide, nous parlerons spécifiquement des tunnels DNS qui nous aideront à contourner les limitations d'accès comme les pare-feu et les portails captifs.

dns2tcp: Ignorer les portails captifs

Cependant, il est possible de lancer ces types de tunnels car l'administrateur réseau n'a pas défini les paramètres de configuration appropriés pour le bloquer. Une méthode pratique pour savoir si nous pouvons réaliser le tunnel DNS est d'entrer dans la ligne de commande et d'exécuter ce qui suit:

nslookup www.google.com

Appuyez sur "Entrée" et vous verrez les données comme dans la capture partagée. Si c'est le cas, vous pouvez lancer le tunnel DNS. La première chose dont nous aurons besoin est un outil appelé DNS2TCP , cet outil est utilisé pour établir des connexions DNS. Précisément, cela nous aidera à ignorer tout portail captif configuré sur les réseaux publics.

La condition principale pour que l'outil fonctionne correctement est que le port 53 UDP soit activé par le pare-feu, sinon cela ne fonctionnera pas et nous ne pourrons pas échapper au portail captif ou au pare-feu. Ci-dessous, nous allons démontrer le schéma de fonctionnement pour mieux comprendre comment la barrière du portail captif est évitée:

  • Lorsque le client dns2tcp démarre, la ressource sécurisée SSH est requise via le port 2222 à l'aide du protocole de transport TCP. Tout le trafic TCP généré est masqué et prend la forme de fausses demandes DNS .
  • Ensuite, un proxy SOCKS est ouvert via le port 1080.
  • Ces fausses requêtes DNS sont transmises au serveur dns2tcp qui est responsable de leur démasquage et parvient à les envoyer à la destination d'origine.
  • Lorsque la destination répond à la demande, cette réponse passe d'abord par le serveur dns2tcp pour être encapsulée dans un fausse réponse DNS .
  • La réponse masquée est transmise au client dns2tcp qui la décapsule et la transmet finalement à l'utilisateur

La fin de ce schéma est que ledit utilisateur peut accéder aux sites Web qu'il souhaite.

Démarrage, installation et configuration d'Ubuntu sur AWS

Si nous voulons mettre cela en pratique, nous avons besoin d'un serveur sur lequel l'outil dns2tcp est installé et son propre domaine qui doit pointer vers l'adresse IP publique du serveur (également dns2tcp). Nous pouvons utiliser un ordinateur supplémentaire dont nous disposons, ou utiliser des ressources plus fonctionnelles et économiques telles qu'un Raspberry Pi. Pour ce dernier, nous pourrions installer le Linux/Unix distribution que nous voulons, comme Raspbian entre autres.

Cependant, opter pour du matériel supplémentaire représente une dépense supplémentaire. Nous pouvons donc choisir des alternatives gratuites comme Amazon Web Services . Dans ce didacticiel, nous nous concentrerons sur la partie la plus importante de la création du tunnel DNS: le serveur sur lequel dns2tcp est hébergé. Si nous ne l'avons pas, il n'y a aucun moyen de commencer.

La première chose à faire est de saisir le AWS portail et créer un compte gratuit. Vous pouvez accéder à plusieurs solutions pendant un an sans payer d'abonnement. Un détail important est que dans l'une des étapes, vous devez entrer les informations de votre carte de crédit, mais ne vous inquiétez pas, il n'y a pas de frais. Ensuite aller à Mon compte et sélectionnez le Console de gestion AWS option.

Parmi les multiples options que vous verrez, vous choisirez la première qui est EC2. Il va sans dire, EC2 est géré par cas . Ces instances sont comme des conteneurs où sont hébergées les machines virtuelles que nous créons. Il peut s'agir de différentes versions de Windows Serveurs ou serveurs Linux. Si vous souhaitez en savoir plus, nous vous suggérons d'explorer la myriade d'options de virtualisation.

Cela nous amènera au tableau de bord dédié au service EC2 et nous irons à Cas .

Allons au bleu Lancer l'instance bouton (dans la fenêtre de contrôle qui apparaît maintenant)

Nous avons maintenant un assistant de création pour notre instance . Il s'agit de l'instance qui contiendra notre serveur virtualisé, qui à son tour hébergera l'outil dns2tcp.

Dans ce cas, nous choisirons un Ubuntu Server et nous ne nous soucierons pas tant de la version à utiliser. Puisque nous testons seulement. Puis on clique sur le bleu Sélectionnez .

Nous choisissons l'option éligible pour une utilisation avec le plan gratuit (celui avec le niveau gratuit éligible) .

Plus tard, des étapes apparaîtront que nous n'avons pas besoin de prêter attention à cette fois. Cependant, nous arriverons à étape 6 (Sécurité Groupes) et ajouter une nouvelle règle qui permettra la création de tunnels DNS: le DNS protocole (UDP)

Une fois que nous avons choisi cette option, elle indiquera automatiquement son numéro de port, qui est 53. Là où elle indique Source, nous pouvons indiquer l'option personnalisée et à côté, nous mettons l'IP 0.0.0.0/0 . Puis clique Révision et lancement .

Une dernière étape de révision apparaîtra et vous devez cliquer sur Lancement . Comme nous le verrons ci-dessous, en réalité, ce n'est pas la dernière étape. Ce que nous allons faire maintenant, c'est générer la paire de clés (composé d'une clé publique et d'une clé privée) qui nous permettra de nous connecter en toute sécurité à notre instance que nous venons de créer.

Dans cette étape, vous devez sélectionner le Créer une nouvelle paire de clés option afin qu'il puisse nous fournir une nouvelle paire de clés. Où il est dit Nom de la paire de clés , nous indiquons le nom de la paire que nous voulons. Nous vous recommandons d'utiliser un nom que nous pouvons facilement reconnaître le fichier lorsque nous le recherchons. Quelque chose de très important qui indique que le fichier sera généré pour une seule fois, il est donc pratique de l'enregistrer dans un emplacement sûr sur l'ordinateur et dont nous pouvons nous souvenir. Ensuite, nous cliquons Télécharger la paire de clés pour télécharger le fichier et Lancer des instances

Après quelques minutes, vous vérifierez que le statut de l'instance nouvellement créée sera prêt à la lancer et, par conséquent, aurez accès à notre serveur virtualisé. Ce qui est surligné en rouge est ce qui vous avertira si vous pouvez déjà lancer votre instance. S'il apparaît tel quel comme l'exemple de capture, vous pouvez commencer. Vous devez sélectionner l'instance que vous avez créée et cliquer sur le NOUS CONTACTER .

Une fenêtre apparaîtra qui vous donnera des options pour vous connecter à votre instance. Dans ce cas, nous allons montrer comment se connecter à l'aide d'un client SSH. Par conséquent, nous aurons besoin d'un programme appelé PuTTY .

Installez PuTTY en quelques secondes

Pour nous connecter à notre serveur Ubuntu que nous avions créé à l'aide de l'instance AWS, nous aurons besoin de ce programme. Plus précisément deux, PuTTY et Mastic Gen. Accéder à ceci lien et recherchez les deux programmes, ils sont assez légers et ne nécessitent pas trop d'étapes d'installation.

Passons maintenant à Génération de mastic , cet outil nous aidera à convertir le fichier de paire de clés que nous avions téléchargé lorsque nous avons terminé de créer notre instance dans AWS. Pour savoir pourquoi nous le faisons, PuTTY prend en charge les fichiers de paires de clés dans .ppk format, une fois la conversion terminée, ce fichier nous aidera à nous connecter via SSH à notre serveur virtuel Ubuntu.

At Paramètres , nous choisissons l'algorithme de chiffrement RSA utilisé pour SSH-2. Cependant, de nos jours, il est recommandé de créer des clés SSH avec Ed25519 ou avec ECDSA car ce sont les plus sécurisées. Puis dans Charge , nous allons chercher le .pem fichier que nous avions créé précédemment dans AWS.

Lorsque nous voulons ouvrir le fichier, assurez-vous qu'il est possible de visualiser tous les fichiers et d'éviter les problèmes pour le trouver. Vous l'ouvrez et en quelques secondes, vous verrez un avis qu'il a été importé avec succès:

Vous cliquez OK puis vous cliquez sur le Enregistrer la clé privée puisque c'est la clé qui servira à vous authentifier et à vous connecter à votre serveur Ubuntu. Vous verrez un avertissement, mais vous pouvez cliquer sur Oui sans gêne, nommez le fichier comme vous préférez et enregistrez-le.

Comment se connecter à notre serveur virtualisé avec PuTTY

Maintenant, trouvons le programme PuTTY et nous aurons une fenêtre comme celle-ci

Comme nous l'avons mentionné, nous allons nous connecter en utilisant le protocole SSH. Ce que nous devons faire pour éviter de faire la prochaine étape encore et encore est de réparer notre clé privée générée filet avec Génération de mastic afin que nous puissions nous connecter avec succès quand nous le voulons.

Nous recherchons SSH section qui est en Catégories , puis Auth et où ça dit Fichier de clé privée pour l'authentification nous téléchargeons notre .ppk fichier que nous venons de convertir Mastic Gen. Nous revenons à AWS et recherchons l'instance que nous venons de créer, sélectionnez-la et cliquez sur NOUS CONTACTER . Encore une fois, la fenêtre que nous avons vue ci-dessus apparaît et nous copions les informations mentionnées dans étape 4 , qui est notre DNS public.

Nous allons à PuTTY et dans le Session section, dans le Hostname champ, nous mettons ce qui suit:

nombredeusuario@DNSpublico

Lorsque nous virtualisons un serveur Ubuntu, en utilisateur, nous écrivons simplement ubuntu en minuscules suivi de @ et le DNS public que nous avons copié auparavant, sans espaces

ubuntu@dnspublico-ABC-123-dEf

Nous gardons le numéro de port 22 en Sessions enregistrées nous mettons n'importe quel nom pour enregistrer notre connexion au serveur Ubuntu, nous cliquons Épargnez pour l'enregistrer, puis cliquez sur Ouvert .

Pour la première fois, vous verrez un avertissement et vous devrez cliquer sur Oui :

Et prêt, attendez quelques secondes pour que la connexion démarre et nous verrons une fenêtre comme celle-ci. Nous avons accès à notre serveur Ubuntu virtualisé!

Une fois la machine virtuelle créée dans AWS et la connectivité via SSH, il nous suffit d'utiliser l'outil dns2tcp lui-même.

Installation et configuration de dns2tcp dans Ubuntu

La première chose que nous devrons faire sur notre Serveur Ubuntu consiste à installer l'outil dns2tcp:

sudo apt install dns2tcp

Une fois installé, à la fois sur le client et sur le serveur, nous devrons faire quelques petits ajustements.

Configuration et démarrage du serveur dns2tcp

Nous devrons faire une brève configuration en éditant le fichier de configuration qui se trouve dans /etc/dns2tcp.conf et qui contient les éléments suivants:

root@debian-vm:/home/bron# cat /etc/dns2tcpd.conf
listen = 127.0.0.1
port = 53
# If you change this value, also change the USER variable in /etc/default/dns2tcpd
user = nobody
chroot = /tmp
domain = your.domain.tld
resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25
root@debian-vm:/home/bron#

Nous devons le modifier comme suit:


listen = 0.0.0.0
port = 53
# If you change this value, also change the USER variable in /etc/default/dns2tcpd
user = nobody
chroot = /tmp
domain = EL_DOMINIO_DE_AWS
key= redeszone
resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25
root@debian-vm:/home/bron#

Le champ «clé» est facultatif, mais il est recommandé d'avoir une authentification pour empêcher quiconque de se connecter. Nous devons l'exécuter de la manière suivante:

root@debian-vm:/home/bron# sudo dns2tcpd -F -d 3 -f /etc/dns2tcpd.conf
18:52:08 : Debug options.c:97 Add resource ssh:127.0.0.1 port 22
18:52:08 : Debug options.c:97 Add resource smtp:127.0.0.1 port 25
18:52:08 : Debug socket.c:55 Listening on 0.0.0.0:53 for domain your.domain.tld
Starting Server v0.5.2...
18:52:08 : Debug main.c:132 Chroot to /tmp
16:52:08 : Debug main.c:142 Change to user nobody

Une fois cela fait, nous n'aurions plus qu'à nous connecter avec notre client.

Configuration du client pour se connecter via dns2tcp

La façon la plus simple de se connecter est d'exécuter une ligne de commande qui a tout ce dont vous avez besoin, puis vous pouvez voir en détail qui consiste à se connecter et à créer automatiquement le socket pour SSH sur le port 2222.

dns2tcpc -z EL_DOMINIO_DE_AWS -k redeszone -r ssh -l 2222

Maintenant, nous pouvons établir la connexion avec SSH de la manière suivante et la communication sera cryptée et authentifiée:

ssh bron@127.0.0.1 -p 2222 -D 8080

Enfin, nous devrons configurer les PROXY SOCKS dans notre navigateur, par exemple dans Firefox ce serait comme suit:

De cette façon, vous pourrez ignorer les portails captifs et il est possible qu'ils aient également des pare-feu, tant qu'ils n'ont pas de blocs spécifiques qui empêchent l'exécution de cette technique.