dns2tcp
Par chauchre le mardi 28 août 2012, 16:27 - Geekerie - Lien permanent
Petit tutoriel rapide pour installer et configurer un environnement dns2tcp. Juste rapidement, le but de cet environnement est d'utiliser les requêtes DNS pour établir une connexion TCP entre un client et un serveur (très pratique quand seul le DNS est autorisé ... ).
/!\ Ce tuto par d'un VKS tout fraichement installé, mais peut être adapté à tout type d'environnement. /!\
-- Parenthèse
Je passe la configuration du système lui-même mais en profite pour rappeler que pouvoir se connecter en root sur un serveur, c'est pas top, et que laisser des clés SSH d'OVH, ben c'est pas top non plus :
bash ~# cat /etc/ssh/sshd_config [...] PermitRootLogin no bash ~# rm ~/.ssh/authorized_keys2
-- Fin parenthèse
-- Pré-requis
<< un serveur accessible sur Internet (évidemment)
<< un nom de domaine (pour l'exemple : poney.net)
<< le port 53 disponible sur le serveur (si bind est installé par défaut, il faudra arréter le service ou le désinstaller, et certainement modifier la configuration dans /etc/resolv.conf)
-- Fin pré-requis
1) Déjà, un petit update du système ne fait pas de mal
bash ~# aptitude update && aptitude dist-upgrade [...]
2) Récupérer et compiler dns2tcp
bash ~# aptitude install build-essential bash ~$ wget http://hsc.fr/ressources/outils/dns2tcp/download/dns2tcp-0.5.2.tar.gz bash ~$ tar xzf dns2tcp-0.5.2.tar.gz && rm dns2tcp-0.5.2.tar.gz bash ~$ cd dns2tcp-0.5.2 bash ~$ ./configure && make bash ~# make install
3) Configuration du DNS
<< Nouvelle entrée pour poney.net.
dnstcp NS dnstcp.poney.net. dnstcp A @IP_Serveur
<<
4) Confiugration et lancement du service
Plusieurs mode de fonctionnement sont configurables avec dns2tcp, nous allons voir comment configurer un tunnel SSH (pour plus d'informations : http://hsc.fr/ressources/outils/dns2tcp/download/README).
bash ~# mkdir /var/dns2tcp bash ~# cat /etc/dns2tcp.conf # listen = 0.0.0.0 port = 53 user = nobody domain = dnstcp.poney.net chroot = /var/dns2tcp key = macleavecpleindecaracteresquiveulentriendiredjizeojzeoi23E3EZDKJoczhir ressources = ssh:127.0.0.1:22 bash ~# /usr/local/bin/dns2tcpd -f /etc/dns2tcp.conf -d 1
-- Script à appeler depuis un cron pour vérifier que le service tourne bien
bash ~# cat test_services.sh if [ `pidof dns2tcpd` ] then echo "[+] dns2tcp OK" else echo "[-] dns2tcp KO" echo "[-] * kill processus (just to be sure)" killall dns2tcpd echo "[-] * laucnh daemon" /usr/local/bin/dns2tcpd -f /etc/dns2tcp.conf -d 1 echo "[+] dns2tcp OK" fi bash ~# crontab -l */1 * * * * /bin/bash /root/test_services.sh &> /dev/null
-- Fin script
5) Configuration du client
<< Même étape que la 2) pour la compilation
bash ~$ dns2tcpc -z dnstcp.poney.net -r ssh -k macleavecpleindecaracteresquiveulentriendiredjizeojzeoi23E3EZDKJoczhir -l 4443 & bash ~$ ssh -D 1234 -p 4443 user@localhost
L'option -D 1234 permet de créer un proxy SOCKS4/5 en local sur le port 1234, qui utilisera automatiquement la connexion SSH comme tunnel.