Assez facile avec iptables. Il peut avoir des règles qui correspondent à des utilisateurs spécifiques, et vous devriez déjà avoir configuré tor
pour exécuter sous son propre ID utilisateur; Les packages deb et rpm fournis par les principales distributions Linux et le projet Tor ont déjà configuré un utilisateur pour Tor.
Voici un échantillon complet, des iptables utilisables et des configurations Tor. Ce pare-feu peut être chargé avec la iptables-restore
commande. Le résultat final de cette configuration acheminera de manière transparente tout le trafic provenant de l'hôte ou acheminé via celui-ci vers Tor, sans avoir besoin de configurer de proxy. Cette configuration doit être étanche; bien que vous deviez bien sûr le tester à fond.
Notez que l'uid pour l'utilisateur tor (ici 998
) est stocké sous forme numérique par iptables. Remplacez l'uid correct pour votre utilisateur tor à chaque endroit où il apparaît ici.
Notez également que l'adresse IP de l'hôte doit être indiquée dans la première règle pour prendre en charge le trafic Clearnet et LAN entrant adressé directement à l'hôte (ici indiqué comme 198.51.100.212
). Si vous avez plusieurs adresses IP, répétez la règle pour chaque adresse.
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 198.51.100.212/32 -j RETURN
-A PREROUTING -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 49151
-A OUTPUT -o lo -j RETURN
-A OUTPUT -m owner --uid-owner 998 -j RETURN
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 49151
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -d 127.0.0.1 --dport 22 -j ACCEPT
-A INPUT -j LOG --log-prefix "IPv4 REJECT INPUT: "
-A FORWARD -j LOG --log-prefix "IPv4 REJECT FORWARD: "
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 49151 -j ACCEPT
-A OUTPUT -m owner --uid-owner 998 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -j LOG --log-prefix "IPv4 REJECT OUTPUT: "
COMMIT
La règle ssh INPUT n'autorise les connexions que si elles arrivent via l'hôte local, c'est-à-dire un service caché Tor. Si vous souhaitez également autoriser les connexions ssh entrantes via clearnet, supprimez -d 127.0.0.1
.
Le torrc
fichier correspondant est:
User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1
Cette configuration nécessite que l'hôte ait une adresse IP statique. Pour les cas d'utilisation attendus, il est probable que vous ayez déjà prévu qu'il ait une adresse IP statique.
Et enfin, la sortie!
[root@unknown ~]# curl ifconfig.me
31.31.73.71
[root@unknown ~]# host 31.31.73.71
71.73.31.31.in-addr.arpa domain name pointer cronix.sk.
[root@unknown ~]# curl ifconfig.me
178.20.55.16
[root@unknown ~]# host 178.20.55.16
16.55.20.178.in-addr.arpa domain name pointer marcuse-1.nos-oignons.net.