Benutzer-Werkzeuge

Webseiten-Werkzeuge


en:howtos:sshfreak

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

en:howtos:sshfreak [2022/02/18 08:09] – Externe Bearbeitung 127.0.0.1en:howtos:sshfreak [2022/02/18 08:43] (aktuell) – morquai
Zeile 1: Zeile 1:
-====== SSH - für Freaks ====== +====== SSH - for geeks ====== 
-Wer bis hierhin durchgehalten hat, verdient sich ein Lob, hat aber nur an der Oberfläche geschnuppert. Jetzt endlich geht es ans Eingemachte.\\ +Anyone who has made it this far deserves praise, but has only sniffed the surface. Now it's finally time to get down to business.\\ 
-SSH wird von vielen als sicher betrachtet, was wahrscheinlich an dem Wörtchen "Secure" in "Secure Shell" liegt. "Secure" bezieht sich aber nur darauf das alle Inhalte einer SSH Verbindung stark verschlüsselt sind, also nicht abgehört werden können.\\ +SSH is considered secure by many, probably due to the word "secure" in "Secure Shell". "Secure" only refers to the fact that all content of an SSH connection is strongly encrypted, so it cannot be intercepted.\\ 
-In Wirklichkeit ist SSH das Schweizer Taschenmesser zum Aushebeln von Sicherheitseinstellungen. Wie man dies nutzt und wie man sich dagegen schützt wird hier beschrieben. +In reality, SSH is the Swiss army knife for overriding security settings. How to use this and how to protect yourself against it is described here. 
-===== Tunnel, die Wurzel allen Übels oder der komfortable Zugang zu gesicherten Netzwerken? ===== +===== Tunnel, the root of all evil or convenient access to secure networks? ===== 
-Was ist eigentlich unter einem SSH-Tunnel zu verstehen? Eine etablierte SSH-Verbindung kann genutzt werden um verschiedenste Daten sozusagen Huckpack mit zu transportieren. Wenn man sich eine SSH Verbindung als Kabel zwischen zwei Endpunkten vorstellt und sich das Kabel in einzelne Adern aufteilt, ist die SSH-Verbindung die Isolierung und die Tunnel sind die einzelnen Fasern die davon eingeschlossen sind. Unter dem Schutz der Isolierung (die verschlüsselte SSH Verbindung) können also viele Adern (die Tunnel) zu anderen Zwecken gebraucht werden.\\ +What is actually meant by an SSH tunnel? An established SSH connection can be used to transport a wide variety of data, so to speak, on a piggyback. If you think of an SSH connection as a cable between two endpoints and the cable separates into individual strands, the SSH connection is the insulation and the tunnels are the individual fibers it encloses. So, under the protection of the isolation (the encrypted SSH connection), many wires (the tunnels) can be used for other purposes.\\ 
-Betrachten wir den hilfreichen Einsatz eines Tunnels an einem Beispiel an. Ich arbeite von zu Hause und nutze einen SSH-Zugang um ins Firmennetz zu gelangen. Ich habe zwar eine Verbindung und kann auf einzelnen Servern Befehle absetzen, aber Zugriff auf das Intranet der Firma habe ich nicht. Hätte ich aber gerne und fange erstmal mit einem einfach Tunnel an. Webserver lauschen i.d.R. auf Port 80 oder 443, je nachdem ob http oder https verwendet wird. Was ich also brauche um eine interne Webseite des Servers webserver.firma.de im Browser anzusehen ist eine Verbindung auf den Ports 80 und/oder 443. Leider habe ich nur den Zugang über Port 22 (SSH).\\ +Let's look at the helpful use of a tunnel with an example. I work from home and use SSH access to access the company network. I have a connection and can issue commands on individual servers, but I don't have access to the company's intranet. But I would like to and start with a simple tunnel. Web servers usually listen on port 80 or 443, depending on whether http or https is used. So what I need to view an internal website of the server webserver.firma.de in the browser is a connection on ports 80 and/or 443. Unfortunately I only have access via port 22 (SSH).\\ 
-Ein kleiner SSH Tunnel schafft hier Abhilfe:+A small SSH tunnel can help here:
   ssh -L 8080:webserver.firma.de:80 -L 8443:webserver.firma.de:443 user@sshserver.firma.de   ssh -L 8080:webserver.firma.de:80 -L 8443:webserver.firma.de:443 user@sshserver.firma.de
