Abbastanza facile con iptables. Può avere regole che corrispondono a utenti specifici e dovresti aver già impostato l' tor
esecuzione per il suo ID utente; i pacchetti deb e rpm forniti dalle principali distribuzioni Linux e Tor Project hanno già creato un utente per Tor.
Seguono un esempio completo, iptables utilizzabili e configurazioni Tor. Questo firewall può essere caricato con il iptables-restore
comando. Il risultato finale di questa configurazione instraderà in modo trasparente tutto il traffico proveniente dall'host o inoltrato attraverso l'host a Tor, senza la necessità di configurare i proxy. Questa configurazione dovrebbe essere a prova di perdite; anche se dovresti ovviamente provarlo a fondo.
Si noti che l'UID per l'utente Tor (qui, 998
) è memorizzato in forma numerica da iptables. Sostituisci l'UID corretto per il tuo utente Tor in ogni luogo che appare qui.
Si noti inoltre che l'indirizzo IP dell'host deve essere indicato nella prima regola per supportare il traffico Clearnet e LAN in entrata indirizzato direttamente all'host (qui mostrato come 198.51.100.212
). Se hai più indirizzi IP, ripeti la regola per ciascun indirizzo.
*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 regola ssh INPUT consente le connessioni solo se arrivano tramite l'host locale, ovvero un servizio nascosto Tor. Se si desidera consentire anche le connessioni ssh in entrata tramite clearnet, rimuovere -d 127.0.0.1
.
Il torrc
file corrispondente è:
User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1
Questa configurazione richiede che l'host abbia un indirizzo IP statico. Per i casi d'uso previsti, è probabile che tu abbia già pianificato che abbia un indirizzo IP statico.
E infine, l'output!
[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.