Come posso bloccare tutto il traffico * tranne * Tor?


26

Su un sistema Linux, esiste un modo per bloccare tutto il traffico in entrata e in uscita a meno che non passi attraverso la rete Tor. Ciò include qualsiasi forma di comunicazione IP, non solo connessioni TCP. Ad esempio, voglio che UDP sia completamente bloccato poiché non può passare attraverso Tor. Voglio che questo utilizzo di Internet del sistema sia completamente anonimo e non voglio perdite di applicazioni.

Mi rendo conto che questo potrebbe essere complicato perché Tor stesso deve comunicare in qualche modo con i nodi relay.


Stavo per fare una domanda simile :)
Amyassin,

5
Per quelli di voi che hanno espresso voti stretti, vorrei ricordarvi che esistono casi di utilizzo aziendale validi per Tor .
Michael Hampton

Risposte:


26

Abbastanza facile con iptables. Può avere regole che corrispondono a utenti specifici e dovresti aver già impostato l' toresecuzione 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-restorecomando. 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 torrcfile 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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.