-Das war das ganze Geheimnis. Betrachten wir mal, was geschieht. Die Option "-L 8080:webserver.firma.de:80" öffnet auf meinem PC den Port 8080 und leitet den dort eintreffenden Traffic über die SSH Verbindung an "sshserver.firma.de" weiter. Dieser wiederum nimmt die Daten, mit denen SSH eigentlich nicht anfangen kann, und leitet sie freundlich an den Port 80 von "webserver.firma.de" weiter. Gebe ich im Browser nun "http://localhost:8080" ein, gelange ich unversehens auf die gewünschte Seite. Das gleiche gilt analog mit den Ports 8443 und 443 bei Benutzung von https.\\ +That was the whole secret. Let's see what happens. The "-L 8080:webserver.firma.de:80" option opens port 8080 on my PC and forwards the traffic arriving there via the SSH connection to "sshserver.firma.de". This, in turn, takes the data that SSH can't actually handle and forwards it in a friendly manner to port 80 of "webserver.firma.de". If I now enter "http://localhost:8080" in the browser, I suddenly get to the desired page. The same applies to ports 8443 and 443 when using https.\\ 
-Geht das auch andersherum? Kann ich, obwohl der firmeneigene Proxy und die Firewall es verbieten Kontakt mit GoogleMail aufnehmen? SSH und die Tunnel sind auch hier die Lösung. +Does that also work the other way around? Can I contact Gmail even though the company's proxy and firewall prohibit it? SSH and the tunnels are also the solution here.
   ssh -R 8443:mail.google.com:443 user@sshserver.firma.de   ssh -R 8443:mail.google.com:443 user@sshserver.firma.de
-Problem gelöst. Auf dem Server "sshserver.firma.de" wird der Port 8443 geöffnet und mein SSH Client ist so freundlich dort eingehenden Traffic an "mail.google.com" weiterzuleiten. Der Ausbruch aus dem ach so sicheren Firmennetz ist gelungen. \\ +Problem solved. Port 8443 is opened on the "sshserver.firma.de" server and my SSH client is kind enough to forward incoming traffic to "mail.google.com". The escape from the oh so secure company network was successful. \\ 
-Das erscheint nicht praktikabel, wenn ich von zu Hause auf mehrere Webserver der Firma zugreifen will. Aber die Entwickler von SSH haben an alles gedacht. Der Schlüssel zur Firma heisst "Socks Proxy" oder "Dynamic Forwarding". Jedes Programm, das die Nutzung eines Proxy Servers unterstützt kann davon profitieren.+That doesn't seem practical if I want to access several of the company's web servers from home. But the developers of SSH have thought of everything. The key to the company is called "Socks Proxy" or "Dynamic Forwarding". Any program that supports the use of a proxy server can benefit from this.
   ssh -D 3128 user@sshserver.firma.de   ssh -D 3128 user@sshserver.firma.de
-startet einen Socks Proxy auf meinem PC, der auf Port 3128 lauscht. Dort eingehender Traffic wird über die SSH Verbindung zu "sshserver.firma.de" geschaufelt und von dem dortigen Gegenstück wie erwünscht (also dynamisch) verteilt. Wenn ich in meinem Web Browser jetzt den Socks5 Proxy einschalte und auf "localhost" Port 3128 lege, komme ich an alle Webserver der Firma, zu denen "sshserver.firma.de" Netzwerkzugang hat. Nette Geschichte und hilfreich für's Home Office. Ob es allerdings gewünscht ist ziehe ich mal in Zweifel.\\ +starts a socks proxy on my pc listening on port 3128. Traffic coming in there is shoveled over the SSH connection to "sshserver.firma.de" and distributed as desired (i.e. dynamically) by the counterpart there. If I now switch on the Socks5 proxy in my web browser and set it to "localhost" port 3128, I can access all of the company's web servers to which "sshserver.firma.de" has network access. Nice story and helpful for the home office. However, I have my doubts as to whether it is desired.\\ 
-Wenn der "Einbruch" so einfach ist, wie sieht es mit dem "Ausbruch" aus? Um von der Firma das gesamte Internet (Browser, Mail etc.) zu erreichen, obwohl Firewalls und Proxies mich zu stoppen versuchen, braucht es nur SSH. Da aber davon auszugehen ist, das die Firma neben der Browser Ports auch den SSH Port sperrt muss ich ein wenig tricksen. Ich benötige zwei Dinge,  +If the "break-in" is so easy, what about the "break-out"? In order to reach the entire Internet (browser, mail etc.) from the company, even though firewalls and proxies try to stop me, all it takes is SSH. But since it can be assumed that the company blocks the SSH port in addition to the browser ports, I have to do a little tricking. I need two things 
-  - einen SSH Server, der uneingeschränkten Zugang zum Internet hat +  - an SSH server that has unrestricted access to the Internet 
-  - einen SSH Zugang aus der Firma zu diesem Server +  - SSH access from the company to this server 
-Der SSH Server ist das geringste Problem, ich starte einfach den Dienst auf meinem heimischen PC. Den Zugang aus der Firma zu diesem SSH Server ist mit einem Tunnel einfach herzustellen+The SSH server is the least of the problems, I just start the service on my home PC. Access from the company to this SSH server is easy to establish with a tunnel
   ssh -R 2222:localhost:22 user@sshserver.firma.de   ssh -R 2222:localhost:22 user@sshserver.firma.de
