-
Security (2)
-
Linux-Security (10)
-
Firewalls (3)
-
Cryptography (2)
-
Firewalls (3)
- Windows-Security (2)
-
Cryptology (1)
-
Programmierung (1)
-
PHP (2)
-
PHP (2)
-
Linux-Security (10)
-
Be-paranoid.net (-2)
- Viren & Würmer (2)
- Hints (1)
- Buchtipps (1)
- Offtopic (7)
- Programmieren (5)
- Honeypots (1)
- Linux Security (2)
- Cryptology (1)
- Datenschutz (3)
- Viren & Würmer (2)
Hexblog
SEppl's Blog
Rabenhorst
The Daily WTF
Otrn Blog
Userfriendly
Schneier on Security
Planet SELinux & News
Heise
SecurityFocus
Open4Free Blog
xkcd
|_|_|0|
|0|0|0|
Be-Paranoid.net
Secure SSH Tutorial Part 2: Identity/Pubkey Authentifizierung
Orginal Version | Artikel editieren | Versionen anzeigen | Bottom
Letzte Änderung: 08.03.2007, 00:42
Inhaltsverzeichnis
- Vorwort
- Tutorials in dieser Artikelserie
- Einführung
- Identity/Pubkey erstellen
- Identity/Pubkey zum Server hochladen
- Identity/Pubkey Authentifizierung auf dem Server einstellen
- Schlüsselpaar auswählen
- Ratschläge
Vorwort Top
Im ersten Teil dieser Tutorialserie ging es um die sichere Verwaltung des Host-Schlüssels, dieser Teil beschäftigt sich mit Identity/Pubkey Authentifizierung unter SSH.
Tutorials in dieser Artikelserie Top
Einführung Top
OpenSSH - wenn ich in diesem Tutorial den Begriff SSH verwende meine ich eigentlich immer OpenSSH - unterstützt einige nützliche Dinge zur Authentifizierung der Benutzer. Wir schauen uns jetzt die "Identity/Pubkey Authentifizierung" an. Bei dieser Methode ersetzen wir die normale Vorgehensweise, statische Passwörter zu benutzen, die mit einem keylogger abgehört werden können. Alles was wir brauchen ist ein Schlüsselpaar auf der Festplatte, mit dem wir uns authentifizieren. Der SSH-Server hat die Identities/Pubkeys, welchen er vertraut, in einer Liste.
Vorteile:
- Ein keylogger reicht nicht mehr, da der private key, und die passphrase benötigt wird
- Bruteforce -und Directoryhacks funktionieren nicht mehr
Identity/Pubkey erstellen Top
Wie schon im ersten Teil erwähnt, gibt es drei Typen von Protokollen die wir verwenden können:
Code:
- RSA1 Parameter: -t rsa1 Standarddateiname: identity Protokoll: SSH 1
- RSA Parameter: -t rsa Standarddateiname: id_rsa Protokoll: SSH 2
- DSA Parameter: -t dsa Standarddateiname: id_dsa Protokoll: SSH 2
Wir erstellen das Schlüsselpaar wie gewohnt mit ssh-keygen:
Code:
workstation:/home/simon# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/simon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/simon/.ssh/id_rsa.
Your public key has been saved in /home/simon/.ssh/id_rsa.pub.
The key fingerprint is:
01:4a:69:4a:81:16:f2:b9:aa:41:da:55:af:dd:34:ce simon@workstation
workstation:
workstation:/home/simon# cd $HOME/.ssh/
workstation:~/.ssh# ls
id_rsa id_rsa.pub
Jetzt sehen wir die zwei Dateien, die ssh-keygen erstellt hat: id_rsa, und id_rsa.pub. Die erste Datei ist der private key, die mit der passphrase geschützt ist, die zweite Datei (.pub) ist der public key.
Identity/Pubkey zum Server hochladen Top
Jetzt schicken wir den public key dem Server, dazu verwenden wir scp, ein Tool von SSH, welches für filetransfer gedacht ist:
Code:
workstation:/# cd $HOME/.ssh/
workstation:/home/simon/.ssh# scp id_rsa.pub simon@ssh-server:id_rsa_workstation.pub
Password:
workstation:/home/simon/.ssh# ssh ssh-server -L simon
Password:
ssh-server:/ cd $HOME
ssh-server:/home/simon# mkdir .ssh && chmod 700 .ssh && cd .ssh
#Jetzt fügen wir die Datei hinzu, die wir hochgeladen haben
ssh-server:/home/simon/.ssh# cat ../id_rsa_workstation.pub >> authorized_keys
ssh-server:/home/simon/.ssh# chmod 600 authorized_keys
ssh-server:/home/simon/.ssh# rm ../id_rsa_workstation.pub && exit
Identity/Pubkey Authentifizierung auf dem Server einstellen Top
Jetzt wollen wir auf dem SSH-Server einstellen, dass der Server Identity/Pubkey erlaubt. Dazu editieren wir die sshd_config
sshd_config:
#SSH version 1 Identity Authentifizierung
RSAAuthentication yes
#SSH version 2 Pubkey Authentifizierung
PubkeyAuthentication yes
#Der Aufbewahrungsort der Schlüssel, ohne Slash am anfang bedeutet im Home-Verzeichnis.
AuthorizedKeysFile .ssh/authorized_keys
Nach einem Neustart des Servers sollte der SSH-Server Identity/Pubkey Authentifizierung erlauben.
Jetzt können wir noch normale Passwort-Authentifizierung abschalten:
sshd_config:
PasswordAuthentication no
UsePAM no
Nachdem wir jetzt alles vorbereitet haben, können wir den unterschied ausprobieren:
Code:
workstation:/# ssh ssh-server
Enter passphrase for key '/home/simon/.ssh/id_rsa':
Mit dem Parameter -v können wir übrigens sehen, was passiert wenn wir uns mit einem ssh-server verbinden.
Schlüsselpaar auswählen Top
Mit dem Parameter -I <keyfile> können wir den Schlüssel auswählen, der für die Identity/Pubkey Authentifizierung verwendet wird:
Code:
workstation:/# ssh -i ~/.ssh/ssh_key ssh-server
Enter passphrase for key '/home/simon/.ssh/ssh_key':
Standardmässig lasst sich das in der Datei ~/.ssh/config eintragen:
Code:
Host ssh-server
IdentityFile ~/.ssh/special_ssh_key
Ratschläge Top
Der angelegte Schlüssel sollte eine passphrase benutzen, damit der Schlüssel geschützt ist, die passphrase wird zum entschlüsseln des Schlüssels benutzt, ohne diese passphrase hat jeder, der an den private key kommt vollständigen Zugriff auf den SSH-Server. Wie man sich bei einem SSH-Server mit einer passphrase einloggen kann, ohne ein Passwort eintippen zu müssen wird wahrscheinlich im nächsten, oder übernächsten Artikel gezeigt.
Bei älteren Versionen von ssh, kann es vorkommen das authorized_keys für SSHv1 und authorized_keys2 für SSHv2 benutzt wird, ein Hardlink, der mit ln authorized_keys authorized_keys2 erzeugt wird, löst dieses Problem.
Orginal Version | Artikel editieren | Versionen anzeigen | Top
Letzte Änderung: 08.03.2007, 00:42