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.