pptables: Perfect Privacy Remote Port Forward (RPF) automatisieren

Die Interessengemeinschaft Perfect Privacy bietet ein umfangreiches Portfolio an Anonymisierungs-Dienstleistungen an, die über einen Pauschalpreis abgerechnet werden. Dazu gehören VPN-Tunnel über OpenVPN, PPTP, IPSec, Proxyserver mittels Squid oder SSH oder Socks. Für jemanden, der im Bereich IT-Sicherheit arbeitet ein wunschlos glücklich machendes Paket.

Aus Gründen der Zurechenbarkeit teilt man sich dort allerdings eine öffentliche IP-Adresse, was dazu führt, dass keine Ports durch die Adressumsetzung an die RFC1918 VPN interne IP-Adresse weitergeleitet werden. Fast, denn fünf Ports werden auf einigen Servern durchgereicht. Möchte man diese nutzen, heisst es rechnen. Gute eineinhalb DIN A4 Seiten Text beschreiben, wie man sich die Ports mittels dem Remote Port Forward genannten System ausknobeln kann.

Mein erster Gedanke: Das geht auch automatisch!

Das PHP-Skript pptables leistet das automatische berechnen und weiterleiten von Ports, die bei Perfect-Privacy mittels RPF zugewiesen wurden. Das Skript funktioniert unter Linux mit IPTables und nur für OpenVPN.

Download: pptables-entwurf1.tar.gz


Installation


1. Abhängigkeiten installieren

apt-get install php5-cli iptables

2. Archiv nach /etc/pptables entpacken
3. OpenVPN-Konfiguration von Perfect-Privacy um folgenden Eintrag ergänzen

# pptables RPF-Helper
route-up /etc/pptables/openvpn_helper.php


Konfiguration

Das Skript hat vier Konfigurationvariablen.
$debug

  • Wert 0 – Minimale Informationen an Syslog senden
  • Wert 1 – Wie 0, mit Informationen zu jeder Portweiterleitung (Standard)
  • Wert 2 – Wie 1, mit Ausgabe des erzeugten Firewallskripts

$rules

Speicherort des durch das Skript erzeugten Firewallskripts. Der Speicherort muss beschreibbar sein.

$hosts

Speicherort der Portweiterleitungen. Die Datei ist im CSV-Format mit Trennzeichen , zu halten. Beispiel: 192.168.1.254,8080 leitet den ersten Port des Tunnels an den Host 192.168.1.254 Port 8080 UDP und TCP weiter.

$prefix

Speicherort der benutzerdefinierten Regeln, die vor den Portweiterleitungen geladen werden sollen. Hier können die üblichen Verdächtigen (default-deny, MASQUERADE) eingetragen werden.


Ablauf


Das Skript wird nach dem erfolgreichen Herstellen der VPN-Verbindung aufgerufen. Es berechnet die weiter zu leitenden Ports und erstellt ein Firewallskript. Das Firewallskript enthält eine Prämabel die alle Chains löscht. Darauf folgt der benutzerdefinierte Regelteil. Ans Ende werden die erzeugten Regeln angefügt. So ist sichergestellt, dass bei Skriptfehlern der Netzzugang trotz fehlender Portweiterleitungen funktioniert.

Wenn der ausführende Benutzer root ist, wird das erzeugte Firewallskript ausgeführt.

Die Ausgabe erfolgt via Syslog:

Oct 31 14:36:18 firewall pptables[2370]: PerfectPrivacy tun0 int. IP: 10.0.20.38
Oct 31 14:36:18 firewall pptables[2370]: PerfectPrivacy tun0 freie Ports: 40038 41038 42038 43038 44038
Oct 31 14:36:18 firewall pptables[2370]: Port TCP/UDP 10.0.20.38:44038 --> 172.16.1.21:43123
Oct 31 14:36:18 firewall pptables[2370]: Port TCP/UDP 10.0.20.38:43038 --> 172.16.1.23:23235
Oct 31 14:36:18 firewall pptables[2370]: Port TCP/UDP 10.0.20.38:42038 --> 172.16.1.21:22
Oct 31 14:36:19 firewall pptables[2370]: PerfectPrivacy/pptables online!

4 Kommentare

käsekopf 2. November 2011 Antworten

Und Windows?

Frank 18. Februar 2012 Antworten

Wow! Noch nicht probiert, aber sieht rischtisch praktisch raus… Vielen Dank dafür!!!

josen 18. Februar 2012 Antworten

Es gibt auch ein kleineres Update, dass eine kleine Hilfestellung für synchrones NAT enthält (externer Port = interner Port) und damit Probleme mit BitTorrent Clients löst. Wenn du es brauchen kannst, poste ich das Update hier auch 🙂

Außerdem neu: Bestimmte IPs nicht über den Tunnel routen

Frank 20. Februar 2012 Antworten

Das Synchrones-NAT-Feature ist eher nice-to-have, aber bestimmte IPs nicht über den Tunnel routen zu können wäre so unglaublich geil! Und zwar weil: Ich bin beruflich in China und nutze PP als Schnittstelle zur Außenwelt auf einem Sheevaplug. Ist alles relativ langsam, da die Anbindung des China-Intranetzes and das restliche Internet nur über ein paar Knotenpunkte in Peking und Shanghai funktioniert, die immer verstopft sind. Ende vom Lied: Ein paar chin. Webseiten (youku, taobao, baidu) nicht zu tunneln würde es wieder ein bisschen schöner hier machen…

Im voraus schonmal fetten Dank für das Update!

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.