SSH Zugriff mit Hilfe von Schlüsseln schützen

  • Hallo liebe Community,


    ich möchte euch hier gerne erklären und zeigen, warum ihr euren SSH Zugang absichern solltet und wie das geht.


    Inhaltsverzeichnis:

    • Was ist ein SSH Zugang?
    • Warum sollte ich den SSH Zugang absichern?
    • Wie sichere ich den SSH Zugang ab?


    • Was ist ein SSH Zugang?
      SSH (= Secure Shell) wird ein Netzwerkprotokoll, sowie entsprechende Softwares/Programme genannt mit denen man auf sichere Art und Weise eine verschlüsselte Netzwerkverbindung auf ein entferntes Gerät (z.B. den eigenen Server im Rechenzentrum) aufbauen kann.



      SSH wird oftmals dann verwendet, wenn man nicht immer zu einem entfernen Rechner gehen/fahren möchte, um nur eben ein paar Software Einstellungen/Änderungen vor zu nehmen. Mit Hilfe von SSH kann man bequem von überall aus auf das entsprechende Gerät zugreifen und entsprechende Befehle ausführen. Wenn SSH verfügbar ist, kann man auch gleichzeitig die integrierte "SFTP" Technologie mit verwenden, um Dateien wie bei einem FTP-Server hoch- und runterzuladen.


      Für weitere Details zu SSH und SFTP siehe auch hier: Wikipedia | SSH (= Secure Shell)


    • Warum sollte ich den SSH Zugang absichern?
      Es gibt so ein paar Spaßvögel - auch Hacker genannt - die meinen, sie müssten fremde Rechner für ihre Angriffe ausnutzen oder einfach nur einen Server kaputt machen. So kann es zum Beispiel sein, dass sie euren Server mit einem Brute-Force Angriff knacken und danach vollen root Zugriff auf eurem Server haben. Sobald sie soweit sind, können sie mit deinem Server alles anfangen, was sie damit möchten: Kaputt machen, Herunterfahren, Brute-Force-/(D)DoS-Angriffe starten, Botnetz aufbauen,...



      Da man bei den meisten Server-Betreibern seinen Server aufgrund der AGBs selbstständig absichern muss und man nicht nicht zum Opfer einer Straftat eines anderen Fallen möchte, sichert man den Server so gut es geht ab. Hier ist das erste ToDo dann immer die Absicherung für den Zugriff auf den Server. Dritte kommen normalerweise nicht ins Rechenzentrum rein und können sich somit auch nicht physikalisch damit verbinden, daher bietet es sich natürlich an, dass man die Remote-Verbindungen schützt. Unter diesen Verbindungen zählen dann zum Beispiel SSH-Zugänge.


    • Wie sichere ich den SSH Zugang ab?
      Um den SSH-Zugang abzusichern, muss man lediglich die Konfiguration des SSH-Servers anpassen, sowie einen Schlüssel für den Benutzer/Administrator auf dem Server speichern. Somit wird dafür gesorgt, dass nur die Leute mit dem auf dem Server gespeicherten Schlüssel einen Zugriff auf den Server haben können. Alle anderen werden automatisch vom Server abgewiesen. :)



      Die ganze "Technik" nennt sich auch "SSH-Keys".


      Also gut... Passen wir mal die Konfiguration des SSH-Servers an:

      Code
      1. vim /etc/ssh/sshd_config


      Hinweis: Ich habe zur Übersichtlichkeit alle nicht benötigten Zeilen und Kommentare entfernt.


      Sobald die Datei entsprechend angepasst wurde, muss noch ein entsprechender SSH-Key auf dem Server gespeichert werden. Hierzu muss man erstmal einen erstellen. Hierfür gibt es "Putty". Daher müssen wir folgendes herunterladen: putty-0.63-installer.exe


      Beachte bitte, dass "0.63" im Namen die Version ist und sich unter Umständen während der Zeit ändern kann. Daher bitte etwas mit denken. ;)


      Wenn ihr den Installer gedownloadet und installiert habt, öffnet ihr das Tool/Programm "PuTTYgen". Bei "Parameters" könnt ihr die "Stärke" des Schlüssels definieren. Desto stärker er wird, desto schwerer wird es auch, ihn zu knacken. ;)


      Wenn alle Einstellungen passen, drückt ihr auf "Generate" und bewegt eure Maus innerhalb des Fensters von PuTTYgen. Sobald der Vorgang abgeschlossen ist, habt ihr einen Key.


      Jetzt müssen wir unseren Key noch speichern. Dazu füllen wir erstmal die Felder entsprechend aus:

      Quote

      Key comment: Hier trage ich persönlich immer die E-Mail Adresse ein, um später einfacher zu erkennen, wem der Key gehört.
      Key passphrase: Hier kannst du dein persönliches Passwort für den Key festlegen. Wenn es leer bleibt, brauchst du beim Verbinden auf deinen Server kein Passwort eingeben - ist nicht ratsam.
      Confirm passphrase: "Key passphrase" wiederholt eingeben. ;)


      Gut... Jetzt kopierst du dir den kompletten Inhalt aus der Text-Box oben raus und speicherst es in die Datei, die in der SSH-Konfiguration (z.B. /home/sebastian/.ssh/authorized_keys2) steht. Das zu kopierende sieht zum Beispiel so aus:

      Quote

      ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAnpyrzgC1KGgj/hN3mJuy66mHlrDDc2StjpAiZm1ENHB3BBlLT+HVBW45hTqnohEvaj7MomeC7sy7L5jNHJXqeCEDkZU6L0ELcKZLYkCOstQGKtOD98c7buu+3vCUd6rXS9j/ccwBYnnzs624RX/BjMZP+40NMNeNgTGSkcKc0tM+i9R+npsqq1elUHtTU7PA4z+2Q3hB7/Cj29BLOVpTPya7XLa4KZZ5um8ZzX92rizmsTi1PM6x99oWsM0SrIuIqbN2WP3h8fL3DYbCpDqRsBzBP1uWHWGWG1GbID1FL+mbEjlhbU4981UCUjEfpUUq6VjRErkxH+i+vtMnVvxqiw== Key comment


      Eventuell musst du hierfür erst noch das ein oder andere Verzeichnis anlegen:

      Code
      1. mkdir -p /home/sebastian/.ssh/


      Wenn ihr den Text in der Datei gespeichert habt, speichert ihr noch jeweils den Key als "Public" und "Privat" auf eurem PC:

      • "Save public key"
      • Speicherort auswählen
      • Dateinamen festlegen (ich nenne das immer ssh_public_key_key_comment)
      • Speichern


      • "Save privat key"
      • Speicherort auswählen
      • Dateinamen festlegen (ich nenne das immer ssh_private_key_key_comment)
      • Speichern


      Wenn alles erfolgreich erledigt wurde, müssen die Rechte der Dateien auf dem Server noch angepasst werden:

      Code
      1. chmod 700 /home/sebastian/.ssh/chmod 600 /home/sebastian/.ssh/authorized_keys2


      Und die neuen Einstellungen für den SSH-Server müssen auch noch neu geladen werden:

      Code
      1. /etc/init.d/ssh force-reload


      Fertig. Jetzt solltet ihr euch mit eurem Key auf den Server verbinden können und alle anderen Verbindungsversuche werden geblockt.


      Denke dran, dass du beim PuTTY den SSH-Key explizit angeben musst. Hierzu musst du in folgendes Menü des PuTTYs:

      • Connection


        • SSH

          • Auth
          • Privaten Key auswählen: "Private key file for authentification:"


    Ich hoffe, ich konnte jemanden helfen und wünsche euch viel Erfolg damit! :)

  • Gute Anleitung, man sollte dieses Verfahren auf alle Fälle für einen User-Account anweden, der nur zum Login auf den Server dient. Nach dem Login wechselt man auf andere nötige User, z.B. in meinem Fall "ts3" für Teamspeak, usw. Hierbei würde ich noch zusätzliche in die SSHD-Konfig folgendes aufnehmen, damit der Login per SSH wirklich nur einem einzigen User gestattet wird, falls man mehrere User zulassen möchte, einfach nach AllowUsers die jeweiligen User per Leerzeichen getrennt aufführen:


    Code
    1. AllowUsers name-des-users


    /etc/init.d/sshd force-reload nicht vergessen ;)

  • Hallo Sebastian!


    Guter Tipp, aber wenn man die Autorisierten Keys ins jeweilige Homeverzeichnis speichert, kann sich sowieso nur dieser User einloggen und somit spart man sich dann die entsprechende Konfiguration mit "AllowUsers". ;)


    Code
    1. %h/.ssh/authorized_keys2


    Das sagt nämlich: Schau im Home-Verzeichnis des Benutzers nach... Wenn der Benutzer im System nicht existiert, wird die Verbindung sowieso abgelehnt und wenn ein User genutzt wird, der keinen Key auf dem Server in seinem Home-Verzeichnis besitzt, dann wird dies ebenfalls abgelehnt, da nur Keys zur Authentifizierung gültig sind. ;)

  • Ja, ich bin mir ganz sicher.


    Zu jedem privaten Key gehört ein passender öffentlicher Key... Du speicherst jeweils einen Key auf dem Server und der Benutzer muss sich mit dem Gegenstück am Server melden. Erst wenn das zusammen passt, lässt dich der Server überhaupt zu. ;)

  • Ja!


    Gut... Jetzt kopierst du dir den kompletten Inhalt aus der Text-Box oben raus und speicherst es in die Datei, die in der SSH-Konfiguration (z.B. /home/sebastian/.ssh/authorized_keys2) steht. Das zu kopierende sieht zum Beispiel so aus:


    ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAnpyrzgC1KGgj/hN3mJuy66mHlrDDc2StjpAiZm1ENHB3BBlLT+HVBW45hTqnohEvaj7MomeC7sy7L5jNHJXqeCEDkZU6L0ELcKZLYkCOstQGKtOD98c7buu+3vCUd6rXS9j/ccwBYnnzs624RX/BjMZP+40NMNeNgTGSkcKc0tM+i9R+npsqq1elUHtTU7PA4z+2Q3hB7/Cj29BLOVpTPya7XLa4KZZ5um8ZzX92rizmsTi1PM6x99oWsM0SrIuIqbN2WP3h8fL3DYbCpDqRsBzBP1uWHWGWG1GbID1FL+mbEjlhbU4981UCUjEfpUUq6VjRErkxH+i+vtMnVvxqiw== Key comment

  • Sorry, aber ein wenig selbst googlen?!


    Ich nehme an Linux/Debian?
    In den Ordner .ssh wechseln: cd /home/christopher/.ssh
    Datei erstellen: touch authorized_keys2