Après quelques recherches et lectures de man et howto, je suis presque arrivé à mon but, mais il doit me manquer un petit quelque chose.
Voici les règles que j'applique via iptables :
1) Je bloque tout par défaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP |
2) J'autorise le trafic sur la boucle locale
iptables -A OUTPUT -p all -o lo -j ACCEPT
iptables -A INPUT -p all -i lo -j ACCEPT |
3) J'autorise les connexions pour SSH (sur les ports 22 par défaut et 3389 pour des besoins perso)
iptables -A OUTPUT -p tcp -o eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 --dport 3389 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 3389 -j ACCEPT |
Jusqu'ici tout va bien, tout est bloqué à l'exception de ma connexion SSH, c'est ensuite que ça se complique un petit peu :
4) Je redirige via un DNAT l'intégralité du trafic généré vers le SOCKS ouvert par SSH en local, sur le port 8888 :
--> Pour l'UDP :
iptables -t nat -A OUTPUT -p udp -o eth0 -j DNAT --to-destination 127.0.0.1:8888 |
--> Pour le TCP, je crée les les règles de manière à ne pas prendre en compte les connexions sur les ports 22 et 3389 :
iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 0:21 -j DNAT --to-destination 127.0.0.1:8888
iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 23:3388 -j DNAT --to-destination 127.0.0.1:8888
iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 3390:65535 -j DNAT --to-destination 127.0.0.1:8888 |
Là, je bloque un peu : les paquets sont bien redirigés vers le SOCKS (un petit iptables -vL -t nat m'indique bien de l'activité sur la plage couvrant le port 80 lorsque je tente d'accèder à une page web), mais il doit y avoir un problème pour le retour ...
Faut-il que je mette en place un SNAT, en plus du DNAT ?