» SSH « Sicherer Desktop- und Remote-Zugriff ohne Passwort über Passphrase
kategorie: secure
|
hits: 2614
|
erstellt: so. 30.nov 2008, 12:32
|
source by: markus görner
Für die sichere Authentifizierung über das Netzwerk verwendest du am besten ein SSH-Schlüsselpaar, bestehend aus einer privaten- und öffentlichen Schlüsseldatei.
Es wird dann bei der Anmeldung kein Benutzername und Passwort mehr verlangt, sondern die Computer authentifizieren sich sicher anhand der generierten SSH-Keys.
Somit sind Brute-Force-Attaken auf dem Server ausgeschloßen, da sich nur noch der einloggen kann, der im Besitz des privaten Schlüssels ist und dessen Passphrase kennt.
Lizens: <Freie Software>
Index:
» Schlüssel generieren
» Schlüssel installieren
» Login über das Public-Key-Verfahren
» Public Key Authentication aktivieren
» KDE/GNOME/KONSOLE-Benutzeranmeldung über Passphrase
Da der DSA Algorithmus von der National Security Agency (NSA) entwickelt wurde (und wir denen nun gar nicht trauen ) nehmen wir den RSA-Schlüssel.
- der private Schlüssel id_rsa bleibt auf dem Client
(Arbeitsplatz, mit installierten openssh-client)
- der öffentliche Schlüssel id_rsa.pub wird auf den Server kopiert
(entfernter Rechner, mit installierten openssh-server)
Schlüssel generieren
Den RSA-Key generierst du auf deinen Client (von dem du dich einloggen willst).
RSA-Standard ist mit 2048 Bit Länge (SSH-Protokollversion 2)
- -t
bestimmt den Algorithmus [rsa/dsa]
- -b
die Größe der Schlüssellänge in Bit
aus Sicherheitsgründen sollte die Schlüssellänge 1024 Bit nicht unterschreiten
ssh-keygen -t rsa
Es wird nach dem Speicherort der Schlüsseldateien gefragt:
Enter file in which to save the key (/home/markus/.ssh/id_rsa):
Als Dateinamen werden id_rsa vorgeschlagen, was wir mit <Enter> bestätigen.
Du wirst aufgefordert für den Schlüssel eine Passphrase (Kennwort) einzugegeben.
Je nach Verwendungzweck gibt es verschiedene Möglichkeiten wie du mit deinen SSH-Schlüssel arbeiten kannst. Hier sind nur einige Möglichkeiten aufgeführt.
- Single Sign on
Benutzer-Unix-Kennwort und SSH-Passphrase sind identisch
du nutzt die SSH-Passphrase für deine Desktop/Konsolen/Netzwerk-Benutzeranmeldung, d.h. das du nach einer einmaligen Authentifizierung auf alle Rechner und Dienste, für die du Berechtigungen hast, zugreifen kannst, ohne dich jedes Mal neu anmelden zu müssen (siehe Benutzeranmeldung über Passphrase)
- Single Sign on - mit seperaten Benutzer-Unix-Kennwort
Benutzer-Unix-Kennwort und SSH-Passphrase sind unterschiedlich
wie oben, du hast jedoch die Möglichkeit dich ohne geladenen SSH-Schlüssel einzuloggen
- leere Passphrase
SSH-Passphrase bleibt leer (wird nicht empfohlen)
wenn man sich sicher ist das keine unberechtigte Person Zugriff auf die private Schlüsseldatei hat oder wenn der Schlüssel mittels eines Scripts genutzt werden soll, kann man die Passphrase leer lassen und mit <Enter> weitermachen
Enter passphrase (empty for no passphrase):
Nun wurde das Schlüsselpaar in dem Verzeichnis /home/markus/.ssh/ erstellt.
Schlüssel installieren
Jetzt muß der öffentliche Schlüssel id_rsa.pub auf den Sevrer kopiert werden.
- [-i [identity_file]]
id_rsa.pub
- [user@machine]
Benutzername@Ip.Adresse.Des.Servers
ssh-copy-id -i /home/markus/.ssh/id_rsa.pub root@ip.adresse.des.servers
Nun wird das letzte mal nach dem Benutzer-Unix-Kennwort auf dem Server gefragt.
Password:
Nach der korrekten Passwort-Eingabe wird auf dem Server die Datei /user/.ssh/authorized_keys erstellt.
Login über das Public-Key-Verfahren
Nun kannst du dich mit
ssh root@ip.adresse.des.servers
auf dem Server einloggen.
Hast du bei der Schlüssel-Erstellung eine Passphrase angegeben, wirst du nun nach dem Kennwort des privaten Schlüssels, der auf dem Client liegt gefragt.
Enter passphrase for key '/home/markus/.ssh/id_rsa':
----------------------------------------------
Welcome to
devlux03.social-sourcecode.de
Debian Etch v4.0 - 64bit
----------------------------------------------
devlux03:~#
Public Key Authentication aktivieren
Aufgepasst vor dem aussperren!
Konfigurierst du den SSH-Server per Remote-Verbindung mußt du aufpassen das die bestehende SSH-Konfigurations-Verbindung nicht getrennt wird (also kein <exit> und das Konsolenfenster nicht schließen), solange bis die Anmeldung per Authentication Key einwandfrei funktioniert.
Damit sich niemand mehr mit Benutzername und Kennwort anmelden kann, muß auf den SSH-Server noch die /etc/ssh/sshd_config modifiziert bzw. wenn die Werte nicht vorhanden sind, diese hinzugefügt werden.
# /etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PasswordAuthentication no
KerberosAuthentication no
UsePAM yes
Damit die Änderung wirksam wird, muß der SSH-Server neu gestartet werden.
/etc/init.d/ssh restart
Um sich an deinen Server anmelden zu können benötigst du ab jetzt immer deine Passphrase mit den privaten Schlüssel (also gut darauf aufpassen!).
KDE/GNOME/KONSOLE-Benutzeranmeldung über Passphrase
Wir können jetzt anstatt des Benutzer-Unix-Kennwort die SSH-Passphrase für unsere Desktop/Konsolen-Benutzeranmeldung verwenden.
Das hat den vorteil das du dann auf alle Rechner und Dienste, für die du Berechtigungen hast (in deren Home-Verzeichnis unter ~/.ssh/authorized_keys der Public-Key id_rsa.pub kopiert wurde), zugreifen kannst, ohne dich jedes Mal neu anmelden zu müssen
Für die Konfiguration benötigst du root Rechte.
su root
Um die Passphrase gleich beim KDE/GNOME-Login abzugleichen mußt du das Paket libpam-ssh installieren
aptitude install libpam-ssh
Für KDE/GNOME in einen Editor die Datei /etc/pam.d/kdm bzw. für Gnome die /etc/pam.d/gdm öffnen.
nano /etc/pam.d/kdm
Füge vor @include common-auth @include pam-ssh-auth
und nach @include common-session @include pam-ssh-session ein.
#
# /etc/pam.d/kdm - specify the PAM behaviour of kdm
#
auth required pam_nologin.so
auth required pam_env.so readenv=1
auth required pam_env.so readenv=1 envfile=/etc/default/locale
@include pam-ssh-auth
@include common-auth
session required pam_limits.so
@include common-account
@include common-password
@include common-session
@include pam-ssh-session
Mit den beiden Tasten 'Strg O' speichern und mit 'Strg X' den
nano Editor beenden.
Für die Konsole die Datei /etc/pam.d/login.
nano /etc/pam.d/login
Füge vor @include common-auth @include pam-ssh-auth
und nach @include common-session @include pam-ssh-session ein.
#
# The PAM configuration file for the Shadow `login' service
#
...
@include pam-ssh-auth
# Standard Un*x authentication.
@include common-auth
...
# Standard Un*x account and session
@include common-account
@include common-session
@include pam-ssh-session
@include common-password
Mit den beiden Tasten 'Strg O' speichern und mit 'Strg X' den
nano Editor beenden.
Da das Modul pam-ssh-auth vor dem Modul common-auth geladen wird, muß ab der nächsten Desktop-Anmeldung grundsätzlich das Kennwort vom SSH-Schlüssel und nicht das Benutzer-Unix-Kennwort angeben werden.
Bei erfolgreicher Abgleichung steht dir ohne erneuter Passphrase-Eingabe das System inkl. dauerhaft geladener SSH-Schlüssel bis zur nächsten Abmeldung zur Verfügung.
Schlägt die erste Anmeldung durch einer falsch eingegebener Passphrase am SSH-Agent fehl, wird als zweites der normale Linux-Anmeldeprozess gestartet und die SSH-Schlüssel werden nicht geladen (ausgenommen wenn Benutzer-Unix-Kennwort und SSH-Passphrase identisch sind).
Dann den XServer mit der Tastenkombination 'Strg Alt Back' neu starten.
Ist dein Benutzer-Unix-Kennwort und SSH-Passphrase identisch, kannst du dich auf deinen Computer nur noch über die Passphrase des SSH-Key einloggen.
Willst du das System nur mit dem normalen Benutzer-Unix-Kennwort starten, dann läßt du bei der ersten Abfrage das Kennwortfeld leer.
Bei der zweiten Kennwortabfrage gibst du dann dein Benutzer-Unix-Kennwort ein und schon wird der normale Linux-Anmeldeprozess gestartet und die SSH-Schlüssel werden nicht geladen.
Zur Überprüfung ob der private Schlüssel zur Verfügung steht einfach in der Konsole
ssh-add -L
eingeben.
Haftungsausschluß!
Die Nutzung der Inhalte dieser Website erfolgt auf eigene Gefahr.
Die Autoren übernehmen keine Gewährleistung oder Garantien dafür, dass die Inhalte fehlerfrei oder zulässig sind.
Der Nutzer übernimmt die alleinige Haftung für Schäden an seinem Computersystem oder den Verlust von Daten.
Es obliegt der alleinigen Verantwortung des Nutzers, für ausreichenden Schutz und Sicherungskopien der Daten,
des Computersystems und sonstiger Ausrüstung zu sorgen.
Nobodys perfect, falls du einen Fehler oder Verbesserungsvorschläge findest, dann würde ich mich freuen wenn du mir schreibst.

Dieser Werk bzw. Inhalt ist unter
einer Creative Commons-Lizenz lizenziert.