Quantcast
Channel: sixserv blog » Web
Viewing all articles
Browse latest Browse all 10

Ivacy VPN unter Linux: PPTP/OpenVPN und Socks5-Gateway

$
0
0

Die VPN Provider sprießen, dank der “Sicherheits-Politik” in Europa und den USA, wie Pilze aus dem Boden. Seit Juli 2008 gibt es Ivacy, einem durchaus interessanten VPN-Anbieter über den es möglich ist sich der Vorratsdatenspeicherung Europas zu entziehen. Hier geht es mir darum zu zeigen wie man Ivacy unter Linux nutzen kann, genauer gesagt wie man OpenVPN und PPTP unter Linux einrichtet, die Country-Selection Funktion von Ivacy nutzt und wie man einen Socks5 Proxy einrichtet der Verbindungen über Ivacy weiterleitet, dazu später mehr. Diese Anleitung sollte nicht nur mit Ivacy funktionieren, alle VPN-Anbieter bieten OpenVPN oder PPTP(das proprietäre VPN Protokoll von Microsoft).
Update: Habe einen OpenVPN-Abschnitt eingefügt.
Update 4.2.09@20:50: OpenVPN-Abschnitt überarbeitet.
Update 8.2.09@22:15: Artikel nochmals überarbeitet.
Update 21.4.09@22:00: Privoxy-Abschnitt eingefügt.

Bevor es losgeht sollte ich vielleicht noch erwähnen das es sich hierbei um keine Anleitung für Linux-Anfänger oder Ubuntu/Suse-”Profis” handelt. *g*

[toc hint="hover hint" class="toc-right" style=""]

0. Einleitung und Sicherheit

Ich stelle die Verbindung zu Ivacy über eine extra eingerichtete Virtuelle Maschine her, die auf dem VMWare Server meiner 24/7 Kiste läuft. Darauf habe ich eine minimale Arch Linux-Installation am laufen. Dieser Server dient mir als Socks5-Gateway ins Ivacy VPN-Netz.

In wie weit Ivacy auch Genial ist, bleibt die Frage der Vertrauenswürdigkeit eines VPN-Dienstleisters bestehen, insbesondere wenn er so günstig wie Ivacy ist. Die Frage muss sich jeder selbst stellen und daraufhin entscheiden welche Art von Traffic er über das VPN schicken will. Ein Socks5-Gateway erlaubt es sehr viel genauer zu bestimmen und zu kontrollieren was über Ivacy ins Internet geht.

0.1. NAT und DoubleVPN

Bei Ivacy bekommt man keine statische oder dynamische IP. Vielmehr bekommt jeder die gleiche, per NAT werden alle Anfragen nach außen geleitet. Wenn sich so hunderte User hinter einer einzigen IP verbergen, verhilft das allen zu einem erheblichen Grad an Anonymität. Benötigt man einen offenen Port der zu einem Geforwarded wird, so kann man diesen einfach auf der Webseite anfordern und bekommt einen zufälligen zugewiesen.
Außerdem ist es möglich seinen Traffic über 2 Hops von Ivacy zu leiten um so die Anonymität noch zusätzlich zu erhöhen.

1. OpenVPN

OpenVPN muss in einer Version >= 2.1 installiert sein(!). Je nach Distribution installieren und darauf achten das ein tun-Device entsteht. In Arch Linux muss man sich selbst um das erstellen kümmern. Im Windows XP(nicht im Linux Abschnitt warum auch immer) gibt es die notwendigen Konfigurations-Dateien sowie Zertifikate(!). Die Konfigurationsdatei für OpenVPN kann praktisch übernommen werden:

client
dev tun
proto udp
remote openvpn.ivacy.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ivacy-ca.crt
cert /etc/openvpn/ivacy-client.crt
key /etc/openvpn/ivacy-client.key
tls-auth /etc/openvpn/ivacy-tls.key 1
ns-cert-type server
comp-lzo
verb 3
# Mit Passwort Datei: (geht nur wenn openvpn
# mit "--enable-password-save" kompiliert wurde!):
auth-user-pass /etc/openvpn/password
# sonst so:
auth-user-pass
redirect-gateway
reneg-sec 0
up /etc/openvpn/ivacy-up.sh
down /etc/openvpn/ivacy-down.sh

Die /etc/openvpn/password-Datei enthält Username – neue Zeile – Password, doch wie schon erwähnt kann es sein, das dies nicht funktioniert wenn openvpn ohne “–enable-password-save” kompiliert wurde. Danach noch die Zertifikat-Dateien erstellen die es auf der oben erwähnten Seite auf ivacy.com gibt und die richtigen Berechtigungen(600) geben.

Die up und down Scripte können wohl auch durch /etc/openvpn/update-resolv.conf ersetzt werden(sofern vorhanden), siehe dazu auch den Artikel auf Geekosphere. Ich verwende die Scripte auch dazu um den Socks-Daemon zu starten/beenden. Hier die Scripte:

/etc/openvpn/ivacy-up.sh:

#!/bin/bash
 
