Tippsammlung

Kleine Tippsammlung für mich und dijenige die sich auf meine Webseite verirrt haben.

Archiv

Know-How
Jahr
Tag(s):
Know-How
secure shell SSH

Was ist OpenSSH?

OpenSSH ist eine freie Version der SSH-Verbindungssuite, d.h. einer Server-Client Verbindung einer sicheren Komunikation. Applikationen wie telnet, rlogin, ftp und ähnliche Applikationen senden Ihre Passwort im Klartext. Dies ist zu vergleichen als würde man sein Passwort mit einer Postkarte verschicken und jeder kann sie lesen.
OpenSSH verschlüsselt eine Verbindung, d.h. man kann nicht mithören (eavesdropping), oder die Verbindung entführen (connection hijacking) und ähnliche Angriffe. Zusätzlich bietet OpenSSH neben einer Unzahl sicherer Tunnel- und Authentifikationsmöglichkeiten die Unterstützung für alle SSH-Protokollversionen an.

Mit diesem Artikel will ich aufzeigen, wie man einen zugriff Automatisiert, d.h. eine Verbindung nur mit einem Zertifikat und ohne Passwort herstellt. Dies ist nur für erfahrene Anwender geeignet die wissen was sie tun.

Vorteile

  • Anmeldung ohne Passwort, sofern Zertifikat vorhanden
  • Skripte können automatisiert werden

Nachteil

  • Sicherheit hängt am Zertifikat
  • Bei Verlust kann man sich am Server anmelden
Um die Nachteile zu minimieren muss man sicherzustellen das kein Unfug betrieben wird, so sollte man:
  • Schreib und Leseberechtigung nur auf die Ordner erlauben die wirklich nötig sind.
  • Unterbindung Anmeldung für root-Benutzer.

Was brauchen wir:

  • Server mit OpenSSH (SSH Daemon)
  • SSH Client wie Putty oder OpenSSH
  • puttygen.exe zum generieren eines Schlüssels

1. Schlüsselpaar generieren

  • Programm Putty Key Generator starten
  • Einen RSA oder DSA SSH-2 Schlüssel mit mindestens 1024-Bit länge und ohne Passwort erstellen (Generate)
  • Den Public Key in die Zwischenablage speichern:

2. Public Key auf den Server speichern

  • Benutzer und Gruppe erstellen z.B. wartung mit einem Passwort (Lokale Anmeldung)
  • Im Home-Verzeichnis des wartung-Benutzers dem Ordner .ssh/ erstellen
  • Berechtigung .ssh/ mit  755 versehen
  • In den Ordner .ssh/ wechseln
  • Den Key aus der Zwischenablage mittles echo [Rechte Maustaste Zwischenablage des Key einfügen] > authorized_keys einfügen.
  • Berechtigung der Datei authorized_keys auf 644 setzten

3. SSH Server konfigurieren (z.B. Ubuntu 10.10 Server)

  • Konfiguration sshd_config folgenden Eintrag setzen, damit beim Anmelden nach einem Key gesucht wird.
    • AuthorizedKeysFile    %h/.ssh/authorized_keys
  • SSH Server neu starten

4. Putty Key Generator: Client Zerifikat

  • Für Putty einen Private-Key als datei.ppk speichern
  • Für Linux, d.h. OpenSSH Client den eine zertifikat.pub speichern
    • Menü: Conversion>Export OpenSSH Key

5. Konfigurieren des Clients

Putty:
  • Putty starten und im Profil auf:
    • Connection>SSH>Auth die datei.ppk angeben
  • Als neue Session speichern
OpenSSH Client:
  • Datei client.pub z.B. im Home Verzeichnis ablegen und zugriff mit 600 setzten
  • Verbindugn wie folgt starten:
ssh -i ./client.pub user@server

SCP:
  • Datei client.pub z.B. im Home Verzeichnis ablegen und zugriff mit 600 setzten
  • Verbindung wie folgt starten:
scp -i ./client.pub ./meine_Datei  user@server:/home/user/meine_Datei

Jetzt kann man automatisiert einen Kopierauftrag über eine verschlüsselte Verbindung erstellen ohne Angabe eines Passwortes. Man muss sich aber bewusst sein, das kritische Systeme durch zugriffschutz gut abgesichert werden. Möglichkeiten wären:
  • Firewall Regeln
  • iptables
  • Datei-Berechtigung

Weitere Anwedungsbeispiele

Natürlich kann man auch jeden anderen Zugang von Aussen zusätzlich mit einem Zertifikat absichern und die normale Authentifizeriung abschalten. Dies macht einen Server um ein vielfaches sicherer, da z.B. Brut-Force Angriffe wirkungslos sind.

Links:



    Neuer Kommentar:

    Werbung oder Ähnliches sind nicht erlaubt, daher wird jeder Beitrag geprüft und freigegeben.
    Advertising, etc. are not allowed, so any contribution is reviewed and approved.
    Facebook-Webadress are not allowed, Facebook als Webadresse ist nicht erlaubt


    * Die E-Mail wird nicht veröffentlicht / The email will not be published
    ** Bitte Zahl eintragen / Please enter the number
    captcha image