Am Android Tablet oder Telefon mit LineageOS für Privatsphäre sorgen. (Teil 5)

LineageOS, ein alternatives Android Betriebssystem für Tablet und Telefon!

LineageOS ist ein Betriebssystem für Smartphones und Tabletcomputer. Es ist eine Modifizierung des von Google entwickelten freien Betriebssystems Android und der Nachfolger des eingestellten Custom-ROMs CyanogenMod. LineageOS ist Freie Software und wird von einer Gemeinschaft Freiwilliger entwickelt, die das Betriebssystem gratis zum Herunterladen bereitstellen. Mehr Infos auf der Wikipedia Seite (https://de.wikipedia.org/wiki/LineageOS)

Vorraussetzung ist ein Geräte welches offiziell unterstützt wird (https://wiki.lineageos.org/devices/) oder ein Custom Rom, z.B. von https://forum.xda-developers.com/ existiert.

WICHTIG: Mit diesem Vorgang verlieren Sie Ihre Garantie, können Ihr Gerät zerstören und niemand wird Ihnen helfen. Ich beschreibe hier den Vorgang meiner Umstellung und ermutige Sie in keinem Fall den Vorgang an Ihrem Gerät durchzuführen. Wenn Sie es machen, dann sind Sie auf sich alleine gestellt und für den Fall dass Sie das Gerät zerstören sind einzig und alleine Sie selbst verantwortlich. Niemand und schon gar nicht ich, hafte für Dinge die Sie mit Ihrem Gerät tun!

Teil 5

Upgrade auf LineageOS 17.1 (Android 10 basiert) und Custom Script Erweiterung um den DNS außerhalb des Home WLAN’S über Orbot (Tor) zu routen).

Basierend auf dem ersten Tests von LineageOS auf einem Samsung SM-T585 Tablet (https://kmj.at/2018-09-12-android-lineageos-samsung-sm-t585-privacy/), sowie dem Teil 2 der Serie (https://kmj.at/2018-10-01-android-lineageos-privacy-teil2/) wurden im Teil 3 die ersten Releasewechsel durchgeführt (https://kmj.at/android-lineageos-privacy-teil3/). Teil 4 (https://kmj.at/android-lineageos-privacy-teil4/) beschäftigt sich mit

Zwischenzeitlich kann LineageOS auch als virtuelle Maschine betrieben werden (https://kmj.at/betrieb-einer-virtuellen-maschine-vm-mit-lineageos-android-unter-proxmox/).

Im Teil 4 ging es bereits darum, den kompletten Datenverkehr ins Internet und damit die Übertragungvon Daten zu Drittanbietern zu verhindern, sowie auch das “Calling Home” von Software (Apps) zu verhindern und trotzdem eine perfekte Funktion zu erhalten.

Nun wollen wir jedes DNS Leak außerhalb des Home WLAN’s unterbinden und die DNS Abfragen über Tor umleiten.

Schritte:

  • Sichern der Apps und Daten am besten mit Titanium
  • Installation von LineageOS 17.1 laut Project Webseite am Gerät
  • Einrichten von Magisk zum rooten der Device
  • Setup von Afwall+ und Orbot
  • Rücksichern von Apps und Einstellugnen mit z.B. Titanium

Der komplette Vorgang war absolut unproblematisch. Es gab nur ein Problem, dass ein Problem geschaffen hat. Im F-Droid Store ist AFWall+ in der Version 3.4.x verfügbar und diese Version hat Probleme mit LineageOS 17.1 am Mobile Interface.

Die Installation des 3.5.x Paketes, welches auf Github (https://github.com/ukanth/afwall/releases) zur Verfügung steht, löste das Problem und nun sind wirklich auch alle Cor und System Prozessen ohne Internet Zugang.

Durch das Custom Script haben alle Apps Zugang zu meinen Servern (Statische IPs) und benötigen keine Freigabe in AFWall+! Alle Browser und der Updater erhalten Wifi,Mobile und Tor als Freigaben, damit wird der komplette Traffic über Tor (Orbot) geroutet.

Einige wenige Ausnahmen erhalten Wifi und Mobile und können direkt ins Internet.

Damit ist die Device sehr gut geschützt. Nur ein DNS leak Risiko bleibt, sobald wir uns im mobilen Datennetz (3G,4G,5G) befinden. Im Home Wlan sind wir mit Pi-Hole und Pfsense, incl. DNS-over-TLS forwarding zu eigenen, externen DNS Servern gut geschützt. Im mobilen Datennetz sind wir von dem jeweiligen Netz Provider abhängig, welcher DNS zuweisen kann und auch einen transparenten DNS Proxy mit Mitlesefunktion einrichten kann. Dies wollen wir verhindern.

DNS am rmnet[*] über Orbot DNS Port 5400 umleiten

Das mobile Daten Interface heisst rmnet0. Wir müssen nun die ausgehenden Pakete, welche unser Gerät über rmnet0 zu einer IP und deren Port 53 verlässt so umleiten, dass wir den von Orbot auf 127.0.0.1 Port 5400 angebotenen DNS verwenden. Dieser wird dann verschlüsselt über Tor geleitet.

AFWALL+ Custom Script erweiter

Wir ändern das Script aus Teil 4, welches die passenden Iptable Einträge zum Zugriff auf die eigenen Server beinhaltet. Ich bevorzuge generell Self-Hosting im eigenen Hause, jedoch ist die Vorgangsweise bei einem gemieteten VPS gleich.

Das Script sollte wie folgt aussehen:

# Load in AFWALL with
# . /pathoscript/script
# the ". " is required
# Necessary at the beginning of each script!
IP6TABLES=/system/bin/ip6tables
IPTABLES=/system/bin/iptables

# Rules for KMJ
# https://github.com/ukanth/afwall/wiki/CustomScripts

# Deny IPv6 only connections  
# We do not have IPv6 here
$IP6TABLES -P INPUT DROP
$IP6TABLES -P FORWARD DROP
$IP6TABLES -P OUTPUT DROP

# Block all IPv6 in IPv4 communication (for native IPv6 connections only!)
# This must be done in our IPv4 tables!
$IPTABLES -A INPUT -p 41 -j DROP
$IPTABLES -A FORWARD -p 41 -j DROP

# Drop normal Multicast-addresses 
$IPTABLES -A INPUT -s 224.0.0.0/4 -j DROP
$IPTABLES -A INPUT -d 224.0.0.0/4 -j DROP
$IPTABLES -A INPUT -s 240.0.0.0/5 -j DROP
$IPTABLES -A INPUT -d 240.0.0.0/5 -j DROP
$IPTABLES -A INPUT -s 0.0.0.0/8 -j DROP
$IPTABLES -A INPUT -d 0.0.0.0/8 -j DROP
$IPTABLES -A INPUT -d 239.255.255.0/24 -j DROP
$IPTABLES -A INPUT -d 255.255.255.255 -j DROP

# TEIL5 DNS over Tor
# allow connections to p5400 then nat
# Force dns to use orbots port 5400 for rmnet[*] interface
$IPTABLES -A "afwall" -d 127.0.0.1 -p udp --dport 5400 -j ACCEPT
$IPTABLES -t nat -I OUTPUT -o rmnet+ -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:5400
$IPTABLES -t nat -I OUTPUT -o rmnet+ -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:5400
# END DNS over Tor

# EDIT HERE !!!!!!!!!!!!!!!!!!!!1
# Always allow connections to our own IP Blocks no matter the interface
$IPTABLES -A "afwall" --destination "IP1/Mask" -j RETURN
$IPTABLES -A "afwall" --destination "IP2/Mask" -j RETURN
$IPTABLES -A "afwall" --destination "IP3/Mask" -j RETURN

# if you are in need edit here too
# We add  our home nets if we are on wifi 
# we never connect to foreign wifi's
$IPTABLES -A "afwall-wifi" --destination "192.168.56.0/24" -j RETURN
# allow special external IPs if we are on via wifi/LAN
$IPTABLES -A "afwall-wifi" --destination "IPspecial" -j RETURN

Speichern Sie das Script als afwall.sh am Internen, oder SD Speicher und fügen Sie das Script in den Einstellungen -> Script so hinzu:

. /pfad/zumscript/afwall.sh

Wichtig, es muss mit einem . UND einem Leerzeichen beginnen, danach der Pfad und der Scriptname. “Apply rules” in der AFWALL+ dürfen keinen Fehler erzeugen und mit Rules anzeigen müssen die Regeln sichtbar sein. NUR DANN WEITERMACHEN!!

Nun kann die AFWALL+ fertig eingerichtet werden. Alle Apps, welche auf eigene Server und Dienste zugreifen, z.B. E-Mail, Riot Messenger, Mastodon Client, Owncloud, und vieles mehr benötigt keine Freischaltung des Datenverkehrs in der AFWALL+ Firewall, da der Zugriff zu den eigenen Servern, und wirklich nur zu diesen, im Script erlabut ist. Damit kann bei fehlerhafter App, bzw. einem Angriff die App keine Daten zu anderen senden. Weiters wird damit Tracking und vieles unschöne mehr, unterbunden.

Für mich ist es eine ziemlich perfekte Lösung, da die Privatsphäre nun extrem gut gesichert ist und alle Funktionen einwandfrei funktionieren.

In dieser Form ist Android/LineageOS auch für Firmen mit smarten Mitarbeitern verwendbar.

Paranoia

Wer jetzt glaubt, er hat nichts zu verbergen sollte sich, vor einer Aussage in diese Richtung, den folgenden Filme ansehen:

“Nothing to Hide (2017)”

available on one of these links:

auch in Deutsch verfügbar:

Nächste Schritte

Die Zukunft von mobilen Geräte bei professionellen Nutzern mit Bedarf an Privatsphäre wird sicher in Linux basierten Endgeräten liegen. Vermutlich wird es aber noch ein bis zwei Jahre dauern, bis diese als “Daily Driver” verwendbar sind. Mit der nun verfügbaren, sehr gut abgesicherten LineageOS Version ist bis dahin aber ein sehr sicherer Begleiter verfügbar.

Join my public room in the Matrix

If you like this blog entry feel free to join my public room by entering /join #kmj:matrix.ctseuro.com anywhere in the box to send a message!

Feedback via Matrix/Riot welcome!