cp /etc/resolv.conf /etc/resolv.conf.last
echo "nameserver 1.254.2.2" > /etc/resolv.conf
echo "nameserver 1.254.2.3" >> /etc/resolv.conf
 
/usr/sbin/sockd -D

/etc/openvpn/ivacy-down.sh:

#!/bin/bash
 
cp /etc/resolv.conf.last /etc/resolv.conf
killall -9 sockd

Die DNS-Server können der Tabelle unten entnommen werden, jedoch ist mir nur ein OpenVPN-Server von Ivacy bekannt, eben der in Russland, deshalb ist auch keine Country-Selection über OpenVPN möglich! (höchstens über die Double-VPN Funktion) Die OpenVPN Verbindung startet man darauf mit:

openvpn --script-security 3 system --config /etc/openvpn/ivacy.conf

Nicht vergessen in der /etc/socksd.conf-Datei, “external” auf das verwendete tun-Device(tun0 z.B.) einzustellen.

2. PPTP

Hierfür braucht es pptp(nicht den Server, den Client!), in Arch-Linux heisst das Paket “pptp-linux” in Ubuntu “pptpclient” und auch sonst gibt es das bestimmt bei jeder Distribution als Paket. Also zuerst vergewissern wir uns das pptp installiert ist:

$ pptp --version
pptp version 1.7.2

Die Konfiguration besteht nur 2 Dateien, zunächst /etc/ppp/chap-secrets:

[Username] PPTP [Password] *

Dein Benutzername und Passwort von Ivacy eintragen. /etc/ppp/peers/ivacy

pty "pptp pptp2.ivacy.com --nolaunchpppd"
name [Username]
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp

Auch hier den Usernamen ändern. Die Verbindung kann mit

$ pon ivacy debug dump logfd 2 nodetach

getestet werden. Wird die local und remote IP angezeigt funktioniert alles.

2.1. Country Selection

Ivacy ermöglicht es den VPN-Server nach Land auszuwählen. Zur Verfügung steht USA, England und Russland. Auswählen kann man das unter Windows mit ihren Ivacy Monitor(und den anderen Programmen von Ivycy). Der PPTP-Host bestimmt das Land:

pptp2.ivacy.com	Russland
pptp3.ivacy.com	England
pptp4.ivacy.com	USA

Dies also entsprechend oben anpassen, je nach aus welchem Land man ins Internet will. (VDS gilt übrigens auch in England)

Die wichtigsten Einstellungen, das kann sich natürlich alles ändern und man sollte das entsprechend ändern sofern ifconfig ppp0 eine andere IP zeigt:
Russland:
PPTP-Server: 213.232.208.167 (pptp2.ivacy.com)
Gateway: 1.254.2.167
DNS Primary: 1.254.2.2
DNS Secondary: 1.254.2.3

England:
PPTP-Server: 81.222.64.214 (pptp3.ivacy.com)
Gateway: 1.254.3.131
DNS Primary: 1.254.3.2
DNS Secondary: 1.254.3.3

USA:
PPTP-Server: 208.88.226.38 (pptp4.ivacy.com)
Gateway: 1.254.4.128
DNS Primary: 1.254.4.2
DNS Secondary: 1.254.4.3

2.2. Verbindung herstellen

Hier ein Auszug wie das Verbinden funktionieren kann(mit pptp2.ivacy.com, IP: 213.232.208.167):

$ route del -net default # Das Entfernen des Default-Gateways
# Der PPTP-Server soll über den eben gelöschten Default-Gateway geroutet werden:
$ route add -host 213.232.208.167 gw 10.0.0.1
$ pon ivacy # Die PPTP-Verbindung wird hergestellt
# Nach ein paar Sekunden sollte die Verbindung aufgebaut sein...
$ ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol
          inet addr:1.2.127.104  P-t-P:1.254.2.167  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1406  Metric:1
          RX packets:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2774 (2.7 Kb)  TX bytes:1189 (1.1 Kb)
# Die P-t-P IP wird als neuer Default-Gateway eingetragen:
$ route add -net default gw 1.254.2.167
$ echo "nameserver 1.254.2.2" > /etc/resolv.conf # Eintragen der DNS Adressen:
$ echo "nameserver 1.254.2.3" >> /etc/resolv.conf
# Noch als kleiner Hint:
$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
213.232.208.167 10.0.0.1        255.255.255.255 UGH   0      0        0 eth0
1.254.2.167     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         1.254.2.167     0.0.0.0         UG    0      0        0 ppp0

Die Verbindung sollte jetzt stehen. Ich bin ziemlich sicher das das alles viel einfacher geht, aber mir erschien dieser Weg als der logischste, natürlich schreibt man sich das alles in ein entsprechendes Shell-Skript. (Update: siehe Unten, ivacyConnect.rb)
Hier noch das Gegenstück, das beenden der Verbindung und umleiten der Route:

$ poff ivacy
$ route add -net default gw 10.0.0.1 # Bei mir ist 10.0.0.1 der Gateway, entsp. ändern
$ echo "nameserver 10.0.0.1" > /etc/resolv.conf # Was auch immer euer DNS ist.

