dns2tcp

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.

La discussion continue ailleurs

URL de rétrolien : http://www.leslamas.net/index.php?trackback/56

Fil des commentaires de ce billet