Nach der Installation einer Searx-Instanz wird der Datenverkehr zwischen Searx und den Suchmaschinen standardmäßig auf normalem Weg durch die unendlichen Weiten des Internets geleitet. Wer seine Searx-Instanz also in einem Netzwerk betreibt, dessen WAN-Adresse auf euch als Person schließen lassen könnte, der möchte den Datenverkehr vermutlich durch das Tor-Netzwerk leiten. Da Searx sowohl SOCKS- als auch HTTP-Proxys unterstützt, ist das kein Problem.
Bei der Verwendung des Tor-Netzwerks für ausgehenden Datenverkehr der Searx-Instanz besteht der Vorteil darin, dass die Suchmaschinen nicht immer die selbe IP-Adresse (z.B. von eurem VPS) sehen und somit keine Rückschlüsse wie „Ah, von der IP-Adresse kommen immer solche und solche Suchanfragen; das ist bestimmt die selbe Person“ ziehen können. Oder: „Ah! Diese IP-Adresse hat diesen PTR-Record (02.nmnd.de
). Das ist dieser Kerl mit seinem Blog.“
Meiner Einschätzung nach wäre das schlimmer, als wenn man die Suchmaschinen direkt über ihre URL vom privaten Internetanschluss aus besucht. Dann sehen die Suchmaschinen zwar die IP-Adresse des Anschlusses, aber diese ist „von außen“ erst einmal keiner bestimmten Person zuordenbar. Wenn ich aber von meinem VPS – auf dem der Blog läuft und dessen IP-Adresse mit der Domain nerdmind.de
in Verbindung steht – eine Suchanfrage tätige, dann ist das Mapping von IP-Adresse auf Person viel einfacher, als wenn ich mit meiner „anonymen“ Vodafone-IP unterwegs bin.
Andererseits wäre die Verwendung einer Searx-Instanz ohne Tor-Proxy pauschal aber immer noch besser, als die Suchmaschinen direkt im Webbrowser aufzurufen, wenn man das Problem des Browser-Fingerprintings bedenkt. Vermutlich wird der Nutzer eher automatisiert über Javascript und Tracking-URLs (wie z.B. bei Google) im Browser getrackt, als dass geguckt wird, ob die IP-Adresse zu einem VPS gehört und welche Domains diesem zugeordnet sind.
Es kommt also für die Entscheidung auf das „Threat-Model“ an, also gegen was man sich schützen möchte. Für mein Setup (Searx-Instanz auf VPS, dessen IP auf mich als Person schließen lässt) ist die Lösung mit dem Tor-Proxy ideal.
Das wären meine Überlegungen zu der Thematik. Falls ich da einen Denkfehler drin habe oder jemand noch Anregungen hat, kann er es mir gerne per Mail mitteilen. Nun geht es aber weiter mit der Anleitung!
Tor installieren und Searx-Konfiguration anpassen
Zur Installation des Tor-Clients muss unter Debian-artigen Linux-Distributionen lediglich das Paket tor
installiert werden (wer möchte, kann vorher auch noch das eigene Package-Repository vom Tor-Projekt aktivieren):
sudo apt install tor
Der Tor-Dienst ist danach automatisch gestartet und aktiviert. An der Konfiguration von Tor muss nichts geändert werden, da Tor mit vernünftigen Standard-Einstellungen daherkommt. Standardmäßig startet der Tor-Dienst einen SOCKS5-Proxy auf localhost:9050
, den wir nun in der Searx-Konfiguration (settings.yml
) wie folgt ansprechen:
outgoing:
proxies:
http:
- 'socks5h://localhost:9050'
https:
- 'socks5h://localhost:9050'
extra_request_timeout: 5.0
Nun sollte der Datenverkehr zwischen Searx und den Suchmaschinen durch das Tor-Netzwerk fließen. In Ergänzung hierzu empfiehlt es sich noch, den Bilder-Proxy in der Searx-Konfiguration standardmäßig einzuschalten, damit auch die in den Suchergebnissen eingebundenen Bilder über die Searx-Instanz (und somit über Tor) geladen werden:
sed -i 's/image_proxy : False/image_proxy : True/' ~/settings.yml
Nachteile bei der Verwendung des Tor-Proxys
Ein Nachteil bei der Verwendung des Tor-Proxys ist, dass manche Suchmaschinen absichtlich oder unabsichtlich Tor-Exit-Nodes blockieren und die Searx-Instanz dann keine Ergebnisse von diesen Suchmaschinen zurückliefert. Daher ist hier noch ein bisschen Feintuning in den Einstellungen angesagt. Meine Konfiguration der Suchmaschinen sieht momentan wie folgt aus und liefert zuverlässig Ergebnisse (zumindest für die Kategorien „Allgemein“ und „Bilder“):
engines:
- name: google
disabled: True
- name: yahoo
disabled: False
- name: qwant
disabled: False
- name: duckduckgo
disabled: False
- name: startpage
disabled: False
- name: reddit
disabled: False
- name: dictzone
disabled: True
- name: openverse
disabled: True
- name: qwant images
disabled: False
- name: library of congress
disabled: True
- name: duckduckgo images
disabled: False