Einfach genug mit Iptables. Es kann Regeln geben, die bestimmten Benutzern entsprechen, und Sie sollten bereits so eingerichtet sein tor
, dass sie unter einer eigenen Benutzer-ID ausgeführt werden. 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 iptables-restore
Befehl geladen werden . Das Endergebnis dieser Konfiguration leitet den gesamten Datenverkehr, der vom Host stammt oder durch diesen weitergeleitet wird, transparent an Tor weiter, ohne dass Proxys konfiguriert werden müssen. Diese Konfiguration sollte dicht sein. obwohl du es natürlich gründlich testen solltest.
Beachten Sie, dass die Benutzer-ID für den Benutzer tor (hier 998
) von iptables in numerischer Form gespeichert wird. Ersetzen Sie die richtige Benutzer-ID für Ihren Tor-Benutzer an jeder Stelle, an der sie hier angezeigt wird.
Beachten Sie auch, dass die IP-Adresse des Hosts in der ersten Regel angegeben werden muss, um eingehenden Clearnet- und LAN-Verkehr zu unterstützen, der direkt an den Host adressiert ist (hier dargestellt 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, die über den lokalen Host, dh einen versteckten Tor-Dienst, ankommen. Wenn Sie auch eingehende SSH-Verbindungen über Clearnet zulassen möchten, entfernen Sie -d 127.0.0.1
.
Die entsprechende torrc
Datei lautet:
User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1
Diese Konfiguration erfordert, dass der Host eine statische IP-Adresse hat. Für die erwarteten Anwendungsfälle ist es wahrscheinlich, dass Sie bereits eine statische IP-Adresse geplant haben.
Und zum Schluss 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.