Ainsi, vous pouvez échapper aux portails captifs et aux pare-feu avec dns2tcp
Normalement, les réseaux Wi-Fi publics ont des 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 lieu avec une connectivité Wi-Fi publique, il est très probable que des portails captifs existent. Ces portails vous demandent généralement des informations personnelles telles que le nom complet, l’adresse e-mail, l’âge, entre autres, selon 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 RedesZone nous allons vous montrer l’ outil dns2tcp, ce qui nous permettra d’échapper à ce type de portails captifs, et d’avoir une connexion Internet illimitée
Il est bon de rappeler que le protocole DNS remplit la fonction de résolution des noms de domaine que l’on souhaite. 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 telles que les pare-feu et les portails captifs.
Cependant, il est possible de démarrer ce type de tunnels car l’administrateur réseau n’a pas effectué les paramètres de configuration appropriés pour le bloquer. Une méthode pratique pour savoir si nous pouvons effectuer le tunnel DNS est d’entrer la ligne de commande et d’exécuter ce qui suit :
nslookup www.google.com
Appuyez sur «Entrée» et les données apparaîtront comme dans la capture partagée. Si c’est le cas, vous pouvez démarrer 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 à contourner tout portail captif configuré sur les réseaux publics.
La condition principale pour que l’outil fonctionne correctement est que le port UDP 53 soit activé par le pare-feu, sinon il ne fonctionnera pas et nous ne pourrons pas échapper au portail captif ou au pare-feu. Ensuite, nous démontrerons le schéma de fonctionnement pour mieux comprendre comment la barrière du portail captif est contournée :
- Lorsque le client dns2tcp démarre, la ressource SSH sécurisée 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 requêtes DNS .
- Ensuite, un proxy SOCKS est ouvert via le port 1080.
- Ces fausses requêtes DNS sont transmises au serveur dns2tcp, qui se charge de les démasquer, et parvient à les envoyer vers la destination d’origine.
- Lorsque la destination répond à la requête, cette réponse passe d’abord par le serveur dns2tcp pour être encapsulée dans une fausse réponse DNS .
- La réponse masquée est passée au client dns2tcp qui la désencapsule et la passe enfin à 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 (dns2tcp également). 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 la distribution Linux que nous voulons, comme Raspbian entre autres.
Cependant, opter pour du matériel supplémentaire représente une dépense supplémentaire. Ainsi, nous pouvons opter pour des alternatives gratuites comme Amazon Web Services . Dans ce tutoriel, nous allons nous concentrer sur la partie la plus importante de la création du tunnel DNS : le serveur sur lequel dns2tcp est hébergé. Si nous n’avons pas cela, il n’y a aucun moyen de commencer.
La première chose à faire est d’accéder au portail AWS et de créer un compte gratuit. Vous pourrez 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 détails de votre carte de crédit, mais ne vous inquiétez pas, il n’y a pas de frais. Accédez ensuite à Mon compte et sélectionnez l’option AWS Management Console .
Parmi les multiples options que vous verrez, vous choisirez la première, qui est EC2. Il va sans dire que EC2 est géré par des instances . 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 serveurs Windows Server ou 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 passerons aux Instances .
Passons au bouton bleu Lancer l’instance
Nous avons maintenant un assistant de création pour notre instance . C’est l’instance qui contiendra notre serveur virtualisé, qui à son tour hébergera l’outil dns2tcp.
Pour ce cas, nous choisirons un serveur Ubuntu et nous ne nous soucierons pas tant de la version à utiliser. Puisque nous ne faisons que tester. Ensuite, nous cliquons sur le bouton bleu Sélectionner .
Nous choisissons l’option pouvant être utilisée avec le plan gratuit (celle avec le label éligible au niveau gratuit) .
Plus tard, des étapes apparaîtront auxquelles nous n’avons pas besoin de faire attention cette fois. Cependant, nous allons passer à l’ étape 6 (Security Groups) et ajouter une nouvelle règle qui permettra la création de tunnels DNS : le protocole DNS (UDP)
Une fois que nous avons choisi cette option, il indiquera automatiquement son numéro de port, qui est 53. Là où il est écrit Source, nous pouvons indiquer l’option Personnalisé et à côté, nous mettons l’IP 0.0.0.0/0 . Cliquez ensuite sur Vérifier et lancer .
Une dernière étape de révision apparaîtra et vous devrez cliquer sur Lancer . Comme nous le verrons ci-dessous, ce n’est pas réellement la dernière étape. Ce que nous allons faire maintenant, c’est générer la paire de clés (constituée 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 l’option Créer une nouvelle paire de clés afin de pouvoir nous fournir une nouvelle paire de clés. Là où il est écrit Key pair name , 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 lors de sa recherche. Quelque chose de très important qu’il indique est que le fichier ne sera généré qu’une seule fois, il est donc très pratique de l’enregistrer dans un emplacement sûr de l’ordinateur et dont nous pouvons nous souvenir. Ensuite, nous cliquons sur Télécharger la paire de clés pour télécharger le fichier et lancer les instances
Après quelques minutes, vous vérifierez que l’état de l’instance nouvellement créée sera prête à être lancée et aura donc accès à notre serveur virtualisé. Ce qui est surligné en rouge est ce qui vous alertera si vous pouvez maintenant lancer votre instance. S’il apparaît comme dans l’exemple de capture d’écran, vous pouvez commencer. Vous devez sélectionner l’instance que vous avez créée et cliquer sur le bouton Connecter .
Une fenêtre apparaîtra qui vous donnera des options pour vous connecter à votre instance. Dans ce cas, nous allons montrer comment se connecter via 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 avons créé via l’instance AWS, nous aurons besoin de ce programme. Plus précisément deux, Putty et Putty Gen . Accédez à ce lien et recherchez les deux programmes, ils sont assez légers et ne nécessitent pas trop d’étapes d’installation.
Passons maintenant à PuTTY Gen , cet outil nous aidera à convertir le fichier de paire de clés que nous avions téléchargé lorsque nous avons fini de créer notre instance dans AWS. Pour avoir un contexte sur la raison pour laquelle nous le faisons, c’est que PuTTY prend en charge les fichiers de paires de clés au format .ppk , une fois la conversion effectuée, ce fichier nous aidera à nous connecter par SSH à notre serveur virtuel Ubuntu.
Dans Paramètres , nous choisissons l’algorithme de chiffrement RSA utilisé pour SSH-2. Cependant, de nos jours, il est conseillé de créer des clés SSH avec Ed25519 ou avec ECDSA car elles sont les plus sécurisées. Ensuite, dans Load , nous allons trouver le fichier .pem que nous avions créé auparavant dans AWS.
Lorsque nous voulons ouvrir le fichier, assurez-vous qu’il est possible de visualiser tous les fichiers et ainsi éviter les problèmes pour le trouver. Vous l’ouvrez et en quelques secondes, vous verrez un avis indiquant qu’il a été importé avec succès :
Cliquez sur OK , puis vous cliquerez sur le bouton Enregistrer la clé privée car c’est la clé qui vous aidera à vous authentifier et à vous connecter à votre serveur Ubuntu. Vous recevrez un avertissement, mais vous pouvez cliquer sur Oui sans avoir à appuyer, nommer le fichier comme vous préférez et l’enregistrer.
Comment se connecter à notre serveur virtualisé avec PuTTY
Maintenant, cherchons le programme PuTTY et nous aurons une fenêtre comme celle-ci
Comme nous l’avons commenté, nous allons nous connecter en utilisant le protocole SSH. Ce que nous devons faire pour éviter de répéter encore et encore l’étape suivante, c’est de corriger notre fichier de clé privée généré avec PuTTY Gen afin que nous puissions nous connecter avec succès quand nous le voulons.
Nous recherchons le paragraphe SSH trouvé dans Category , puis Auth et où il est écrit Private key file for authentication levé notre fichier .ppk vient de devenir PuTTY Gen . Nous revenons à AWS et trouvons l’instance que nous venons de créer, sélectionnez-la et cliquez sur Connect . La fenêtre que nous avons vue ci-dessus apparaît à nouveau et nous copions les informations mentionnées à l’ étape 4 , qui est notre DNS public.
On va dans PuTTY et dans la section Session , dans le champ Hostname on met ce qui suit :
nombredeusuario@DNSpublico
Comme on virtualise un serveur Ubuntu, en user on écrit simplement ubuntu en minuscule suivi du @ et du DNS public que l’on a copié auparavant, sans espaces
ubuntu@dnspublico-ABC-123-dEf
Nous gardons le numéro de port 22 , dans les sessions enregistrées, nous mettons n’importe quel nom pour enregistrer notre connexion au serveur Ubuntu, nous cliquons sur Enregistrer pour l’enregistrer, puis sur Ouvrir .
Comme c’est la première fois, un avertissement apparaîtra et vous devez cliquer sur Oui :
Et voila, attendez quelques secondes que la connexion démarre et nous verrons une fenêtre comme celle-ci. Nous avons accès à notre serveur Ubuntu virtualisé !
Une fois que nous avons créé la machine virtuelle dans AWS et que nous avons la connectivité via SSH, il nous suffit d’utiliser l’outil dns2tcp lui-même.
Installation et configuration de dns2tcp sous Ubuntu
La première chose que nous devrons faire sur notre serveur Ubuntu est d’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 situé dans /etc/dns2tcp.conf et contenant 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 l’éditer 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 client pour se connecter via dns2tcp
Le moyen le 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 lequel doit nous 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 [email protected] -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 contourner les portails captifs et il est possible que les pare-feu aussi, tant qu’ils n’ont pas de blocages spécifiques qui empêchent cette technique d’être exécutée.