Probleme mit iOS 15 und 1Blocker

Seit dem Update auf iOS 15.1 hatte ich auf meinem iPhone ein seltsames Verhalten beobachtet. Sobald ich nur noch im Mobilfunk-Netz eingewählt war, konnten bestimmte URLs per DNS nicht mehr aufgelöst werden. Im Grunde fühlte es sich so an, als ob das halbe Internet nicht mehr erreichbar war.

Über die Einstellungen von 1Blocker kann das Problem umgangen werden

Nach einiger Analyse stellte ich dann fest, das die Probleme im Zusammenhang mit der App 1Blocker bzw. deren In-App-Tracker-Firewall, welche als lokales VPN unter iOS konfiguriert wird, standen.

‎1Blocker
Preis: Kostenlos+

Nach Auskunft des Entwicklers der App gab es unter iOS wohl einige Änderungen an den Einstellungen für mobiles Netzwerk, die auch die App betreffen. In den Einstellungen der Firewall von 1Blocker kann der Filtermodus auf HTTP Proxy gesetzt werden. Anschließend funktioniert die In-App-Tracker-Firewall auch bei mobilem Internet wieder.

IP-Adresse im Firefox und Chrome trotz WebRTC verstecken

Mittels WebRTC ist es mögliche Dinge wie Videokonferenzen mit einem Browsers durchzuführen. Allerdings gibt es dabei auch ein Problem – damit Rechner hinter einem NAT diese Funktionalität nutzen können, kann ein STUN-Server, nach der öffentlichen IP-Adresse befragt werden.

Die entsprechende Konfiguration

Die entsprechende Konfiguration

Nutzt man nun eine VPN-Verbindung, kann man mit Hilfe dieser STUN-Server, nach der Adresse fragen, welche das VPN aufgebaut hat. Das entsprechende Demo kann man sich auf GitHub ansehen. Um diese Verhalten zu deaktivieren, muss in der Adresszeile des Firefox about:config eingegeben werden und der Wert media.peerconnection.enabled auf false gesetzt werden.

Unbekannte App
Preis: Kostenlos

Anschließend ist man gegen derartige Angriffe gewappnet. Für Chrome gibt es eine entsprechende Erweiterung, welche das gleiche bewirkt.

OpenVPN unter iOS nutzen

iOS bietet von Haus aus eine Reihe von Möglichkeiten für VPN Verbindungen. Leider sind Verbindungen per OpenVPN nicht darunter. Allerdings ist dies kein Beinbruch, da es eine entsprechende App im Appstore gibt. Die benötigten Dateien (Zertifikate und Konfiguration) sind dabei die selben wie bei der Mac OS X Nutzung. Nachdem die Dateien per iTunes über die Dateifreigabe importiert worden sind, können sie in der OpenVPN App importiert werden. Nachdem Import sieht man die Verbindung und den Schriftzug „Unconnected“. Mit einem Druck auf den Radiobutton wird eine Verbindung hergestellt.

Das VPN Logo in der oberen Leiste zeigt den Status an

Das VPN Logo in der oberen Leiste zeigt den Status an

An dieser Stelle fragt iOS ob man der Anwendung die Rechte zum Herstellen einer VPN Verbindung geben möchte. Dies sollte natürlich bejaht werden. Oben in der Menüleiste gibt es nun ein VPN Logo, welches einen darauf hinweist das die Verbindung steht und genutzt werden kann.

OpenVPN unter Mac OS X einrichten

Wie man OpenVPN unter Windows betreibt, hatte ich vor einigen Jahren beschrieben. Auch unter Mac OS X lässt sich das ganze einrichten. Als grafischer Client bietet sich der quelloffende und unter GPLv2 stehende Client Tunnelblick an, dessen offizielle Seite auf Google Code zu finden ist. Nach der Installation der aktuellen (stabilen) Version 3.3, kann Tunnelblick auch gleich ausgeführt werden. Für die Konfiguration des Clients benötigt man eine Datei mit den benötigten Parametern, welche die Endung „ovpn“ oder „conf“ trägt. Tunnelblick kann dabei bei Bedarf eine Beispielkonfiguration anlegen. In dieser Konfigurationsdatei werden nur folgende Werte geändert:

remote vpn.example.org 1194

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca.crt
cert client.crt
key client.key

