## page was renamed from Baustelle/Kernel Socks Proxy [[Vorlage(Fortgeschritten)]] [[Vorlage(Archiviert )]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Packprogramme: Archive entpacken] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] [:Kernelmodule: Umgang mit Kernelmodulen (Treibern)] }}} [[Inhaltsverzeichnis(2)]] Ein [http://ksb.sourceforge.net/ Kernel Socks Bouncer] {en} 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 [http://sourceforge.net/project/showfiles.php?group_id=129588 Sourceforge-Seite] {en} 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); }}} {{{#!vorlage Experten 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: {{{#!vorlage 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: {{{#!vorlage 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| }}} {{{#!vorlage Warnung 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: {{{#!vorlage Befehl sudo ksb26manager }}} aktivieren. Um ihn wieder zu deaktivieren muss man das Kernelmodul [5] wieder entladen. Dies geht im Terminal [4] mit dem Befehl: {{{#!vorlage 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: {{{#!vorlage Befehl 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 }}} = Links = * [http://ksb.sourceforge.net/ offizielle Webseite] {en} * [http://wiki.ubuntuusers.de/Sicherheit#Anonymitaet Artikel über Anonymität im Ubuntuusers-Wiki] * [http://de.wikipedia.org/wiki/Proxy_%28Rechnernetz%29 Proxy bei Wikipedia] {de} ## [[Diskussion(177453, Kernel socks bouncer)]] # tag: Internet, Sicherheit, System