Anonymen WLAN-Access-Point mit ArchLinux und Tor errichten

In Zeiten von Prism, Tempora und co ist es wichtig, dass man den Geheimdiensten so wenig Daten wie möglich liefert. Egal ob man nun Terrorist ist oder nicht. Jeder hat seine Leichen im Keller.

Daher habe ich den Onion Pi von Adafruit als Vorlage genommen, um ungenutzte Ressourcen meines HP Microserver zu verwenden, um meine Nachbarschaft und Gäste mit gratis WLAN zu versorgen. Der gesamte Traffic wird durch die Zwiebel-Schichten des Tor-Netzwerkes getunnelt. Positiver Nebeneffekt: Um die Störerhaftung (Danke, Berlin!) brauch ich mir keine Sorgen machen.

Im Folgenden beziehe ich mich zwar auf ArchLinux mit Systemd, die Konfigurationen lassen sich aber nahezu unverändert bspw unter Debian verwenden. Sollte es bei der Umsetzung Probleme geben, einfach nen Kommentar hinterlassen.

Als WLAN-Interface für den Access-Point habe ich zwar wlan0 verwendet, unter neueren ArchLinux-Installationen könnte es allerdings auch bspw wlp0s18f2u3 heißen. Denkt also immer daran, die entsprechenden Stellen der Konfigurationen anzupassen.

Mit dem für das WLAN verwendeten Subnet 10.10.0.0/24 sollte es eigentlich keine Probleme geben, da der Bereich 10.0.0.0/8 von der IANA für private Netzwerke (wie bspw VPNs) vorgesehen ist.

Zuerst müssen die Programme dnsmasq (unser DHCP-Server), hostapd (erzeugt den Access-Point), tor (zur Anonymisierung des Traffics) und iptables (fürs Routing) installiert werden. Unter ArchLinux ganz einfach mit

$ pacman -Sy dnsmasq hostapd tor iptables

machbar. Anschließend die Config-Files entsprechend überschreiben.  Bitte darauf achten, wlan0 entsprechend zu ersetzen.

/etc/dnsmasq.conf

interface=wlan0
dhcp-range=10.10.0.25,10.10.0.255,6h

/etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=NoPRISM
country_code=DE
ieee80211d=1
hw_mode=g
ieee80211n=1
channel=11
macaddr_acl=0

/etc/systemd/system/openwifi.service

[Unit]
Description=Assign static ip to wlan0
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-wlan0.device
After=sys-subsystem-net-devices-wlan0.device

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ip link set dev wlan0 up
ExecStart=/usr/bin/ip addr add 10.10.0.1/24 dev wlan0
ExecStop=/usr/bin/ip addr del 10.10.0.1/24 dev wlan0
ExecStop=/usr/bin/ip link set dev wlan0 down

[Install]
WantedBy=multi-user.target

/etc/tor/torrc

AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 10.10.0.1
DNSPort 53
DNSListenAddress 10.10.0.1
User tor
Log notice syslog
DataDirectory /var/lib/tor
BridgeRelay 0
PublishServerDescriptor 0

/etc/sysctl.conf

net.ipv4.ip_forward=1

sysctl.conf neu einlesen

sysctl -p

Jetzt noch die Regeln für IPtables anlegen und speichern.

$ iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53
$ iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040
$ iptables-save > /etc/iptables/iptables.rules

Jetzt sollte alles soweit eingerichtet sein und wir können einen Testlauf starten:

$ systemctl start iptables
$ systemctl start openwifi
$ systemctl start hostapd
$ systemctl start dnsmasq
$ systemctl start tor

Versucht jetzt euch bspw mit eurem Smartphone mit dem WIFI NoPRISM zu verbinden und anschließend wieistmeineip.de aufzurufen. Es kann u.A. etwas dauern bis die Seite vollständig geladen ist, da das Tor-Netzwerk je nach Uhrzeit etwas überlastet ist.

Hat auch das geklappt, können alle nötigen Systemd-Dienste aktiviert werden und wir sind fertig.

$ systemctl enable dnsmasq hostapd tor openwifi iptables

Noch Fragen? Hinterlasst mir nen Kommentar.