-und nun auf dem "sshserver.firma.de" den Befehl+and now on the "sshserver.firma.de" the command
   ssh -D 3292 -p 2222 heimuser@localhost   ssh -D 3292 -p 2222 heimuser@localhost
-Ein wenig aufwendiger, aber mit zwei Befehlen durchaus im Rahmen des Machbaren.\\ +A little more complex, but definitely within the realm of possibility with two commands.\\ 
-===== geschachtelte Tunnel ===== + 
-Selbstverständlich kann man auch einen bestehenden Tunnel nutzen um darin einen weiteren Tunnel anzulegen. Die mehrfache Schachtelung macht es fast unmöglich  eine solch Verbindung zu entschlüsseln, da man ja nicht weiß wie viele Ebenen existieren. Darüberhinaus kann ein existierender Tunnel genutzt werden, um ein VPN in diesem Tunnel zu verbergen. Damit wird die Möglichkeit geschaffen ein sicheres Netz mit dem Heimnetz oder auch mit dem Internet zu verbinden. +===== nested tunnels ===== 
-====== Und jetzt? Absichern eines SSH Servers ====== +Of course, you can also use an existing tunnel to create another tunnel in it. The multiple nesting makes it almost impossible to decrypt such a connection, since one does not know how many levels exist. Furthermore, an existing tunnel can be used to hide a VPN in that tunnel. This creates the possibility of connecting a secure network to the home network or to the Internet. 
-Stellt man sich nun einmal auf die andere Seite, also nicht die des SSH Clients sondern auf die des SSH Server Administrators, muss man sich ernsthaft fragen, ob SSH Verbindungen überhaupt zugelassen werden können. Die Antwort ist, wie immer bei der Konfiguration hochflexibler Lösungen, ein klares Ja, aber.\\ +====== And now? Securing an SSH Server ====== 
-SSH bietet nicht nur die clientseitigen Möglichkeiten, sondern auch die Einschränkung auf der Server Seite. Im Folgenden wenden wir uns einzelnen Konfigurationseinstellungen zu. +If you look at the other side, i.e. not that of the SSH client but that of the SSH server administrator, you seriously have to ask yourself whether SSH connections can be allowed at all. As always when configuring highly flexible solutions, the answer is a resounding yes, but.\\ 
-===== Authentifizierung ===== +SSH offers not only the client-side possibilities, but also the limitation on the server side. In the following we turn to individual configuration settings. 
-Für die Anmeldung an einem SSH-Server stehen unterschiedliche Möglichkeiten zur Verfügung:+===== Authentication ===== 
 +There are different options for logging on to an SSH server:
   * Password   * Password
-  * SSH Keys +  * SSH key 
-  * PAM (einschließlich LDAP oder OATH (One Time Authorization Token) )+  * PAM (including LDAP or OATH (One Time Authorization Token) )
   * Kerberos   * Kerberos