2.3. Connect Script

Ich dachte ich stelle auch mal mein Script online mit dem ich die Ivacy Verbindung aufbaue: ivacyConnect.rb
Das ganze ist ein Ruby Script, muss natürlich als root ausgeführt werden. Außerdem sollten die Werte am Anfang an das eigene Netzwerk angepasst werden. Es basiert darauf das in der /etc/ppp/peers/ivacy als Hostnamen für den PPTP-Server, “pptp.ivacy.com” eingetragen ist. Je nach Land ändert es dann die IP dieser Domain über die /etc/hosts Datei.

3. Socks v5 Server

Der Vorteil eines solchen Socks5 > Ivacy Gateways liegt einfach darin, das man pro Anwendung entscheiden kann ob sie über Ivacy gehen soll oder nicht. Dazu im nächsten Teil mehr, erstmal zum Einrichten des Socks5 Servers. Zum Einsatz kommt Dante, einem einfach zu konfigurierenden Socks-Server. (Bei Arch Linux ist Dante im AUR zu finden.) /etc/sockd.conf:

logoutput: syslog stdout
internal: eth0 port = 1080
external: ppp0 # -- bei OpenVPN zu tun0 oder besser gesagt tunN ändern.
 
method: none
clientmethod: none
extension: bind
 
connecttimeout: 120   # on a lan, this should be enough if method is "none".
iotimeout: 0 # or perhaps 86400, for a day.
 
client pass {
        from: 10.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}
pass {
        from: 10.0.0.0/8 to: 0.0.0.0/0
        command: bind
        log: connect error
}
pass {
        from: 0.0.0.0/0 to: 10.0.0.0/8
        command: bindreply udpreply
        log: connect error
}
pass {
        from: 10.0.0.0/8 to: 0.0.0.0/0
        protocol: tcp udp
}

Da der Server ohnehin nur in meinem LAN erreichbar ist, verzichte ich auf jedwede Authentifikation. Gestartet wird der Socks5-Dante mit:

$ sockd
$ sockd -d # Debug Mode, nützlich bei fehlerhafter Konfiguration

3.1. Firefox

Von Haus aus kann Firefox Socks Proxy verwenden. In den Netzwerk Einstellungen also die IP des VPN-Gateways und 1080 als Port einstellen. DNS-Requests werden per Default nicht über den Socks geleitet. Um dies zu aktivieren, verändert man die Config-Variable “network.proxy.socks_remote_dns” über “about:config”.
Eine weitere Möglichkeit ist z.B. das FoxyProxy-AddOn. Damit kann sehr schnell der Socks aktiviert werden, oder zwischen eingestellten Proxys ausgewählt werden. Wichtig ist auch hier die DNS über Socks Funktion zu aktivieren. Zu finden in den FoxyProxy Options -> Global Settings -> Use SOCKS proxy for DNS lookups.

FoxyProxy Firefox-Plugin

Um sich nicht durch Cookies usw. zu verraten empfiehlt es sich ein neues Profil fürs Surfen per VPN anzulegen. Praktisch ist es auch einen zweiten Firefox mit Proxy laufen zu lassen.

3.2. TSocks

Das kleine Programm tsocks erlaubt das transparente Umleiten des Traffics. Nachdem es eingerichtet ist kann man so jedes beliebige Programm über den Socks5 Ivacy Gateway laufen lassen. Nachdem man tsocks installiert hat muss noch folgende Konfigurationsdatei angelegt werden:

/etc/tsocks.conf

local = 10.0.0.0/255.255.255.0
 
server = 10.0.0.30
server_port = 1080
server_type = 5

Jedes beliebige Programm kann jetzt über den Socks-Server geleitet werden, auch dann wenn es selbst gar keinen Socks-Proxy unterstützt. Dazu wird einfach tsocks vorangestellt, z.B.:

tsocks wget http://google.com/

Zu beachten ist, das die DNS-Aufrufe weiterhin über den in resolv.conf eingestellten DNS-Server laufen und so neben dem kleinen Anonymitätsverlust, auch die internen Ivacy-Seiten(.site) nicht aufgelöst werden können.

4. Privoxy: HTTP Proxy Server

Viele Anwendungen unterstützen keine Socks5 Proxys, daher ist ein gewöhnlicher HTTP-Proxy manchmal ganz praktisch. Privoxy kennen bestimmt viele in Verbindung mit Tor, für unsere VPN-Gateway VM muss lediglich die folgende Zeile in der Konfiguration(/etc/privoxy/config) geändert werden:

listen-address  127.0.0.1:8118
ändern auf die lokale IP:
listen-address  10.0.0.30:8118

Das war dann schon alles zum Thema Ivacy, ich werde den Artikel auch in Zukunft überarbeiten wenn mir neues dazu einfällt. Anmerkungen und Feedback ist natürlich wie immer gern gesehn, ich hoffe einigen Linux-Usern damit geholfen zu haben.


Viewing all articles
Browse latest Browse all 10

Trending Articles