Frage Wie kann ich den gesamten Verkehr * außer * Tor blockieren?


Gibt es auf einem Linux-System eine Möglichkeit, den gesamten ein- und ausgehenden Datenverkehr zu blockieren, wenn es nicht durch das Tor-Netzwerk geleitet wird? Dies umfasst jede Art von IP-Kommunikation, nicht nur TCP-Verbindungen. Zum Beispiel möchte ich, dass UDP vollständig blockiert ist, da es Tor nicht passieren kann. Ich möchte, dass die Internetnutzung dieses Systems völlig anonym ist, und ich möchte nicht, dass Anwendungen verloren gehen.

Mir ist klar, dass dies kompliziert sein könnte, da Tor selbst irgendwie mit Relaisknoten kommunizieren muss.


25
2017-10-02 11:45


Ursprung


Ich wollte gerade eine ähnliche Frage stellen :) - amyassin
Für diejenigen unter Ihnen, die enge Stimmen abgeben, möchte ich Sie daran erinnern Es gibt gültige Geschäftsanwendungsfälle für Tor. - Michael Hampton♦


Antworten:


Einfach genug mit iptables. Es kann Regeln haben, die bestimmten Benutzern entsprechen, und Sie sollten bereits eingerichtet haben tor unter seiner eigenen Benutzer-ID laufen zu lassen; deb- und rpm-Pakete, die von großen Linux-Distributionen und dem Tor-Projekt bereitgestellt werden, haben bereits einen Benutzer für Tor eingerichtet.

Komplettes Beispiel, verwendbare iptables und Tor-Konfigurationen folgen. Diese Firewall kann mit dem geladen werden iptables-restore Befehl. Das Endergebnis dieser Konfiguration wird transparent routen alles Verkehr, der von dem Host zu Tor kommt oder durch ihn weitergeleitet wird, ohne dass Proxies konfiguriert werden müssen. Diese Konfiguration sollte dicht sein; obwohl Sie es natürlich gründlich testen sollten.

Beachten Sie, dass die UID für den Torbenutzer (hier 998) wird von iptables in numerischer Form gespeichert. Ersetzen Sie die korrekte Benutzer-ID für Ihren Benutzer an jeder Stelle, die hier angezeigt wird.

Beachten Sie auch, dass die IP - Adresse des Hosts in der ersten Regel angegeben werden muss, um eingehende Clearnet - und LAN - Datenverkehr zu unterstützen, der direkt an den Host adressiert ist (hier als 198.51.100.212). Wenn Sie mehrere IP-Adressen haben, wiederholen Sie die Regel für jede 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

Die ssh-INPUT-Regel erlaubt nur Verbindungen, wenn sie über den lokalen Host ankommen, d. H. Einen versteckten Tor-Dienst. Wenn Sie auch eingehende SSH-Verbindungen über Clearnet zulassen möchten, entfernen Sie -d 127.0.0.1.

Die entsprechende torrc Datei ist:

User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1

Diese Konfiguration erfordert, dass der Host über eine statische IP-Adresse verfügt. Für die erwarteten Anwendungsfälle ist es wahrscheinlich, dass Sie bereits eine statische IP-Adresse geplant haben.

Und schließlich, die Ausgabe!

[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.

26
2017-10-02 11:59