OpenBSD und Skey

Skey unter OpenBSD 4.4

Skey ist ein Einmal-Passwort System zur Verwendung auf verschiedensten unixartigen Betriebssystemen. Einmal-Passwörter sind für die verschiedensten Einsatzbereiche ideal. So kann z.B. an einem öffentlichen Terminal niemand ein Kennwort mitlesen. Selbst wenn er es tut bringt es nichts, da das Kennwort bereits direkt nach der Anmeldung schon wieder ungültig ist- ein Einmal-Kennwort eben. Ein anderer Einsatzbereich ist z.B. ein FTP-Server. Oft werden hier ja Zugänge benötigt, die lediglich zum einmaligen Übetragen von Daten notwendig sind (z.B. Logfiles von Kunden). Hier kann man sich dann einen universellen Loginnamen hernehmen und diesen mit Skey absichern. Dem Kunden teilt man dann den Loginnamen und lediglich ein Passwort aus der Sequenz mit. Die Folge ist, dass er sich einmal anmelden kann und man sich keine Gedanken über die Deaktivierung nicht mehr benötigter Accounts machen muss. Generatoren für Passwörter gibt es für die verschiedensten Einsatzbereiche: Skey für Java ME auf Handys: http://tanso.net/j2me-otp/
Skey für Windows: http://www.uknet.com/winkey.exe
Skey für Apple iPhone: http://www.rho.cc/1Key/
Skey für Windows Mobile: http://handheld.softpedia.com/get/Internet-Utilities/Skey-35701.shtml

Einrichtung von Skey

Vor der Verwendung muss Skey intialisiert und aktiviert werden. Hierzu als root  
# skeyinit -E
  eingeben. Dieser Befehl legt unter /etc ein Verzeichnis skey mit den entsprechenden Rechten an:  
# ls -al /etc/skey/
total 12
drwx-wx--T   2 root  auth    512 Aug  1 11:50 .
drwxr-xr-x  22 root  wheel  2560 Aug  1 11:50 ..
  Als nächster Schritt sind die Benutzer zu initialisieren (in Gedenken an die Frau von "Glatze" heisst mein Testuser "pummel"- auch wenn sie nie verstehen würde worum es hier überhaupt geht...):  
# skeyinit pummel
Reminder - Only use this method if you are directly connected
           or have an encrypted channel.  If you are using telnet,
           hit return now and use skeyinit -s.
[Adding pummel with md5]
Enter new secret passphrase:
Again secret passphrase:
   
ID pummel skey is otp-md5 100 obsd98790
Next login password: REAL FLEA SLAB GIBE SORT HEAD
   
#
  Nun sollte es unter /etc/skey einen Eintrag für den Benutzer "pummel" geben:  
# ls -al /etc/skey/
total 16
drwx-wx--T   2 root    auth    512 Aug  1 13:10 .
drwxr-xr-x  22 root    wheel  2560 Aug  1 13:09 ..
-rw-------   1 pummel  auth     43 Aug  1 13:10 pummel
#
  Jetzt kann ein erster Test erfolgen- die Anmeldung per SSH:  
login as: pummel:skey
Using keyboard-interactive authentication.
otp-md5 99 obsd98790
S/Key Password:
  99 ist hier die Sequenznummer. Wichtig ist, dass der Anmeldename gefolgt von ":skey" eingegeben wird damit das System davon Kenntnis hat, dass wir Skey und nicht eine normale Passwort-Authentifizierung wollen.

Skey Passwörter auf Vorrat

