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 hatverdient sich ein Lob, hat aber nur an der Oberfläche geschnuppertJetzt endlich geht es ans Eingemachte.\\ +Anyone who has made it this far deserves praisebut has only sniffed the surfaceNow it's finally time to get down to business.\\ 
-SSH wird von vielen als sicher betrachtetwas 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 sindalso nicht abgehört werden können.\\ +SSH is considered secure by manyprobably due to the word "secure" in "Secure Shell". "Secure" only refers to the fact that all content of an SSH connection is strongly encryptedso it cannot be intercepted.\\ 
-In Wirklichkeit ist SSH das Schweizer Taschenmesser zum Aushebeln von SicherheitseinstellungenWie man dies nutzt und wie man sich dagegen schützt wird hier beschrieben+In reality, SSH is the Swiss army knife for overriding security settingsHow 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 verstehenEine etablierte SSH-Verbindung kann genutzt werden um verschiedenste Daten sozusagen Huckpack mit zu transportierenWenn man sich eine SSH Verbindung als Kabel zwischen zwei Endpunkten vorstellt und sich das Kabel in einzelne Adern aufteiltist die SSH-Verbindung die Isolierung und die Tunnel sind die einzelnen Fasern die davon eingeschlossen sindUnter dem Schutz der Isolierung (die verschlüsselte SSH Verbindungkönnen also viele Adern (die Tunnelzu anderen Zwecken gebraucht werden.\\ +What is actually meant by an SSH tunnelAn established SSH connection can be used to transport a wide variety of data, so to speak, on a piggybackIf you think of an SSH connection as a cable between two endpoints and the cable separates into individual strandsthe SSH connection is the insulation and the tunnels are the individual fibers it enclosesSo, under the protection of the isolation (the encrypted SSH connection), many wires (the tunnelscan 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 gelangenIch habe zwar eine Verbindung und kann auf einzelnen Servern Befehle absetzenaber 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.Rauf Port 80 oder 443, je nachdem ob http oder https verwendet wirdWas 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 exampleI work from home and use SSH access to access the company networkI have a connection and can issue commands on individual serversbut I don't have access to the company's intranetBut I would like to and start with a simple tunnelWeb servers usually listen on port 80 or 443, depending on whether http or https is usedSo 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 GeheimnisBetrachten wir mal, was geschiehtDie 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" weiterDieser wiederum nimmt die Datenmit denen SSH eigentlich nicht anfangen kann, und leitet sie freundlich an den Port 80 von "webserver.firma.de" weiterGebe ich im Browser nun "http://localhost:8080" eingelange ich unversehens auf die gewünschte SeiteDas gleiche gilt analog mit den Ports 8443 und 443 bei Benutzung von https.\\ +That was the whole secretLet's see what happensThe "-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"Thisin 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 browserI suddenly get to the desired pageThe same applies to ports 8443 and 443 when using https.\\ 
-Geht das auch andersherumKann 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 aroundCan 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östAuf 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" weiterzuleitenDer Ausbruch aus dem ach so sicheren Firmennetz ist gelungen. \\ +Problem solvedPort 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 willAber die Entwickler von SSH haben an alles gedachtDer 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 homeBut the developers of SSH have thought of everythingThe 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 lauschtDort eingehender Traffic wird über die SSH Verbindung zu "sshserver.firma.de" geschaufelt und von dem dortigen Gegenstück wie erwünscht (also dynamischverteiltWenn ich in meinem Web Browser jetzt den Socks5 Proxy einschalte und auf "localhost" Port 3128 legekomme ich an alle Webserver der Firma, zu denen "sshserver.firma.de" Netzwerkzugang hatNette Geschichte und hilfreich für's Home OfficeOb 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. dynamicallyby the counterpart thereIf 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 accessNice story and helpful for the home officeHowever, I have my doubts as to whether it is desired.\\ 
-Wenn der "Einbruch" so einfach istwie sieht es mit dem "AusbruchausUm von der Firma das gesamte Internet (BrowserMail etc.) zu erreichenobwohl Firewalls und Proxies mich zu stoppen versuchenbraucht 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-inis so easywhat about the "break-out"? In order to reach the entire Internet (browsermail etc.) from the companyeven though firewalls and proxies try to stop meall it takes is SSH. But since it can be assumed that the company blocks the SSH port in addition to the browser portsI 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 Problemich 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 problemsI 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 aufwendigeraber mit zwei Befehlen durchaus im Rahmen des Machbaren.\\ +A little more complexbut 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 anzulegenDie mehrfache Schachtelung macht es fast unmöglich  eine solch Verbindung zu entschlüsselnda man ja nicht weiß wie viele Ebenen existierenDarüberhinaus kann ein existierender Tunnel genutzt werdenum ein VPN in diesem Tunnel zu verbergenDamit wird die Möglichkeit geschaffen ein sicheres Netz mit dem Heimnetz oder auch mit dem Internet zu verbinden+===== nested tunnels ===== 
-====== Und jetztAbsichern eines SSH Servers ====== +Of course, you can also use an existing tunnel to create another tunnel in itThe multiple nesting makes it almost impossible to decrypt such a connectionsince one does not know how many levels existFurthermorean existing tunnel can be used to hide a VPN in that tunnelThis creates the possibility of connecting a secure network to the home network or to the Internet. 
-Stellt man sich nun einmal auf die andere Seitealso nicht die des SSH Clients sondern auf die des SSH Server Administrators, muss man sich ernsthaft fragenob SSH Verbindungen überhaupt zugelassen werden könnenDie Antwort istwie immer bei der Konfiguration hochflexibler Lösungenein klares Ja, aber.\\ +====== And nowSecuring an SSH Server ====== 
-SSH bietet nicht nur die clientseitigen Möglichkeitensondern auch die Einschränkung auf der Server SeiteIm Folgenden wenden wir uns einzelnen Konfigurationseinstellungen zu+If you look at the other sidei.e. not that of the SSH client but that of the SSH server administratoryou seriously have to ask yourself whether SSH connections can be allowed at allAs always when configuring highly flexible solutionsthe answer is a resounding yesbut.\\ 
-===== Authentifizierung ===== +SSH offers not only the client-side possibilitiesbut also the limitation on the server sideIn 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, bzwgefordert wird. Eine einfache Zweifaktor Authentifizierung kann implementiert werden, indem man den Wert "publickey,password publickey,keyboard-interactive" vergibtDer Server verlangt nun sowohl einen Public Key als auch ein PasswortNur in Kombination ist eine Anmeldung zulässig.\\ +The "AuthenticationMethods" configuration parameter controls which type is permitted or requiredA 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 passwordRegistration 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 pflegenNormalerweider 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 fileThis file is usually in the ~/.ssh/ directoryIf 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 eintragenIm 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 accessIn 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 werdenZwei Paramter erlauben ein solche Einschränkung:+The use of tunnels should be regulatedTwo parameters allow such a restriction:
   AllowTcpForwarding no   AllowTcpForwarding no
   PermitOpen none   PermitOpen none
-Ist der Einsatz eines Tunnels gewünschtoder unerlässlich, kann dieser in einem Match Block gezielt erlaubt werden+If the use of a tunnel is desired or essentialit 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 helfenDer entsprechende Paramter ist "ForceCommand" und kann auch innerhalb eines Match Blocks benutzt werdenZwingende Commands und andere Einschränkungen können auch in der Signatur eines Public Keys untergebracht werden (alternativbei nicht signierten Keysgeschieht 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 helpThe corresponding parameter is "ForceCommand" and can also be used within a match blockMandatory commands and other restrictions can also be placed in the signature of a public key (alternativelyin the case of unsigned keysthis 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 werdenDieser 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 sessionThis 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 öffnenmuss man sich entscheiden ob der Port nur von dem Rechner benutzt werden kann, auf dem er geöffnet wurdeoder ob er auch von anderen Rechner angesprochen werden darfDer 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 portyou have to decide whether the port can only be used by the computer on which it was openedor whether it can also be accessed by other computersThe "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änkenDie Einrichtung einer CHROOT Umgebung sperrt solche Benutzer ein einen "Käfigund potentieller Schaden beschränkt sich auf den Inhalt der CHROOT UmgebungAnleitung 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 possibleEstablishing a CHROOT environment locks such users in a "cageand potential harm is limited to the contents of the CHROOT environmentInstructions 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