Tor ma taką fajną umiejętność tworzenia
ukrytych adresów z wykorzystaniem domeny .onion
– jak http://sejnfjrq6szgca7v.onion,
http://uj3wazyk5u4hnvtk.onion/
czy https://facebookcorewwwi.onion.
Ma też drugą fajną umiejętność, dzięki czemu można udostępnić łączność
do takich adresów wszystkim urządzeniom w sieci lokalnej, nawet nie znającym Tora.
Sztuczka działa dzięki temu, że Tor potrafi działać jako serwer DNS
i syntetyzować rekordy dla domeny .onion
. W konfiguracji podajemy
z jakiej podsieci mają być zwracane. Trzeba tylko przekierować routing
ww. podsieci na klienta tor i voila. Tor odbierając pakiety skierowane
na adres X wie, że ten adres zwrócił po zapytaniu o xyz.onion i odpowiednio
kieruje połączenia.
Konfiguracja jest prosta. Najpierw wybieramy sobie ta specjalne podsieci:
VirtualAddrNetworkIPv4 10.192.0.0/10
VirtualAddrNetworkIPv6 [fceb:001a::]/32
Dwa, każemy Torowi obsługiwać DNS na naszym wewnętrznym interfejsie. Dobrze się
chwile zastanowić, czy nie mamy tu już przypadkiem jakiegoś unbound
, deadwood
, systemd-resolved
czy innego serwera DNS nasłuchującego na tym porcie. Jeśli tak, trzeba go wyłączyć.
There can be only one!
DNSPort 203.0.113.2:53
DNSPort [2001:db8:85a3::8a2e:370:7334]:53
AutomapHostsOnResolve 1
Na koniec konfiguracji Tora zostaje kazać mu nasłuchiwać jako transparetne proxy,
tak jak umie to Squid:
TransPort 0.0.0.0:9040
TransPort [::]:9040
Zostały jeszcze 2 drobiazgi – przekierowanie ruchu do magicznych podsieci na naszego
cichociemnego tora:
iptables -A PREROUTING -p tcp -d 10.192.0.0/10 -j REDIRECT --to-ports 9040
ip6tables -A PREROUTING -p tcp -d fceb:001a::/32 -j REDIRECT --to-ports 9040
Oraz poinformowanie naszego głównego DNS, że domenę .onion
obsługuje ktoś inny:
Zone name: onion.
Zone active: TRUE
Zone forwarders: 2001:db8:85a3::8a2e:370:7334, 203.0.113.2
Forward policy: first
----------------------------
Number of entries returned 1
----------------------------
W tym momencie na każdej stacji powinno działać:
$ host facebookcorewwwi.onion
facebookcorewwwi.onion has address 10.207.220.42
facebookcorewwwi.onion has IPv6 address fceb:1a:39ba:123f:1d30:72d1:a46e:1f93
$ wget sejnfjrq6szgca7v.onion
--2016-11-03 13:14:09-- http://sejnfjrq6szgca7v.onion/
Resolving sejnfjrq6szgca7v.onion (sejnfjrq6szgca7v.onion)... 10.221.133.34, fceb:1a:437e:551f:ef67:b2c2:bb64:ece5
Connecting to sejnfjrq6szgca7v.onion (sejnfjrq6szgca7v.onion)|10.221.133.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14760 (14K) [text/html]
Saving to: 'index.html'
index.html 100%[======================================================================================>] 14.41K 34.0KB/s in 0.4s
2016-11-03 13:14:10 (34.0 KB/s) - 'index.html' saved [14760/14760]
Konfigurację dla innych systemów znajdziemy oczywiście na stronie projektu.