tinc-VPN als sicheren Exit-Node

Guten Morgen,

nachdem der letzte Eintrag jetzt ja doch wieder ein Weilchen her ist (keine Sorge, ich habe auch die Artikelserie zum Thema Sicherheit nicht vergessen, ich bin nur aktuell 1. beschäftigt und 2. nicht sonderlich motiviert) habe ich hier mal wieder ein Goodie für euch:

Ein Script, das dafür sorgt, dass man seinen tinc-VPN-Server als Exitnode für einen Tunnel nehmen kann ohne sich dabei die Finger zu brechen.

Warnung: YMMV, ich habe alles auf der Konsole gemacht, ich habe keine Ahnung, ob sich das Script mit GUI-Foo wie z.B. dem network-manager verträgt.

Vorbereitung:

tinc installieren:

# apt-get install tinc

tinc.conf erstellen:

# echo "# Kurzname des Routers/Computers
Name = $NAME_DES_NODES
# Mit folgenden Computern versuchen zu verbinden
ConnectTo = $DEIN_SERVER
# Arbeitsweise des VPN
Mode = Router
# alternativen Port zu 655 verwenden
Port = 8656" > /etc/tinc/$DEIN_NETZWERK/tinc.conf

tinc-up erstellen:

# echo "#!/bin/sh
ip addr add dev $INTERFACE 1.2.3.4/24 broadcast 1.2.255.255
ip link set dev $INTERFACE up" > /etc/tinc/$DEIN_NETZWERK/tinc-up

tinc-down erstellen:

# echo "#!/bin/sh
ip route del default
ip route add default via $ORIGINAL_GATEWAY dev $INTERFACE" > /etc/tinc/$DEIN_NETZWERK/tinc-down

Dateien ausführbar machen:

# chmod +x /etc/tinc/$DEIN_NETZWERK/tinc-*

Keys erstellen:

# mkdir /etc/tinc/$DEIN_NETZWERK/hosts
# tincd -n $DEIN_NETZWERK -K

Dieser Befehl erstellt einen private- und einen public-key. Bitte beim private-key einfach mit Enter bestätigen und beim public-key
den Speicherort /etc/tinc/$DEIN_NETZWERK/hosts/$NAME_DES_NODES wählen.

Jetzt passt Du die host-Datei an

# vi /etc/tinc/$DEIN_NETZWERK/hosts/$NAME_DES_NODES

Folgende Eintragungen sind vor dem Key zu machen:

Address = $IP_DES_NODES
Address = $FQDN_DES_NODES_1
Address = $FQDN_DES_NODES_2
Port = 8656

Geh jetzt die gleichen Schritte auf Deinem Server nochmals durch. Du solltest jetzt auf Client und Server jeweils ein Exemplar der host-Datei haben, diese sollten natürlich unterschiedliche IPs haben und unterschiedliche Namen. Mein Laptop z.B. heißt loki, der Server heißt bifroest.

Jetzt kopierst Du die host-Datei von Deinem Client auf den Server und umgekehrt:

# scp /etc/tinc/$DEIN_NETZWERK/hosts/$NAME_DES_NODES root@server.

Wenn beide Dateien ausgetauscht sind sollten die beiden Rechner miteinander reden können:

# tincd -d 3 -n $DEIN_NETZWERK

startet den tinc-daemon mit log-level 3.

# tail -f /var/log/syslog

zeigt euch den Output. Wenn keine Fehlermeldungen aufblinken sollte es so weit tun.

Bis hierher ist das alles noch nichts besonderes, ihr habt jetzt also den ersten Schritt gemacht und könnt euren Server über ein VPN erreichen. So lange jetzt aber nicht alle Verbindungen über diesen Server geroutet werden, bringt euch das nicht wirklich weit.

Um sicherzustellen, dass das ganze Ding jetzt tut, was es soll, müsst ihr zunächst dem Server beibringen, das Richtige ™ zu tun.

Einsatz als Exitnode:

Dazu verbindet ihr euch mit dem Server:

$ ssh root@server.tld

und führt dort folgende Befehle durch:

# iptables -t nat --append POSTROUTING -i $DEIN_NETZWERK -j MASQUERADE
iptables -t nat --append POSTROUTING -j MASQUERADE
iptables -t nat --append PREROUTING -i $DEIN_NETZWERK -j ACCEPT
cat /proc/sys/net/ipv4/ip_forward

Das sorgt dafür, dass euer Server Verbindungen einfach durchschleift und sie nicht zwischendrin blockiert.

Wenn der Server so weit vorbereitet ist, könnt ihr das folgende Script auf dem Client ausführen:

#!/bin/sh
#I don't think that this is necessary but I'll do it anyway:
#License: CC
 
#define variables
 
GW="$(ip r get 8.8.8.8 | gawk '{print $3}')"
TUN="$IP_DES_SERVERS_IM_VPN"
INTERFACE="$(ip r get 8.8.8.8 | gawk '{print $5}')"
EXIT="$IP_DEINES_SERVERS/32"
 
