Server-Software alles was mit Netzwerksoftware zu tun hat

Antwort
 
LinkBack Themen-Optionen
Alt 23.12.2008, 12:50   #1
Erfahrener Benutzer
 
Registriert seit: 10.07.2008
Beiträge: 171
Standard Socket Server über SSH

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.
chessboi ist offline   Mit Zitat antworten
Alt 23.12.2008, 13:32   #2
muh sager
 
Registriert seit: 10.07.2008
Ort: Düsseldorf
Beiträge: 80
bobe eine Nachricht über ICQ schicken bobe eine Nachricht über AIM schicken bobe eine Nachricht über MSN schicken bobe eine Nachricht über Yahoo! schicken bobe eine Nachricht über Skype™ schicken bobe eine Nachricht über Jabber schicken
Standard AW: Socket Server über SSH

Zitat:
Zitat von chessboi Beitrag anzeigen
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.
Unter Linux gibt es dafür tsocks.
Einfach installieren, in die /etc/tsocks.conf schreiben:
Code:
server = 127.0.0.1
server_port = 4444
Dann vor jeden Befehl der den SSH Tunnel nutzen soll, tsocks schreiben, also zb "tsocks firefox".
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
bobe ist gerade online   Mit Zitat antworten
Alt 23.12.2008, 13:33   #3
Die Pommesfee
 
Benutzerbild von chiaki
 
Registriert seit: 10.07.2008
Beiträge: 2.812
chiaki eine Nachricht über ICQ schicken chiaki eine Nachricht über MSN schicken
Standard AW: Socket Server über SSH

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?
__________________
Chiaki lernt Japanisch
Hiragana & Katakana: FERTIG
Kanji: Sind viele, aber am lernen
www.pixelbanane.de
Die Seite über Bananen
chiaki ist gerade online   Mit Zitat antworten
Alt 23.12.2008, 14:06   #4
der Graue
Administrator
 
Benutzerbild von gandro
 
Registriert seit: 12.07.2008
Ort: Schweiz
Beiträge: 2.306
gandro eine Nachricht über ICQ schicken gandro eine Nachricht über MSN schicken gandro eine Nachricht über Jabber schicken
Standard AW: Socket Server über SSH

Zitat:
Zitat von bobe Beitrag anzeigen
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
Hm.. interessant. Danke für den Tipp

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"
Mit "tsocks off" kann man es dann für ein bestimmtes Terminal wieder deaktivieren.

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.
gandro ist gerade online   Mit Zitat antworten
Alt 23.12.2008, 14:59   #5
Erfahrener Benutzer
 
Registriert seit: 10.07.2008
Beiträge: 171
Standard AW: Socket Server über SSH

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.
chessboi ist offline   Mit Zitat antworten
Alt 23.12.2008, 15:09   #6
der Graue
Administrator
 
Benutzerbild von gandro
 
Registriert seit: 12.07.2008
Ort: Schweiz
Beiträge: 2.306
gandro eine Nachricht über ICQ schicken gandro eine Nachricht über MSN schicken gandro eine Nachricht über Jabber schicken
Standard AW: Socket Server über SSH

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)
gandro ist gerade online   Mit Zitat antworten
Alt 23.12.2008, 15:41   #7
Erfahrener Benutzer
 
Registriert seit: 10.07.2008
Beiträge: 171
Standard AW: Socket Server über SSH

Nunja ... wenigstens ist mir jetzt der Unterschied zwischen einem SSH-Tunnel und einem VPN klar.
chessboi ist offline   Mit Zitat antworten
Alt 23.12.2008, 20:23   #8
der Graue
Administrator
 
Benutzerbild von gandro
 
Registriert seit: 12.07.2008
Ort: Schweiz
Beiträge: 2.306
gandro eine Nachricht über ICQ schicken gandro eine Nachricht über MSN schicken gandro eine Nachricht über Jabber schicken
Standard AW: Socket Server über SSH

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)
gandro ist gerade online   Mit Zitat antworten
Alt 13.07.2009, 23:12   #9
Erfahrener Benutzer
 
Registriert seit: 10.07.2008
Beiträge: 171
Standard AW: Socket Server über SSH

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 ...
chessboi ist offline   Mit Zitat antworten
Alt 13.07.2009, 23:20   #10
der Graue
Administrator
 
Benutzerbild von gandro
 
Registriert seit: 12.07.2008
Ort: Schweiz
Beiträge: 2.306
gandro eine Nachricht über ICQ schicken gandro eine Nachricht über MSN schicken gandro eine Nachricht über Jabber schicken
Standard AW: Socket Server über SSH

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.
gandro ist gerade online   Mit Zitat antworten
Antwort

Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ä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.