-  * u.v.a. +  * etc. 
-Der Konfigurationsparameter "AuthenticationMethods" steuert, welche Art zuässig, bzw. gefordert wird. Eine einfache Zweifaktor Authentifizierung kann implementiert werden, indem man den Wert "publickey,password publickey,keyboard-interactive" vergibt. Der Server verlangt nun sowohl einen Public Key als auch ein Passwort. Nur in Kombination ist eine Anmeldung zulässig.\\ +The "AuthenticationMethods" configuration parameter controls which type is permitted or required. A simple two-factor authentication can be implemented by giving the value "publickey,password publickey,keyboard-interactive". The server now requires both a public key and a password. Registration is only permitted in combination.\\ 
-Die Verwendung von Puclic Keys kann geregelt werden, indem man es dem Administrator statt jedem User überlässt, die authorized_keys Datei zu pflegen. Normalerweider liegt diese Datei in dem Verzeichnis ~/.ssh/ . Verlegt man dies durch die Angabe z.B von +The use of public keys can be regulated by letting the administrator instead of each user maintain the authorized_keys file. This file is usually in the ~/.ssh/ directory. If you move this by specifying e.g 
-  AuthorizedKeysFile /etc/ssh/.ssh/%u/  +  AuthorizedKeysFile /etc/ssh/.ssh/%u/ 
-an einen Ort an dem der User keinen Schreibzugriff hat, kann nur noch der Administrator Public Keys dort eintragen. Im Zusammenspiel mit signierten Public Keys (siehe TrustedUserCAKeys) kann man den Einsatz nicht signierter Public Keys unterbinden. \\ +only the administrator can enter public keys in a place where the user does not have write access. In combination with signed public keys (see TrustedUserCAKeys), the use of unsigned public keys can be prevented. \\ 
-Es gibt also auf der Ebene Authentifizierung eine Reihe von Möglichkeiten nur vertrauenswürdigen Benutzern Zugriff zu gewähren. +So there are a number of options at the authentication level to only grant access to trustworthy users. 
-===== Tunnel ===== +===== Tunnels ===== 
-Der Einsatz von Tunneln sollte reglementiert werden. Zwei Paramter erlauben ein solche Einschränkung:+The use of tunnels should be regulated. Two parameters allow such a restriction:
   AllowTcpForwarding no   AllowTcpForwarding no
   PermitOpen none   PermitOpen none
-Ist der Einsatz eines Tunnels gewünscht, oder unerlässlich, kann dieser in einem Match Block gezielt erlaubt werden+If the use of a tunnel is desired or essential, it can be specifically allowed in a match block
   Match Group tunnel   Match Group tunnel
     AllowTcpForwarding yes     AllowTcpForwarding yes
-    PermitOpen dbserver:1521 +    PermitOpendbserver:1521 
-Auch die Beschränkung zum Öffnen eines Ports auf bestimmte, geprüfte und somit als sicher geltende Scripts kann helfen. Der entsprechende Paramter ist "ForceCommand" und kann auch innerhalb eines Match Blocks benutzt werden. Zwingende Commands und andere Einschränkungen können auch in der Signatur eines Public Keys untergebracht werden (alternativ, bei nicht signierten Keys, geschieht die in der authorized_keys Datei). +Restricting the opening of a port to certain scripts that have been checked and are therefore considered safe can also help. The corresponding parameter is "ForceCommand" and can also be used within a match block. Mandatory commands and other restrictions can also be placed in the signature of a public key (alternatively, in the case of unsigned keys, this is done in the authorized_keys file). 
-===== VPNs verhindern ===== +===== Prevent VPNs ===== 
-Die Angabe von "PermitTunnel no" in der sshd_config verhindert den Aufbau von VPNs, die in einer SSH Session verborgen werden. Dieser Parameter kann ebenfalls in einem Match Block angewendet werden. +Specifying "PermitTunnel no" in sshd_config prevents the establishment of VPNs that are hidden in an SSH session. This parameter can also be used in a match block. 
-===== Ports absichern, die von einem Client geöffnet werden ===== +===== Securing ports opened by a client ===== 
-Ist es einem Client erlaubt einen Port zu öffnen, muss man sich entscheiden ob der Port nur von dem Rechner benutzt werden kann, auf dem er geöffnet wurde, oder ob er auch von anderen Rechner angesprochen werden darf. Der Parameter "GatewayPorts" steuert dies und der Default von "No" sollte nur geändert werden, wenn man das, was in der man page dazu steht vollständig verstanden hat. +If a client is allowed to open a port, you have to decide whether the port can only be used by the computer on which it was opened, or whether it can also be accessed by other computers. The "GatewayPorts" parameter controls this and the default of "No" should only be changed if you fully understand what the man page says about it. 
-===== Fremden Zugriff gewähren ===== +===== Grant access to strangers ===== 
-Muss man Fremden Zugang gewähren muss man deren Möglichkeiten soweit wie möglich einschränken. Die Einrichtung einer CHROOT Umgebung sperrt solche Benutzer ein einen "Käfig" und potentieller Schaden beschränkt sich auf den Inhalt der CHROOT Umgebung. Anleitung zur Erstellung einer CHROOT Umgebung sind im Internet leicht zu finden. +If you have to grant access to strangers, you have to limit their options as much as possible. Establishing a CHROOT environment locks such users in a "cage" and potential harm is limited to the contents of the CHROOT environment. Instructions for creating a CHROOT environment are easy to find on the internet. 
-ChrootDirectory /pfad/zur/chroot +ChrootDirectory /path/to/chroot
- +
-   +
- +
- +
- +
- +
- +
- +
en/howtos/sshfreak.1645171795.txt.gz · Zuletzt geändert: 2022/02/18 08:09 von 127.0.0.1