Opie: One Time Passwords
One time passwords
Es kommt immer einmal vor, dass man sich von einem fremden Netz/fremden Rechnern aus mit einem seiner Server verbinden möchte. Meist ist dies auch kein Problem, aber in einem Internetcafe z.B. garantiert einem niemand, dass nicht eine Software auf den Rechnern installiert ist, die das Kennwort bei der Eingabe über die Tastatur mitschneidet.
Diese Gefahr kann man durch die Verwendung von Einmalkennwörtern (One time password, OTP) umgehen, selbst wenn eine Software die Eingaben mitschneiden würde, hätte der Angreifer nichts davon, da das Kennwort bereits nicht mehr gültig ist.
Installation
Die Installation beginnt mit:
apt-get install opie-client opie-server
Konfiguration
Zunächst muss opie
in den Prozess der Benutzerauthentifizierung eingebunden werden (/etc/pam.d/sshd
):
# /etc/pam.d/sshd
# Standard Un*x authentication.
#@include common-auth
auth sufficient pam_unix.so nullok_secure
auth sufficient pam_ldap.so use_first_pass
auth sufficient pam_opie.so
auth required pam_deny.so
Zeile 4 ist bereits vorhanden, wird jedoch auskommentiert.
Sofern kein LDAP
genutzt wird kann die entsprechende Zeile (pam_ldap.so
) entfallen.
Anschließend muss für SSH
die Nutzung von challenge-response passwords
aktiviert werden (/etc/ssh/sshd_config
):
# /etc/ssh/sshd_config
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes
Nun kann opie
initialisiert werden (die Initialisierung gilt immer nur für den derzeit angemeldeten Benutzer):
/etc/init.d/ssh restart
opiepasswd -c -f
Es muss nun ein Masterkennwort angegeben werden, welches mind. 10 Zeichen lang sein sollte. Mit Hilfe dieses Kennworts können später Einmalkennwörter generiert werden:
Using MD5 to compute responses.
Enter new secret pass phrase: $password
Again new secret pass phrase: $password
ID user OTP key is 499 123456
BUG DUCT SMOG GET MOON TIDY
Nun kann man ein Einmalkennwort generieren lassen:
opiekey 498 123456
Hier muss nun das Masterkennwort eingegeben werden, als Resultat erhält man ein Einmalkennwort:
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Sorry, but you don't seem to be on the console or a secure terminal.
Warning: Continuing could disclose your secret pass phrase to an attacker!
Enter secret pass phrase: $password
SOON SOME FLEW DUCT TAPE JAPA
Mit Hilfe des Kennworts kann nun einmalig eine Anmeldung am System erfolgen.
Verwendung
Wenn man sich per OTP
am Server anmelden möchte drückt man bei der Aufforderung zur Kennworteingabe einfach Enter
. Daraufhin springt opie
an:
Password:
otp-md5 498 123456 ext, Response:
Der Wert 498
gibt, ähnlich wie bei einer TAN-Liste, das von opie
gewünschte Einmalkennwort an. Der zweite Wert bezeichnet quasi den Benutzer dessen Einmalkennwort abgefragt wird. Wir haben dieses bereits oben generiert (opiekey 498 123456
) und können es nun eingeben.
Anstelle sich jedes Mal vor dem Login ein neues Einmalkennwort generieren zu lassen kann man sich auch eine Liste mit mehreren Einmalkennwörtern generieren lassen:
opiekey -n 20 499 123456
Hierbei werden 20 Einmalkennwörter generiert, beginnend mit der ID 499.
Statt einer vorgenerierten Liste kann man aber auch Tools wie z.B. OTP Gen
für iOS nutzen.
Hinweis: Die opie
-Pakete sind in Debian Squeeze noch vorhanden, in Wheezy hingegen fehlen sie jedoch. Man kann aber problemlos die Squeeze-Pakete auch mit Wheezy verwenden.