# change routes
ip route del default
ip route add $EXIT via ${GW%0x*} dev ${INTERFACE%0x*}
ip route add $TUN dev $DEIN_NETZWERK
ip route add default via $TUN dev $DEIN_NETZWERK
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
echo "routes established"
ip r show

Ja, das sind mindestens 2 dirty hacks: awk den Hex-Wert abgewöhnen und die resolv.conf überschreiben aber es funktioniert. Ich habe
das Script unter /etc/tinc/$DEIN_NETZWERK/tinc-route gespeichert. Außerdem habe ich ein weiteres Script angelegt:

# echo "#!/bin/sh
tincd -n $DEIN_NETZWERK" > /etc/tinc/$DEIN_NETZWERK/tinc-auto

Dieses dient dazu, beim Start der Netzwerkverbindung den tinc-daemon automatisch anlaufen zu lassen.

Meine /etc/network/interfaces habe ich angepasst wie folgt:

# dhcp-basiertes Kabelnetz
iface auto inet dhcp
pre-up "/etc/tinc/bifroest/tinc-auto"
post-up "/etc/tinc/bifroest/tinc-route"

Damit startet zunächst der tinc-daemon, dann bezieht das interface eine IP und dann werden die Routen angepasst.

Wenn ihr jetzt # mtr eingebt, sollte eure Route über euren Server verlaufen.

Fragen oder Anmerkungen wie immer jederzeit gern in den Kommentaren.

Und UMTS geht doch

Nachdem ich mich nun lange genug mit dem Fonic Surfstick rumgeärgert habe, kam ich noch auf eine letzte mögliche Lösung: Die Abfrage der SIM-Karten-PIN deaktivieren…

Ich habe zunächst die Windows-Installation hier am Netbook gestartet, und über die beim Surfstick mitgelieferte Software „Mobile Partner” diese PIN-Abfrage deaktiviert.

Fonic-LogoNachdem ich mich nun lange genug mit dem Fonic Surfstick rumgeärgert habe, kam ich noch auf eine letzte mögliche Lösung: Die Abfrage der SIM-Karten-PIN deaktivieren…

Ich habe zunächst die Windows-Installation hier am Netbook gestartet, und über die beim Surfstick mitgelieferte Software „Mobile Partner” diese PIN-Abfrage deaktiviert. Anschließend habe ich im KDE-Networkmanager die angegebene PIN entfernt, und schon konnte ich die Verbindung aufbauen.

Ich hatte den Surfstick unter Linux zunächst unter Ubuntu in Betrieb, was unter der Gnome-Oberfläche ohne Probleme klappte. Unter KDE habe ich den Stick bisher noch gar nicht zum Laufen bekommen. Und wenn, dann nur unter Verwendung des Gnome-Networkmanagers. Das KDE-Pendant scheint also Probleme mit der PIN-Abfrage zu haben… Ohne diese Abfrage ist der KDE-Networkmanager sehr informationsarm, wie folgender Screenshot zeigt:

KDE Networkmanager
Der KDE Networkmanager mit der FONIC-Verbindung

Fehlersuche am Eee-PC

Inzwischen habe ich mal ein bisschen Ursachenforschung betrieben, was die fehlende Netzwerk-Unterstützung auf dem Netbook angeht. Netbook… Ohne Netzwerk… na das geht ja mal gar nicht…

Ich habe nochmal die Live-CD gebootet, und dann aus dem Terminal heraus ein paar Befehle abgesetzt und die Ausgaben in Text-Dateien umgeleitet, die ich per USB-Stick auf den Desktop transportieren konnte.

Also zunächst mal diese hier:

ubuntu@ubuntu:~$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 02)
01:00.0 Ethernet controller: Attansic Technology Corp. Device 1062 (rev c0)
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
ubuntu@ubuntu:~$

Wie man sieht, werden die Netzwerk-Controller erkannt (die beiden letzten Einträge), allerdings nicht aktiviert. Also gehts weiter, so wie es bei ubuntuusers.de beschrieben ist: „Fehlersuche am Eee-PC“ weiterlesen

Hier gibts noch Leben :-)

Man mag es nicht glauben, aber es gibt hier noch Leben im Blog, und einen ganzen Haufen neue Probleme… Zunächst mal das, was mir am meisten unter den Nägeln brennt:

Seit ein paar Tagen bin ich stolzer Besitzer eines Asus Eee-PC 1005HA-M. Leider wird das Teil mit einer vorinstallierten WinDOSe ausgeliefert, soll aber sehr problemlos mit Linux laufen. Es gibt ja sogar eine angepasste Ubuntu-Version.
„Hier gibts noch Leben :-)“ weiterlesen

Zeit dass sich was dreht…

Ich komme zur Zeit gar nicht mehr dazu, hier was zu schreiben. Seit dem ich den neuen PC hier stehen habe, läuft nichts mehr so, wie es soll. Ich habe inzwischen wieder Sidux am laufen, allerdings die 32Bit-Version. Die PC-Komponenten an sich funktionieren auch ohne Probleme.

Ich komme zur Zeit gar nicht mehr dazu, hier was zu schreiben. Seit dem ich den neuen PC hier stehen habe, läuft nichts mehr so, wie es soll.