Die ovpn Datei wird mit der ca.crt Datei und der client.crt sowie der client.key Datei (beide erhält man vom VPN Anbieter) in einen Ordner gepackt und dieser Ordner mit der Erweiterung „.tblk“ versehen. Anschließend wie der Ordner im Finder geöffnet und somit der Tunnelblick-Konfiguration hinzugefügt. Danach kann die Verbindung im Kontextmenü aktiviert werden. Nach einigen Sekunden ist die Initialisierung beendet und die VPN Verbindung kann genutzt werden.

OpenVPN auf einem Ubuntu Server aufsetzen

Wenn man sich einem unsicheren Netz bewegt, z.B. in einem freien WLAN empfielt es sich ein VPN zu nutzen. Dafür gibt es die unterschiedlichsten VPN-Dienste, welche dies gegen einen monatlichen Obolus anbieten. Besitzt man einen eigenen Server, so kann man sich mittels OpenVPN einen solchen Dienst selber aufsetzen. Im ersten Schritt wird OpenVPN installiert:

apt-get install openvpn

Aus den Beispieldateien wird das Skript „easy-rsa2“ zum Erstellen der Zertifikate an den entsprechenden Ort kopiert:

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa2

Für die Erzeugung der Zertifikate müssen einige Parameter angepasst werden. Dazu wird die entsprechende Datei im Editor geöffnet:

cd /etc/openvpn/easy-rsa2
nano vars

Der Wert Keysize „KEY_SIZE“ wird von 1024 auf 2048 erhöht. Am Ende der Datei befinden sich dann folgende Einträge:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

Nach der Konfiguration sollte das ganze dann in etwa so aussehen:

export KEY_COUNTRY="DE"
export KEY_PROVINCE="MV"
export KEY_CITY="Neubrandenburg"
export KEY_ORG="Example Inc."
export KEY_EMAIL="webmaster@example.org"
export KEY_CN="vpn.example.org"
export KEY_NAME="Example VPN"
export KEY_OU="VPN"
#export PKCS11_MODULE_PATH=changeme
#export PKCS11_PIN=1234

Die „vars“-Datei wird den Umgebungsvariablen hinzugefügt und anschließend das Masterzertifikat erstellt:

source ./vars
mkdir /etc/openvpn/easy-rsa2/keys
sudo -E ./clean-all
sudo -E ./build-ca

Damit ist die Certificaty Authority (CA) erstellt. Nun geht es an die Erstellung der Schlüssel für den Server:

sudo -E ./build-key-server server

Beim Common Name, gibt man die Domain ein unter welcher der VPN Server später erreichbar sein soll (z.B. vpn.example.org). Nach der Erstellung wird man im „keys“ Verzeichnis die Dateien „server.crt“, „server.csr“ und „server.key“ finden. Für den Diffie-Hellman Schlüsselaustausch müssen entsprechende Paramater erzeugt werden:

sudo -E ./build-dh

Nun fehlen nur noch die Zertifikate für die entsprechenden Nutzer. Ein Nutzer wird dabei mittels:

sudo -E ./build-key nutzerOderClientName

erstellt. Damit sind alle benötigten Zertifikate und Schlüssel erstellt, so das nun die restliche Konfiguration des Servers vorgenommen werden kann. Als Basis wird dabei die mitgelieferte Beispieldatei genutzt:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gunzip /etc/openvpn/server.conf.gz

Nach dem Kopiervorgang wird die Datei „/etc/openvpn/server.conf“ mittels „nano“ geöffnet. Folgende Einstellungen werden dabei angepasst werden:

ca ca.crt -> ca ./easy-rsa2/keys/ca.crt
cert server.crt -> cert ./easy-rsa2/keys/server.crt
key server.key -> key ./easy-rsa2/keys/server.key 

dh 1024.pem -> dh ./easy-rsa2/keys/dh2048.pem

;user nobody -> user nobody
;group nogroup -> group nogroup

;push "redirect-gateway def1 bypass-dhcp" -> push "redirect-gateway def1 bypass-dhcp"

Damit jegliche Kommunikaton vom Client über den Server läuft, muss die Datei „/etc/rc.local“ auf dem Server um einige Einträge ergänzt werden:

iptables -t nat -F POSTROUTING
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source IP_DES_SERVERS

Nun ist der Server konfiguriert und kann mittels:

reboot

neugestartet werden.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/OpenVPN
https://de.wikipedia.org/wiki/OpenVPN