Aktuelle Version |
Dein Text |
Zeile 1: |
Zeile 1: |
− | '''PuTTY''' ist eine freie Implementierung von [[SSH]] und [[Telnet]]. Das '''PuTTY'''-Projekt wurde von Simon Tatham ins Leben gerufen. Mittlerweile stehen auch Tools für den vollen Funktionsumfang [[SSH]]s zur Verfügung wie z.B. [[SCP]]. Das PuTTY-Projekt beschäftigt sicht primär mit der [[Win32]] Plattform, es gibt aber auch eine Portierung für [[UNIX]], welche auch unter [[Linux]] und [[BSD]] laufähig ist. | + | '''PuTTY''' ist eine freie implementirung von [[SSH]] und [[Telnet]]. Das '''PuTTY''' Projeckt wurde von Simon Tatham in's Leben gerufen. Mitlerweile sehen auch Tools fuer den vollen Funktionsumfang [[SSH]]s zur verfuegung wie [[SCP]]. Das PuTTY Projeckt beschaelftigt sicht primaer mit der [[Win32]] Platform es gibt aber auch einen [[UNIX]] Port welcher auch unter [[Linux]] laufaehig ist. |
| | | |
− | == Anwendung ==
| |
− | Die Hauptanwendung ist '''putty.exe'''. Hier werden Sessions angelegt, konfiguriert und gestartet.
| |
− |
| |
− | Hilfreiche Zusatzanwendungen sind:
| |
− | ; [[Pageant]]: Ermöglicht die Verwendung von SSH-Keys / Agent forwarding
| |
− | ; [[PuTTYgen]]: Erstellen und Verwalten von mit OpenSSH kompatiblen Schlüsseln. Schlüssel müssen in Pageant geladen werden, bevor man sie nutzen kann.
| |
− |
| |
− | === Aufruf, Verknüpfung ===
| |
− | Auf dem Desktop oder in Menüs können einzelne Sessions direkt aufgerufen werden, indem Verknüpfungen zu putty.exe wie folgt erstellt werden:
| |
− |
| |
− | C:\Programme\PuTTY\putty.exe @shell.uugrn.org
| |
− |
| |
− | Eine Verknüpfung wie diese ruft das Profil ''shell.uugrn.org'' auf.
| |
− |
| |
− | === Tunnel ===
| |
− | PuTTY kann über eine SSH-Verbindung beliebiges Portforwarding, es können entweder lokale remote durchgereicht werden, aber auch remote-Ports nach lokal. Außerdem implementiert PuTTY selbst einen [[SOCKS]]-Proxy, wenn man ein ''dynamic'' Portforwarding einrichtet.
| |
− |
| |
− | === [[Proxy]] ===
| |
− | PuTTY kann seine Verbindungen entweder direkt, aber auch via [[Socks]]- oder [[HTTPS]]-[[Proxy]] aufbauen, vorausgesetzt der entsprechende Proxy ist dafür konfiguriert, d.h. erlaubt de CONNECT-Methode auf Port 22. Leider ist das häufig eher nicht der Fall. Abhilfe ist hier auf dem Zielsystem den [[sshd]] zusätzlich zu '''Port 22''' auch noch '''Port 443''' zu konfigurieren, welches i.d.R. für [[HTTPS]] verwendet wird, standardmäßig erlauben Web-Proxies einen CONNECT auf Port 443.
| |
− |
| |
− | ; /etc/ssh/sshd_config:
| |
− | Port 22
| |
− | Port 443
| |
− | [...]
| |
− |
| |
− | Der sshd auf [[UUGRN:Jails/shell|shell.uugrn.org]] läuft zusätzlich auch auf Port 443 und kann durch Vereinsmitglieder entsprechend verwendet werden, Details unter [[SSH auf Port 443]].
| |
− |
| |
− | Durch Kombination dieser Fähigkeiten kann man auch aus relativ restriktiven Netzwerkumgebungen, z.B. Firmennetz oder Campus-Netz "ausbrechen": Man konfiguriert eine SSH-Verbindung von intern nach extern via HTTP-Proxy und konfiguriert außerdem noch eine "dynamische" Portweiterleitung aka SOCKS-Proxy z.B. auf localhost:1080.
| |
− |
| |
− | Viele Programme unterstützen die Verwendung von SOCKS-Proxy anstelle einer direkten Netzwerkverbindung, z.B. Chat/Messenger, FTP-Clients, Mailprogramme (z.B. [[Thunderbird]]).
| |
− | Darüberhinaus kann man über diese SOCKS-Verbindug auch weitere PuTTY-Verbindungen aufbauen, ohne zusätzliche Einträge im Logfile des Web-Proxies zu hinterlassen (idR erst beim Abbau der Verbindung.)
| |
− |
| |
− | === Heimserver verwenden ===
| |
− | Verfügt man über keinen Server mit sshd auf Port 443, kann man dieses über den Permanent am Netz laufenden Heim-Server einrichten. Hierzu ist es jedoch erforderlich einen [[DynDNS]]-Eintrag zu haben, da beim Zugriff auf die IP-Adresse, die man zudem oft nicht kennt, jedesmal ein neues Host:Fingerprint-Pärchen gespeichert wird. Beispielsweise bietet sich ''dyndns.org'' an, wo man sich Hostnamen wie etwa '''blablubb.homeip.net''' eintragen kann.
| |
− | Hängt der Heimserver hinter einen NAT-Router, so muss hier entsprechend eine Portweiterleitung für 22 und 443 nach innen eingerichtet werden.
| |
− |
| |
− | ==== Web-Proxy ====
| |
− | Will man darüber hinaus nicht nur "unbefugtes" SSH nach Hause machen, sondern darüber auch im Web surfen, ohne im Proxy-Server der Firma Spuren zu hinterlassen, so installiert und konfiguriert man sich zu Hause einen eigenen [[squid]]-Server auf Port 3128. Der sichere Zugriff darauf erfolgt durch den SSH-Tunnel, der bereits schon den SOCKS-Proxy implementiert: zusätzlich konfiguriert man ein Local-Portforwarding von 3128 auf 127.0.0.1:3128.
| |
− |
| |
− | : '''ACHTUNG!''' Nicht '''localhost''' verwenden, da dieses auf der Gegenstelle durch sshd möglicherweise auf [[IPv6]] mit '''::1''' aufgelöst wird. Squid ist jedoch nur via [[IPv4]] erreichbar, was zuweilen Grund für bizarre Fehlersuchen sein kann.
| |
− |
| |
− | Verbindet man sich nun mit der entsprechend erweiterten PuTTY-Session auf den Heimserver, kann man lokal auf Port 3128 (oder den Port, den man lokal konfiguriert hat transparent auf den Heim-Proxy zugreifen. Der Proxy zu Hause sieht die Zugriffe von 127.0.0.1 kommen, während man selbst (unter Windows) auch auf 127.0.0.1 zugreift.
| |
− |
| |
− | Will man nur bei bestimmten URLs oder zu bestimmten Servern über den privaten Proxy gehen, empfiehlt sich das Add-on [[FoxyProxy]] von Firefox. Hier kann man basierend auf [[Wildcard]]s oder [[Regular Expression]]s verschiedene Proxies verwenden.
| |
− |
| |
− | === Gegenmittel ===
| |
− | Wenn man selbst Admin und verantwortlich für die Sicherheit des Firmennetzes ist, sollte man diese "Gefahr" kennen.
| |
− | Es ist allerdings nicht trivial einen Ausbruch mittels SSH zu unterbinden, wenn gleichzeitig HTTPS (SSL) erlaubt sein soll.
| |
− |
| |
− | Denkbar wären (neben disziplinarischen Maßnahmen) folgende technische Möglichkeiten:
| |
− | ; Blacklists:
| |
− | * alle dyndns-Domains (ca 30-40), vermutlich gibt es hier fertige ACL. Nachteil: Das Verfahren geht auch ohne die Verwendung von DynDNS-Services.
| |
− | * alle HTTPS-Server, die kein gültiges SSL-Zertifikat haben (etwas komplizierter). Dies führt darüberhinaus dazu, dass Webbrowser nicht auf kompromittierte https-Server zugreifen können
| |
− |
| |
− | ; Content-Prüfung:
| |
− | Prüfen des Verbindungsaufbaus beim CONNECT: Bei einem [[sshd]] erscheint direkt nach dem Öffnen der TCP-Verbindung zunächst im Klartext folgender String noch bevor der SSH-Client Daten sendet:
| |
− | SSH-2.0-OpenSSH_4.5p1 FreeBSD-20061110
| |
− |
| |
− | Bei einem normalen HTTPS-Server sendet zuerst der Client Daten an den Server und beginnt damit den SSL-Handshake.
| |
− |
| |
− | Entweder unterstützt der Proxy direkt entsprechende Content-Filter auf CONNECT oder man läßt den Firewall ausgehende Verbindungen auf Port 443 entsprechend überwachen und nötigenfalls Verbindungen blockieren, wenn diese nach SSH und nicht nach SSL aussehen.
| |
− |
| |
− | Nachträglich lässt sich auch anhand der geloggten CONNECT-Verbindungen im Proxy-Log eine systematische Prüfung per Script durchführen und kann sich eine eigene Blacklist generieren, das ist relativ trivial mit [[nc]] ([[netcat]]) zu erledigen:
| |
− |
| |
− | $ nc -w 2 up.uugrn.org 443 | grep -i ssh >/dev/null 2>&1 && echo "SSH" || echo "kein SSH"
| |
− | SSH
| |
− |
| |
− | $ nc -w 2 www.uugrn.org 443 | grep -i ssh >/dev/null 2>&1 && echo "SSH" || echo "kein SSH"
| |
− | kein SSH
| |
− |
| |
− | $ nc -w 2 shell.uugrn.org 443 | grep -i ssh >/dev/null 2>&1 && echo "SSH" || echo "kein SSH"
| |
− | SSH
| |
| | | |
| == Siehe auch == | | == Siehe auch == |
− | * [[Firewall Piercing]]
| |
− | * [[SSH auf Port 443]]
| |
| * [[PSCP]] | | * [[PSCP]] |
| * [[PuTTYtel]] | | * [[PuTTYtel]] |
Zeile 87: |
Zeile 13: |
| | | |
| == Weblinks == | | == Weblinks == |
− | * {{Homepage|www.chiark.greenend.org.uk/~sgtatham/putty}} | + | * [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Die PuTTY Homepage] |
− | :* {{weblink|www.chiark.greenend.org.uk/~sgtatham/putty/links.html|Sehr umfangreiche Linkliste für PuTTY}}
| + | |
| + | |
| [[Kategorie:Kryptographie]] | | [[Kategorie:Kryptographie]] |
− | [[Kategorie:Tool]]
| |
− | [[Kategorie:Anwendungsbeispiel]]
| |
| [[Kategorie:SSH]] | | [[Kategorie:SSH]] |