Ich habe inzwischen wieder Sidux am laufen, allerdings die 32Bit-Version. Die PC-Komponenten an sich funktionieren auch ohne Probleme.

Ich hatte den PC von der Sidux-DVD gebootet, und das komplette System von der alten auf die neue Festplatte kopiert. Anschließend noch die /boot/grub/menu.list und die /etc/fstab an die neuen Pfade angepasst, und gut.

Im Großen und Ganzen klappt das hier ganz gut. Icedove läuft mit den alten Einstellungen, und die Mails sind auch noch alle da. Iceweael hatte ja eh ein Problem mit den Schriftgrößen, und ich hatte den original Firefox laufen. Der läuft jetzt auch wieder, mit allen Einstellungen. Sogar die durch den plötzlichen Tod des alten PC abgebrochene Session wurde beim ersten Start wieder hergestellt.

Mich wundert nur, dass der Netzwerk.Anschluss als eth1 läuft, und eth0 existiert nicht. Zudem musste ich die Netzwerk-Einstellungen neu setzen. Aber vorher war auch eth0 aktiv, und durch den Device-Wechsel musste ich dem neuen Anschluss wohl die Einstellungen neu zuweisen.

Ein Problem habe ich mit meinem Multifunktions-Drucker… So kann ich zwar drucken, wie gehabt, aber nicht scannen. CUPS läuft ohne Probleme, aber Sane mag irgendwie nicht. Wenn ich X-Sane starte, knn ich den Scanner auswählen, und bekomme dann eine Fehlermeldung, die zum Abbruch des Programmes führt:

Sane-Fehlermeldung
Die Fehlermeldung von Sane

Wenn ich Kooka starte, kann ich ebenfalls den Scanner auswählen, und das Programm startet dann auch. Nur findet sich eine Fehlermeldung in dem Bereich, wo ich eigentlich die Einstellungen für den Scanner bzw. den Scanvorgang mache:

Kooka-Fehlermeldung
Das Kooka-Fenster mit der Fehlermeldung

Ich muss dazu sagen, dass ich es als normaler User versuche, aber die udev-Regeln sind entsprechend gesetzt. Aber auch als root bekomme ich diese Fehlermeldungen. Ich habe alles, was Sane heißt, neu installiert, aber ich habe damit keinen Erfolg gehabt.

Hier liegt auch noch so einiges andere im Argen, was aber im Moment nicht so wichtig ist. Aber das mit dem Scanner ärgert mich…

Und es geht doch…

Nachdem ich gestern erst mal aufgegeben habe, läuft das dLAN nun doch noch

Gestern Abend habe ich ja die aktuelle Sidux-DVD herunter geladen und gebrannt. Aber ich war irgendwie zu blöd, die DVD als Update-Quelle einzubinden. O.o

Na gut, dann installierste eben neu, die Kröte hat ja eh noch keine Daten gespeichert. Also habe ich von der DVD gebootet, und als das Livesystem gestartet war, auf Sidux-Install geklickt. Dann musste ich als erstes einige Daten wie root-Passwort, Username und Passwort für den nomalen Benutzer, und die zu verwendende Festplatten-Partition. Dann ging’s los: Die gewählte Partition wurde formatiert, und dann… passierte nichts mehr.
„Und es geht doch…“ weiterlesen

Netzwerk-Probleme

dLAN
Bild: devolo Produktfoto
© devolo AG
Der Sidux-PC meiner Tochter steht bisher ohne jegliche Netzwerk-Verbindung im Kinderzimmer, am anderen Ende der Wohnung. Jetzt will ich den PC ins Netzwerk einbinden, um zumindest mal Updates aus dem Internet zu laden, zudem sind viele enthaltene Spiele nur via Internet zu installieren.

Nun will ich nicht unbedingt 20m Netzwerkkabel durch die Bude ziehen, und WLAN möchte ich auch nicht wirklich einsetzen. Das steht zwar zur Verfügung, ich nutze es aber nur am Notebook. Daher habe ich heute ein Starter-Set für dLAN von devolo gekauft, das 14MBit-Paket mit 2 Adaptern für knappe 70 Euronen.

Auf dem Karton steht ganz dick, dass es auch mit Linux funktioniert, die Software zum einrichten ist auch auf der beiliegenden CD vorhanden. Das Problem: Ich habe den Tar-Ball entpackt und ./configure auf der Konsole gestartet. Nur bricht das ab, mit einer mir noch nichts sagenden Fehlermeldung. Irgendwas fehlt da wohl noch im System, nur finde ich die Sidux-CD nicht mehr, um das nachzuinstallieren. Jetzt läuft hier erst mal der Download der aktuellen Revision von Sidux, diesmal als DVD. Da ist wohl auch mehr Software bei. Mal sehen, ob ich damit Svenja’s System aktualisieren kann.

Nur mal eine Hausnummer: Ich habe die mit dem Internet verbundenen Rechner vorgestern auf einen 2.6.25er Kernel aktualisiert, auf Svenja’s werkelt noch ein 2.6.23er Kernel.

Fortsetzung folgt…