staging.inyokaproject.org

Kernel Socks Bouncer

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Ein Kernel Socks Bouncer 🇬🇧 ist ein simples Kernelmodul, welches alle ausgehenden Internetverbindungen durch einen Socks(4/5)-Proxy oder eine ganze Proxykette umleitet.

Dabei überschreibt das Modul die unix_stream_connect-Funktion des Kernels mit seiner eigenen und alle Anwendungen die sich normal mit dem Internet verbinden werden erfasst.

Es gibt theoretische Wege um diesen Kernel Socks Bouncer herum, mit Hilfe von raw-sockets. Doch werden diese von normalen Anwendungen in der Regel nicht verwendet. Wenn man auf Nummer sicher gehen möchte, kann man zusätzlich mit iptables2 alle Verbindungen die nicht über einen Proxy gehen verbieten.

Wie jedes Kernel-Modul muss auch ein Kernel-Socks-Bouncer für jede neue Kernel-Version neu kompiliert werden. Dieser Artikel behandelt ausschliesslich ksb26, also einen Kernel Socks Bouncer für Kernel mit einer Version 2.6.X.X.

Installation

Da ksb26 nicht in den Paketquellen vorhanden ist, muss man ihn selbst kompilieren. Zuerst muss man jedoch noch diese Pakete installieren [1]:

  • linux-source

  • build-essential

  • linux-headers-generic (generic ggf. der Architektur entsprechend ersetzen [5])

Dann lädt man ksb26 von seiner Sourceforge-Seite 🇬🇧 herunter und entpackt [2] ihn.

Patchen

Patch 1

Da ksb26 für eine ältere Kernel-Version geschrieben wurde als sich in Hardy befindet, muss man den Quellcode zuerst etwas anpassen. Dazu öffnet man die Datei ksb26.c im Unterordner kernel mit einem Editor [3] und verändert die Zeilen 124/125:

if(unregister_chrdev(ksb26_major, KSB26_DEV_NAME) < 0)
       printk("[%s] Cannot unregister device %s.\n", MODNAME, KSB26_DEV_NAME);

indem man sie einfach entfernt und an deren Stelle diese Zeile einfügt:

unregister_chrdev(ksb26_major, KSB26_DEV_NAME);

Experten-Info:

Grund für diesen Patch ist, dass in neueren Kerneln die in linux/fs.h befindliche Funktion unregister_chrdev vom Typ void ist, also keinen Rückgabewert mehr liefert, welcher in einer if-Abfrage abgefragt werden kann.

Patch 2

Nun muss man noch im Stammverzeichnis des entpackten Archives die Datei install.sh mit einem Editor [3] öffnen und ersetzt die Zeile 90:

cp ksb26.8.gz /usr/man/man8/

durch diese Zeilen:

mkdir -p /usr/local/share/man/man8/
cp ksb26.8.gz /usr/local/share/man/man8/

Kompilieren

Nun kann man im entpackten Verzeichnis durch Ausführen des Installations-Skriptes das Kernelmodul und den Userland-Manager kompilieren und installieren. Um das Skript auszuführen muss man im Terminal [4] einfach nur den Befehl:

sudo ./install.sh 

eingeben.

Konfiguration

Bevor man ksb26 benutzen kann, muss man es erstmal konfigurieren. Dazu muss man zunächst die beiden Dateien /etc/ksb26/socks und /etc/ksb26/thosts erstellen. Dies geht im Terminal [4] mit diesem Befehl:

sudo touch /etc/ksb26/socks /etc/ksb26/thosts 

Socks-Proxys

In der Datei /etc/ksb26/socks legt man nun die Socks-Proxys fest, welche man benutzen möchte. Pro Proxy benutzt man dazu eine extra Zeile, deren Syntax allgemein so aussieht:

#Ssocks_IP:socks_port;socks_version|

socks_IP und socks_port dürften selbst erklärend sein. socks_version ist entweder 4 oder 5. Will man zum Beispiel nur einen Socks-Proxy auf dem Server 198.0.13.1 und Port 9050 als einzigen Proxy benutzen sieht die Datei so aus:

#S198.0.13.1:9050;5|

Achtung!

Wenn man einen Proxy auf dem Localhost benutzt, kann es zu einer Endlosschleife kommen.

Das passiert, wenn man einstellt, dass sämtlicher Traffik zu allen Zielhosts durch den Proxy gebounced werden sollen. Dann wird auch der Traffik, der durch den Proxy versendet wird, wieder zurück zum Proxy geschickt und dann nochmal und nochmal und ...

Es empfiehlt sich also den Proxy nicht auf dem selben Rechner laufen zu lassen, auf dem man den Kernel-Socks-Bouncer verwendet. Ausser man weiss, dass die Daten die den Proxy verlassen nicht zu einem Zielhost führen, welcher vom KSB erfasst wird.

Hosts

In der Datei /etc/ksb26/socks legt man nun fest, welche Verbindungen zu welcher IP und zu welchem Port letztendlich durch den Kernel Socks Bouncer umgebogen werden sollen. Die Syntax einer Zeile in dieser Datei sieht allgemein so aus:

#Hhost_ip:host_port;|

host_ip und host_port dürften wieder selbst erklärend sein. Als Hinweis sei noch erwähnt, dass als host_ip ein Stern * als Wildcard verwendet werden kann und jede IP erfasst und als host_port eine Null 0 als Wildcard verwendet werden kann und jeden Port erfasst.

Will man also, dass sämtliche Verbindungen zu allen Servern und auf allen Ports durch den Kernel Socks Bouncer umgebogen werden sollen, sieht die Datei so aus:

#H*:0;|

Benutzung

Letztendlich kann man den Kernel Socks Bouncer nun durch den Befehl:

sudo ksb26manager 

aktivieren.

Um ihn wieder zu deaktivieren muss man das Kernelmodul [5] wieder entladen. Dies geht im Terminal [4] mit dem Befehl:

sudo modprobe -r ksb26 

Deinstallation

Der Kernel Socks Bouncer besitzt leider keine Deinstallationsroutine, weswegen man die einzelnen Bestandteile von Hand deinstallieren muss. Dies geht im Terminal [4] mit den folgenden Befehlen:

sudo rm -r /etc/ksb26
sudo rm /usr/bin/ksb26manager
sudo rm /usr/man/man8/ksb26.8.gz
sudo rm /lib/modules/`uname -r`/extra/ksb26.ko 

Diese Revision wurde am 2. Dezember 2013 16:59 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Internet, Sicherheit