Manch einer hat auf dem Arbeitsrechner verschiedenste Nutzungsszenarien, unter welchen sich auch solche Anwendungsfälle befinden, wo die Anonymisierung per VPN für autonom laufende Anwendungen gewünscht wird und mitunter Dauerbetrieb passiert. Was im Normalfall so aussieht, als dass a) ein 180Watt+ Bolide dauernd läuft und b) Verrenkungen erforderlich sind, wenn andere Anwendungsfälle die nativ vom Provider vergebene IP erforderlich machen.
Darum wird dieser Artikel zu zeigen versuchen, wie man sich mittels Linux Mint und ruhig alter, schwacher Hardware einen dedizierten (abgesetzten) Rechner schafft, welcher recht wenig Strom verbraucht, immer laufen kann, per VNC bequem grafisch mit Maus ferngesteuert wird, anonym im Internet ist und zudem ab BIOS vollverschlüsselt operiert. An dieser Stelle nochmals eine Danksagung an Edward S.!
Für diese kleine Bauanleitung werde ich bewusst ein Linux Mint Cinnamon etablieren, weil das leicht zu handhaben ist, für die Vollverschlüsselung nur ein Häkchen und eine Passphrase zu setzen ist und so nicht alles über die Kommandozeile passieren muss. Es geht auch vollends headless per command line, schon klar, aber so würde auch ein viel kleinerer Personenkreis zum Ziel finden.
Die folgende Hardware und die Sache an sich beschreiben eine leichte Realisierung auch für jene, welche mit Netzwerken und Kommandozeile nicht so firm sind. Selbstverständlich kann ersatzweise feinste Serverhardware im 19″-Rack zum Einsatz kommen. Auch kann auf ein desktop environment wie Cinnamon verzichtet werden, oder das System hat mit VPN nichts am Hut, weil es bereits die Firewall-Appliance ein anonymisierendes VPN auf einem gesonderten RJ45-Port zu Verfügung stellt. Auch kann man das ganze in einer virtuellen Maschine realisieren. Doch soll es heute um den simplen Weg gehen. Einfach und billig.
Die Hardware
Der Rechner darf langsam sein. Ob ein einfacher Webserver drauf läuft, eine OwnCloud oder per Torrent Client Transmission (im Linux Mint Anwendungsmananger verfügbar) die neuesten Linux ISO Images geladen werden, es sitzt kein User vorm Bildschirm, welcher sich über zähe Antwortzeiten ärgern müsste. Ideal ist irgendein kleines Mini-ITX Board mit fest aufgebrachter CPU, welches ich häufig schon für andere Dinge präferierte. Ist zum Beispiel aus einem aktualisierten HTPC ein ausrangiertes AMD E-350 Board vorhanden, warum nicht, neuere ATOMs gehen ebenso.
Wenn die Kiste schnell sein soll, tut’s ein ASRock Q1900-ITX oder das neueste Äquivalent in Form des ebenfalls vierkernigen und etwa gleichteuren ASRock N3150-ITX, welches aber neben einem aufgefrischten INTEL-Design mit kleineren Strukturgrößen und geringerem Energiebedarf insbesondere AES-NI mitbringt. Das entlastet beim vollverschlüsselten System enorm die CPU.
Es braucht nicht viel RAM zu sein, 4GB reichen aus. Alte Festplatte mit 500GB, 1TB oder 2TB und irgendeine Stromversorgung, die passt. Also vielleicht ein 200-Watt-Servernetzteil aus der Kramkiste oder, viel besser, eine Kombination aus passender PicoPSU und richtig dimensioniertem externen Netzteil. Handelt es sich um ein Q1900-ITX, ein N3150-ITX oder ein AMD E-350 System wie etwa das Asus E35M1-I und ist lediglich eine Festplatte im Spiel, so passt die PicoPSU-90 mit dem LEICKE Netzteil 60 Watt und 12V.
Betriebssystem und Fernsteuerung
Von der Mint Website das 64-Bit Image von Linux Mint Cinnamon laden und davon einen bootfähigen USB-Stick erstellen. Vom USB-Stick starten und auf dem Mint-Desktop die Installation anstoßen. Entscheidend für das Anklicken der Option Encrypt the new Linux Mint …!
Wenn fertig, den Stick enternen und das neue Mint booten. Um den Rechner per VNC fernsteuern zu können, öffnen wir ein Terminal und installieren erstmal den VNC-Server vino:
sudo apt-get install vino
Was erstmal reicht. Erweitertes zu vino an dieser Stelle.
Hiernach geben wir folgendes Kommando ein:
sudo apt-get install dconf-editor
Jetzt ruft ihr als normal-privilegierter User den dconf-editor auf, nicht als root:
dconf-editor
In diesem Fenster dconf-Bearbeitung findet ihr Links unter dem Pfad org>gnome>desktop>remote-access rechts ein paar Einstellmöglichkeiten. Wichtig ist natürlich enabled und sofern ihr den Port anders setzt, auch das Anklicken des Menüpunktes ‚use-alternative-port‘. Nachfolgend ein Screenshot. Fenster schließen.
Ab jetzt kann der neue Mint Rechner im lokalen Netz auf jedem beliebigen anderen Rechner mittels eines VNC-Tools wie etwas dem VNC Viewer for Google Chrome in einem Fenster seinen Desktop präsentieren und so Ferngesteuert werden. Was dann so aussieht, dass man in den zwei Feldern des VNC Viewer for Google einmal die Kombination aus IP und Port eingibt wie 192.168.1.xxx:5555 (wenn Port 5555 in dconf gewählt) und Connect klick. Einfach ist das Leben.
Anonymität = VPN + Absicherung gegen Tunnelbruch
Die gesamte Kommunikation des kleinen Linux Mint Servers soll verschleiert erfolgen, ohne je auch nur einen Moment die vom DSL-Provider zugewiesene IP hochzuhalten. Ich empfehlen als zugrundeliegenden Dienstleister hierfür zum wiederholten Male Perfect Privacy. Die Leute von PP haben sich hochverdient gemacht um die Sache und das Funktionieren des Konzepts in den Jahren mehrfach unter Beweis gestellt. Perfect Privacy vermeidet Log-Dateien auf einer beachtlichen Serverinfrastruktur in zig Ländern bzw. VPN-Standorten. Die Server sind derart potent, dass per VPN kaum weniger durchgeht, als ohne VPN. Mit einem bezahlten Account könnt ihr beliebig viele Eurer eigenen Rechner gleichzeitig über Perfect Privacy absichern. Es sind sehr gut angelegte knapp 16 EUR im Monat (und weniger bei längerer Bindung).
Nachdem ein persönlicher Perfect Privacy mit Nutzernamen und Passwort existiert, widmen wir uns nun wieder der Linux Mint Serverkiste. Unter Menü > Anwendungsverwaltung im rechten Suchfeld Perfect Privacy eintippen und Enter drücken. Es erscheint als Suchergebniss die Anwendung pp-opvenvpn-manager (Perfect Privacy openvpn manager). Diese Applikation bitte installieren und aufrufen.
Im nun geöffneten Perfect Privacy OpenVPN Manager Fenster klicken wir den Settings Button. Unter Account Settings geben wir den Perfect Privacy Nutzernamen und das zugehörige Passwort ein. Durch Klick auf den Button Update configuration werden die aktuellen VPN-Standorte von Perfect Privacy eingepflegt. Close klicken. Das war eine einmalige Aktion. Im Normalfall werden wir nicht mehr Settings aufrufen.
Verbindet Euch jetzt ruhig mit einem VPN-Standort wie etwa Rotterdam oder Amsterdam. Die Prüfung, ob ihr tatsächlich tarnkappenmäßig mit einer anderen IP unterwegs sein, könnt ihr auf der Kommandozeile machen mit einem traceroute oder im Browser mit dem passenden Perfect Privacy Webdienst Check IP oder WhatIsMyIP.com.
IP-Leak bei Zusammenbruch des VPN-Tunnels verhindern
Wir bleiben ruhig online mit der bestehenden VPN-Verbindung. Nun legen wir ein kleines Script an, welches von dem ehrenwerten JackCarver aus dem Perfect Privacy Forum stammt (2. Posting in diesem Thread) und was insbesondere dafür sorgt, dass nach dem Zusammenbruch des VPN-Tunnels nicht ein Bit ins Internet geht und so die um Kontinuität der Verbindung bemühten Serveranwendungen nicht Steighelfer eines IP-Leaks werden.
Dinge ändern sich. So kann auch das hier veröffentlichte Script wichtige zukünftige Anpassungen erfahren. Hierzu muss man am Ball bleiben und ab und an im vorhin verlinkten Perfect Privacy Forum vorbeisehen und mitlesen. Wach bleiben und die Dinge verfolgen empfiehlt sich grundsätzlich auf allen Ebenen der Computersicherheit.
Als root legen wir folgende Datei mit dem Texteditor nano an. Für Nano-Grundlagen, v.a. für Speichern und Beenden ruhig hier einmal nachschauen.
nano /etc/iptables/pp.sh
Mit folgendem Inhalt die Datei pp.sh abspeichern:
#! /bin/bash
#Iptables Regeln für VPN:
iptables -t filter -A OUTPUT -o wlan0 -p udp -m multiport --dports 1149,1150,1151,53,149,150,151 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o wlan0 -p tcp -m multiport --dports 152,1152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p udp -m multiport --dports 1149,1150,1151,53,149,150,151 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports 152,1152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i wlan0 -p udp -m multiport --sports 1149,1150,1151,53,149,150,151 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i wlan0 -p tcp -m multiport --sports 152,1152 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp -m multiport --sports 1149,1150,1151,53,149,150,151 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports 152,1152 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT --dst 192.168.0.0/16 -j ACCEPT
iptables -t filter -A INPUT --src 192.168.0.0/16 -j ACCEPT
iptables -t filter -A OUTPUT --dst 10.0.0.0/8 -j ACCEPT
iptables -t filter -A INPUT --src 10.0.0.0/8 -j ACCEPT
iptables -t filter -A OUTPUT --dst 172.16.0.0/12 -j ACCEPT
iptables -t filter -A INPUT --src 172.16.0.0/12 -j ACCEPT
iptables -t filter -A OUTPUT -o wlan0 -j DROP
iptables -t filter -A INPUT -i wlan0 -j DROP
iptables -t filter -A OUTPUT -o eth0 -j DROP
iptables -t filter -A INPUT -i eth0 -j DROP
Dann ein einmaliges change mode (immer noch als root):
chmod u+x pp.sh
Das Script aufrufen (als root):
/etc/iptables/pp.sh
Und als root folgende zwei Zeilen eingeben und jeweils per Enter ausführen:
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Jetzt sollte alles sicher sein. Zum Testen klicken wir mal im Perfect Privacy OpenVPN Manger auf Trennen. Das simuliert einen Zusammenbruch des Tunnels und nach außen ins böse Internet sollte nichts mehr gehen. Sowohl ein traceroute auf der Kommandozeile wie
traceroute nedzad.com
sollte zu nichts führen, als auch der Browser sollte vor dem Nichts stehen. Exzellent.
Um den Paradigma dieses Artikels (Einfach & Gut anzupassen & Erweiterbar) treu zu bleiben, ist der Rechner jetzt neu zu starten, um das Ganze normal zu nutzen im Sinne unseres Vorhabens.
Normaler Betrieb:
1.) Netzwerkkabel vom unserem Mint Server abstecken.
2.) Unser Linux Mint Server wird eingeschaltet, direkt nach dem BIOS wird die Passphrase zum Entschlüsseln verlangt. Geht was nicht, probiert mal die Vertauschung von z und y.
3.) Prüfen, ob der Privatsphäre bedürftige Netzwerkanwendungen laufen. Diese ggf. beenden.
4.) Netzwerkkabel konnektieren.
3.) Der Perfect Privacy OpenVPN Manger wird gestartet und eine VPN-Verbindung hergestellt.
4.) Terminal öffnen, su root und dann die drei Zeilen/etc/iptables/pp.shiptables-save > /etc/iptables/rules.v4ip6tables-save > /etc/iptables/rules.v6
5.) Prüfen, ob mit der VPN-IP unterwegs, also traceroute in der shell oder Perfect Privacy Webdienst Check IP.
6.) Nun die der Privatsphäre bedürftigen Inernetanwendungen starten.
7.) Als Nutzer VNC starten./usr/lib/vino/vino-server
Schlusswort
Jeder mit Kenne von der einen oder anderen Sache wird an der einen oder anderen Stelle zusammengezuckt sein und sich gesagt haben, dass die Hardware Murks ist oder das Skript in die Startroutinen eingepflegt wird und zwar so und so. VNC Murks, lieber was anderes und vielleicht hätte man komplett auf das GUI verzichten können und alles gleich im Terminal einrichten können, um es noch komfortabler per ssh zu wuppen. Und das Ziehen und Stecken der RJ45-Stecker ist natürlich ebenfalls eine komisch anmutende Maßnahme, schützt aber diejenigen Unbedarften, welche nach einem Reboot in automatisch fortgesetzte Clients und Dienste blicken.
ABER, wie schon gesagt, das soll eine für möglichst viele unerfahrene User verständliche und nachahmbare Anleitung sein, einen abgesetzen Rechner einer wirkungsvollen Privatsphäre anheim fallen zu lassen. Und ja: Alles spielt noch in der IPv4-Welt und mit Blickpunkt auf Sicherheit/Anonymität im Netz empfiehlt es sich noch, ab Router bzw. Firewall IPv6 einfach zu eliminieren. Denn IPv6 gleichartig abzusichern, ist nicht trivial.