Als Benutzer ist es meines Erachtens praktisch wenn man sich ein paar Kennwörter für unterwegs generiert und diese dann gut versteckt auf einem Zettel oder so mit sich herumträgt. Um z.B. die nächsten 5 Passwörter zu erzeugen:  
$ skey -n 5 99 obsd98790
Reminder - Do not use this program while logged in via telnet.
Enter secret passphrase:
95: SOD LESK NEAT PO NINA URGE
96: HOC WADE FULL GLEN SIFT THAN
97: KNEW MEEK EVE GLIB COED FAR
98: ODE FEUD STUN GETS CHEF ECHO
99: MITT BID GET SARA EMIT LIP
  "-n 5" bedeutet dass eine Liste mit 5 Passwörtern erzeugt werden soll. 99 ist die Start-Sequenznummer und "obsd98790" der aktuelle Schlüssel, ich nenne ihn mal Serverschlüssel, da man ja recht wenig Einfluss darauf hat. Will man die nächste Sequenznummer herausfinden kann man als "pummel" folgendes eingeben:  
$ skeyinfo
98 obsd98790
  Laut der Liste mit den Kennwörtern oben ist also "ODE FEUD STUN GETS CHEF ECHO" das nächste Skey-Passwort.

Skey-Passwörter unter Windows erzeugen

Für Windows gibt es das Tool "WinKey" (http://www.uknet.com/winkey.exe).
In die Zeile "Challenge" kommt der String, der beim Login ausgegeben wird (im Beispiel oben also "otp-md5 99 obsd98790". Beim Passwort wird das geheime Passwort, das bei der Initialisierung vergeben wurde eingegeben. Das Ergebnis ist das Onetime-Password für die Sequenznummer 99.

Warnung bei Erreichen eines Limits

 
skeyaudit -a (alle Skey Benutzer) -i (an die Konsole- sonst per Mail) -l Limit
  Folgende Meldung erscheint:  
"
You are nearing the end of your current S/Key sequence for account
pummel on system obsd44.rs.de.
   
Your S/Key sequence number is now 97.  When it reaches zero
you will no longer be able to use S/Key to log into the system.
   
Type "skeyinit -s" to reinitialize your sequence number.
"
  So kann man z.B. einen cron-Job einrichten, der periodisch Warn-Mails an alle Skey-Benutzer versendet wenn ihre Sequenznummer unter einem Limit von 15 liegt:  
0 * * * * /usr/bin/skeyaudit -a -l 15
  Alternativ kann der Aufruf von skeyaudit auch im Login-Script erfolgen. Standardmässig ist eine Warnschwelle von 12 Schlüsseln eingestellt.

Skey-Schlüssel erneuern

Um seine verfügbaren Schlüssel zu erneuern gibt man als Benutzer  
skeyinit -a skey 
  ein. Lässt man das "-a skey" wird der Benutzer nach seinem Kennwort gefragt. Da er dies aber nicht hat, bzw. haben soll wird "-a skey" angegeben. Dadurch wird er zur Authentifizierung nach einem Skey-Passwort gefragt.  
$ skeyinit -a skey
Reminder - Only use this method if you are directly connected
           or have an encrypted channel.  If you are using telnet,
           hit return now and use skeyinit -s.
otp-md5 96 obsd98790
S/Key Password:
[Updating pummel with md5]
Old seed: [md5] obsd98790
Enter new secret passphrase:
Again secret passphrase:
   
ID pummel skey is otp-md5 100 obsd98791
Next login password: SWUM COMA MILK SIR FURY SOP
   
$
  Wie man sieht steht die Sequenznummer nun wieder auf 100 und somit sind wieder genügend Schlüssel vorhanden. Der Serverschlüssel hat sich ebenfalls verändert damit nicht nur einfach eine Wiederholung bereits verwendeter Passwörter stattfindet.


Verwendung von Skey mit PuTTy

PuTTy (http://www.chiark.greenend.org.uk/~sgtatham/putty/) ist ein, danke an Simon Tatham, freies Windows-Programm, mit dem man sich unter anderem per SSH mit einem anderen Rechner verbinden kann. Möchte man nun dass PuTTy die Anmeldung mit Skey verwendet, kann man beim Verbinden in die Adresszeile einfach den Anmeldenamen vor den Hostnamen setzen. Konkret würde das dann in etwa so aussehen:  
pummel:skey@192.168.257.78
  Dieses Verfahren funktioniert dann auch ohne Probleme mit SSH2.