| | #1 |
| Erfahrener Benutzer Registriert seit: 10.07.2008
Beiträge: 171
| Leider wird dieses Thema wohl nicht besonders viele interessieren. Doch statt ich mich die ganze Zeit aufrege, dass hier aus technischer Sicht tote Hose ist, versuche ich etwas Input zu liefern. Natürlich mit der Hoffnung, dass andere welche zur Zeit mehr nur passiv unterwegs sind über die Feiertage auch etwas Zeit finden und es mir nachtun. SSH ist ein verschlüsseltes Protokoll um per Remote eine Netzwerkverbindung herzustellen. ssh um eine Remoteshell zu erhalten und scp um Dateien zu kopieren sind für Linux und Unix Admins wohl etwa die meistgebrauchten Tools. Natürlich gibt es auch Tools für Windows: z.B. Putty und winscp. Wenn ich nun einen ssh Server habe, kann ich relativ einfach einen Socket zu diesem einrichten, welchen ich für eine gesicherte Verbindung gebrauchen kann: ssh -D $port -N -f $user@$host Als $port ist nicht der Remoteport sondern ein lokaler Port gemeint, welcher noch frei ist, dies kann Beispielsweise 4444 sein. Paramet -N steht dafür, dass auf der Gegenstelle nichts ausgeführt wird, -f damit das ganze im Background verläuft. $user und $host dürfte klar sein. Mit ps -ef | grep ssh sehen wir nun, dass eine Verbindung besteht: tux@main:~$ ps -ef | grep ssh root 6409 1 0 12:20 ? 00:00:01 ssh -D 666 tux@lap -N -f tux 6593 6576 0 13:39 pts/1 00:00:00 grep ssh Nun kann man im Browser localhost auf dem eingestellten Port als Proxy verwenden. Der macht dann jegliche Verbindungen über diesen Server. Stellt man im Firefox in about:config network.proxy.socks_remote_dns auf true um, geschiet auch die Namensauflösung über den Proxy. Selbstverständlich funktioniert das ganze auch mit Windows (Putty): YouTube - SSH Tunneling Das bringt es: Man hat eine abhörsichere Verbindung. Es ist schneller eingerichtet als ein üblicher Proxy, VPN oder ein forwarding mittels einer Firewall. Man ruft eine Webseite vom Server her aus an. (Steht mein ssh-Server in Russland, habe ich eine russische IP-Adresse). Einsatzzweck: Wenn man zum Bleistift ans 25C3 geht und man annehmen muss, dass alle unverschlüsselten Passwörter welche man auf irgendwelchen Webforen oder sonstigem eingibt mitgeschnitten werden. Wenn man einen Hardwaredefekt hat und der lokale Computer über das Wlan des Laptops ins Internet muss. Wenn man einer Webseite vorgaukeln möchte, dass man aus dem Land des ssh-Servers kommt. Wenn man aus anderen Gründen (wie eine ausgereifte Paranoia) eine gesichterte Verbindung haben möchte. Leider habe ich noch nicht herausgefunden, wie man Systemweit den Socket benutzen kann. Evtl geht das mit iptables, da bin ich aber noch am suchen. |
| | |
| | #2 | |
| muh sager | Zitat:
Einfach installieren, in die /etc/tsocks.conf schreiben: Code: server = 127.0.0.1 server_port = 4444 Wenn man für alle Programme den Tunnel nutzen will, einfach "tsocks bash" starten, dann nutzen alle Programme, die aus der bash gestartet werden, den Tunnel | |
| | |
| | #3 |
| Die Pommesfee | Wenn man zum Bleistift ans 25C3 geht und man annehmen muss, dass alle unverschlüsselten Passwörter welche man auf irgendwelchen Webforen oder sonstigem eingibt mitgeschnitten werden. hum ich dachte die sind selber gegen vorratsspeicherung und mitschnüffeln?
__________________ Hiragana & Katakana: FERTIG Kanji: Sind viele, aber am lernen www.pixelbanane.de Die Seite über Bananen |
| | |
| | #4 | |
| der Graue Administrator | Zitat:
Ich hab mich jetzt kurz über tsocks schlau gemacht. Der Befehl tsocks ist nichts weiter als ein Shellscript, was die Umgebungsvariable LD_PRELOAD setzt. Das heisst, man kann via tsocks on|off das ganze für die aktuelle Shell aktivieren bzw. deaktiveren. Will man das ganze systemweit, muss man nur die Variable LD_PRELOAD in die /etc/profile (oder die distributionsabhängige Variante) schreiben. tsocks muss natürlich installiert sein. Code: export LD_PRELOAD="/usr/lib/libtsocks.so $LD_PRELOAD" Wenn man ssh als SOCKS-Server verwendet, lohnt es sich in der /etc/tsocks.conf noch die Option server_type = 5 zu setzen, damit SOCKS5 verwendet und auch UDP und IPv6 weitergeleitet wird. @chiaki: Da wird auch nichts mitgeschnitten von den Betreibern. Wohl aber kann ein gelangweiltes Scriptkiddie dort ein bisschen mitschneiden. | |
| | |
| | #5 |
| Erfahrener Benutzer Registriert seit: 10.07.2008
Beiträge: 171
| tsocks ist zwar interessant, aber so ganz funktionieren tut es bei mir nicht: Die Tools wie ping, nslookup usw gehen nicht über den Socket. Die Namensauflösung funktioniert ebenfalls nicht mit dem Socket. |
| | |
| | #6 |
| der Graue Administrator | Nunja, tiefer als mit tsocks kannst du SOCKS kaum verankern. Dann muss schon OpenVPN ran ![]() die libtsocks.so überschreibt die üblichen C-Funktionen zum erstellen einer TCP oder UDP Verbindung, ist ein Binary statisch gelinkt oder verwendet weder TCP oder UDP (ping bentuzt ja IMCP und nslookup DNS), dann geht das nunmal nicht. Zwar soll tsocks DNS über TCP umleiten können, aber so ganz funktionieren tut das nicht. Das SOCKS Protokoll sieht das auch nicht vor. Von daher, selbst wenn es möglich wäre, SOCKS als virtuelles Interface (tun0 oder so) anzubieten, müsste ein Hack für IMCP und DNS her, und dafür hat man dann ja VPN. Und das wiederum haben wir ja nicht hingekriegt. Nachtrag: Die einige Möglichkeit, DNS-Requests zu verschlüsseln, ist via SOCKS5. Der Firefox kann das über die oben genannte Option - dann wird der Hostname dem SOCKS-Proxy übergeben und dieser löst ihn dann auf. Mit tsocks geht das nicht, weil dieses wie gesagt die C-Funktionen überschreibt und dort gibt es getrennte Funktionen für das auflösen Hosts und das öffnen einer TCP-Verbindung. Nachtrag 16.07.09: Natürlich ist DNS keine eigene Transportschicht, das war Unsinn. Das Problem ist, dass SOCKS nur Sockets umleitet, und tsocks sich vor die Socket-Funktionen des Betriebsystems stellt und so die Sockets umleitet. Die DNS-Auflösung verwendet offenbar andere Funktionen und lässt sich damit nicht umleiten. Geändert von gandro (16.07.2009 um 15:42 Uhr) |
| | |
| | #7 |
| Erfahrener Benutzer Registriert seit: 10.07.2008
Beiträge: 171
| Nunja ... wenigstens ist mir jetzt der Unterschied zwischen einem SSH-Tunnel und einem VPN klar. |
| | |
| | #8 |
| der Graue Administrator | Woohoo, habs rausgekriegt wie man DNS doch umleitet. Nach mehreren gescheiterten Versuchen, DNS Requests abzufangen und irgendwie erst ab den SSH-Server abzusenden, habe ich eine Lösung gefunden: ttdnsd : The TOR TCP DNS Daemon Ein Daemon, der eigentlich für TOR konzipiert ist - doch weil TOR ebenfalls auf SOCKS und tsocks zurückgreift macht es keinen Unterschied. Das Programm macht eigentlich nichts, als auf localhost nach DNS-Anfragen zu warten und diese an echte DNS-Server weiterzuleiten. Alles was man tun muss, ist 127.0.0.1 als Nameserver einzutragen und ttdnsd via tsocks starten. Der voreingestellte OpenDNS-Nameserver tut bei mir seinen Dienst, die meines ISP leider nicht (ich habe das Gefühl, die kommen mit TCP nicht so ganz zurecht) Nachtrag: ttdnsd benötigt ohne TOR den Parameter -c. Warum auch immer. Geändert von gandro (23.12.2008 um 21:17 Uhr) |
| | |
| | #9 |
| Erfahrener Benutzer Registriert seit: 10.07.2008
Beiträge: 171
| Hab das ganze nochmal angeschaut und herausgefunden wie einfach sich doch ein VPN mit ssh einrichten lässt: Eine einfache Socketverbindung kann mit ssh -D 5000 -N -f $user@$host eingerichtet werden. Auf Server sowie Client reicht dazu ein normales Benuzterkonto ohne spezielle Rechte aus. Die meisten Programme welche auf das Internet zugreifen lassen sich über diesen Socket tunneln, wie etwa Firefox und Pidgin. Für die anderen gibt es das Programm tsocks welches die TCP-Verbindungen umleiten kann. Das funktioniert allerdings nicht mit allen Programmen (etwa wget weigert sich da mitzumachen) und ist zudem nicht besonders Komfortabel. Hat man nun ein Root-Login auf Server sowie Client bietet ssh die Möglichkeit ein richtiges VPN einzurichten. Bedingung ist, dass man sich am Server mit root über ssh einloggen kann. Da manche Distributionen (wie etwa Ubuntu) ziemlich restriktive Berechtigungen haben muss in der /etc/ssh/sshd_config PermitRootLogin auf yes gesetzt sein. In der /etc/security/access.conf muss das Rootlogin auch erlaubt sein (Beispielzeile "+ : root : ALL" - dies kann allerdings auch auf gewisse Hosts eingeschränkt werden), dazu noch die Zeile "account required pam_access.so" in /etc/pam.d/sshd. Setzt man nun das root-Passwort neu (damit die Einstellungen übernommen werden) sollte das Login mit root per ssh funktionieren und wir können loslegen: --- Einrichten eines VPN mittels SSH --- ssh -NTCf -w 0:0 root@server Nach dem Ausführen dieses Befehls sollte man auf dem Client sowie auf dem Server ein Netzwerkinterface mit dem Namen tun0 haben. Nun muss dies noch konfiguriert werden: ifconfig tun0 192.168.2.90 pointopoint 192.168.2.80 Respektive auf dem Server: ifconfig tun0 192.168.2.80 pointopoint 192.168.2.90 (IP-Adressen sind frei wählbar) Auf dem Client noch die Defaultroute anpassen: route add default gw 192.168.2.80 netmask 0.0.0.0 Nun kann der Client über den Server ins Netzwerk / Internet zugreiffen. Allerdings weiss der Server noch nichts mit den Paketen anzufangen. Einerseits muss TCP-Forwarding eingeschaltet sein: echo "1" /proc/sys/net/ipv4/ip_forward Nun noch ein NAT einrichten, damit die Pakete auch den Rückweg wiederfinden: iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE (wlan0 ist Interface vom Netzwerk auf dem man sich den Zugriff wünscht) Informationsquelle: http://www.cyberciti.biz/tips/openssh-ro…-revisited.html https://help.ubuntu.com/community/SSH_VPN ip forward - Ubuntu Forums Und schon steht das VPN! Script welcher das ganze automatisiert folgt ... |
| | |
| | #10 |
| der Graue Administrator | Tausend Dank! Grad das mit VPN war ja bisher für mich nicht so transparent und trivial, aber das hier macht die Sache einiges klarer. |
| | |
![]() |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Die Wahrheit über Neptune | Neptune | Windows Alphas und Betas | 41 | 20.11.2008 18:47 |
| Artikel über Linux | Cemper93 | Bugs, Lob & Kritik zu Winhistory.de | 70 | 08.11.2008 15:56 |
| Internet über FireWire PC <-> Mac | Spit | Mac OS Classic und Mac OS X | 7 | 25.10.2008 17:58 |
| Neues über OOXML | s4ndwichMakeR | User-News | 0 | 08.10.2008 09:02 |
| Jemand ne Playstation über? | Dirk | Suche | 10 | 22.09.2008 21:15 |
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:56 Uhr.










Bananen 

