In der Voreinstellung unterstützt FreeBSD One-time Passwords in Everything (OPIE). OPIE wurde konzipiert um Replay-Angriffe zu verhindern, bei dem ein Angreifer das Passwort eines Benutzers ausspäht und es benutzt, um Zugriff auf ein System zu erlangen. Da ein Passwort unter OPIE nur einmal benutzt wird, ist ein ausgespähtes Passwort für einen Angreifer nur von geringem Nutzen. OPIE verwendet eine sichere Hash-Funktion und ein Challenge/Response-System, um Passwörter zu verwalten. Die FreeBSD-Implementation verwendet in der Voreinstellung die MD5-Hash-Funktion.
OPIE verwendet drei verschiedene Arten
von Passwörtern. Das erste ist das normale UNIX®- oder
Kerberos-Passwort. Das zweite ist das Einmalpasswort, das von
opiekey
generiert wird. Das dritte Passwort
ist das „geheime Passwort“, das zum Erstellen der
Einmalpasswörter verwendet wird. Das geheime Passwort steht in
keiner Beziehung zum UNIX®-Passwort und beide Passwörter
sollten unterschiedlich sein.
Es gibt noch zwei weitere Werte, die für
OPIE wichtig sind. Der erste ist der
„Initialwert“ (engl.
seed oder
key), der aus zwei Buchstaben und
fünf Ziffern besteht. Der zweite Wert ist der
„Iterationszähler“, eine Zahl zwischen 1 und 100.
OPIE generiert das Einmalpasswort, indem
es den Initialwert und das geheime Passwort aneinander hängt
und dann die MD5-Hash-Funktion so oft, wie
durch den Iterationszähler gegeben, anwendet. Das Ergebnis wird
in sechs englische Wörter umgewandelt, die das Einmalpasswort
ergeben. Das Authentifizierungssystem (meistens PAM) merkt sich
das zuletzt benutzte Einmalpasswort und der Benutzer ist
authentifiziert, wenn die Hash-Funktion des Passworts dem
vorigen Passwort entspricht. Da nicht umkehrbare
Hash-Funktionen benutzt werden, ist es unmöglich, aus einem
bekannten Passwort weitere gültige Einmalpasswörter zu
berechnen. Der Iterationszähler wird nach jeder erfolgreichen
Anmeldung um eins verringert und stellt so die Synchronisation
zwischen Benutzer und Login-Programm sicher. Wenn der
Iterationszähler den Wert 1
erreicht, muss
OPIE neu initialisiert werden.
Es gibt ein paar Programme, die in diesen Prozess einbezogen
werden. Ein Einmalpasswort oder eine Liste von
Einmalpasswörtern, die von opiekey(1) durch Angabe eines
Iterationszählers, eines Initalwertes und einem geheimen
Passwort generiert wird. opiepasswd(1) wird benutzt, um
Passwörter, Iterationszähler oder Initialwerte zu ändern.
opieinfo(1) hingegen gibt den momentanen Iterationszähler
und Initialwert eines Benutzers aus, den es aus
/etc/opiekeys
ermittelt.
Dieser Abschnitt beschreibt vier verschiedene Arten von
Tätigkeiten. Zuerst wird erläutert, wie Einmalpasswörter über
eine gesicherte Verbindung konfiguriert werden. Als nächstes
wird erklärt, wie opiepasswd
über
eine nicht gesicherte Verbindung eingesetzt wird. Als drittes
wird beschrieben, wie man sich über eine nicht gesicherte
Verbindung anmeldet. Die vierte Tätigkeit beschreibt, wie man
eine Reihe von Schlüsseln generiert, die man sich aufschreiben
oder ausdrucken kann, um sich von Orten anzumelden, die über
keine gesicherten Verbindungen verfügen.
Um OPIE erstmals zu initialisieren, rufen Sie opiepasswd(1) über eine gesicherte Verbindung auf:
%
opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c Adding unfurl: Only use this method from the console; NEVER from remote. If you are using telnet, xterm, or a dial-in, type ^C now or exit with no password. Then run opiepasswd without the -c parameter. Using MD5 to compute responses. Enter new secret pass phrase: Again new secret pass phrase: ID unfurl OTP key is 499 to4268 MOS MALL GOAT ARM AVID COED
Die Option -c
startet den Konsolen-Modus,
der davon ausgeht, dass der Befehl von einem sicherem Ort
ausgeführt wird. Dies kann beispielsweise der eigene Rechner
sein, oder über eine mit SSH gesicherte
Verbindung zum eigenen Rechner.
Geben Sie das geheime Passwort ein, wenn Sie danach gefragt werden. Damit werden die Einmalpasswörter generiert. Dieses Passwort sollte schwer zu erraten sein und sich ebenfalls vom Passwort des Bentuzerkontos unterscheiden. Es muss zwischen 10 und 127 Zeichen lang sein. Prägen Sie sich dieses Passwort gut ein!
Die Zeile, die mit „ID“ beginnt, enthält den
Login-Namen (unfrul
), den voreingestellten
Iterationszähler (499
) und den Initialwert
(to4268
). Das System erinnert sich an
diese Parameter und wird sie bei einem Anmeldeversuch
anzeigen. Sie brauchen sich diese Dinge also nicht merken.
Die letzte Zeile enthält das generierte Einmalpasswort, das
aus den Parametern und dem geheimen Passwort ermittelt wurde.
Bei der nächsten Anmeldung muss dann diese Einmalpasswort
benutzt werden.
Um Einmalpasswörter über eine nicht gesicherte Verbindung
zu initialisieren, oder das geheime Passwort zu ändern, müssen
Sie über eine gesicherte Verbindung zu einer Stelle verfügen,
an der Sie opiekey
ausführen können. Dies
kann etwa die Eingabeaufforderung auf einer Maschine sein, der
Sie vertrauen. Zudem müssen Sie einen Iterationszähler
vorgeben (100 ist ein guter Wert) und einen Initialwert
wählen, wobei Sie auch einen zufällig generierten benutzen
können. Benutzen Sie opiepasswd(1) über die ungesicherte
Verbindung zu der Maschine, die Sie einrichten wollen:
%
opiepasswd
Updating unfurl: You need the response from an OTP generator. Old secret pass phrase: otp-md5 498 to4268 ext Response: GAME GAG WELT OUT DOWN CHAT New secret pass phrase: otp-md5 499 to4269 Response: LINE PAP MILK NELL BUOY TROY ID mark OTP key is 499 gr4269 LINE PAP MILK NELL BUOY TROY
Drücken Sie Return, um die Vorgabe
für den Initialwert zu akzeptieren. Bevor
Sie nun das Zugriffspasswort
(engl. access password)
eingeben, rufen Sie über die gesicherte Verbindung
opikey
mit denselben Parametern auf:
%
opiekey 498 to4268
Using the MD5 algorithm to compute response. Reminder: Don not use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
Gehen Sie zurück zu der nicht gesicherten Verbindung und geben dort das eben generierte Einmalpasswort ein.
Nachdem Sie OPIE eingerichtet haben, werden Sie beim nächsten Anmelden wie folgt begrüßt:
%
telnet example.com
Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login:<username>
otp-md5 498 gr4269 ext Password:
OPIE besitzt eine nützliche Eigenschaft. Wenn Sie an der Eingabeaufforderung Return drücken, wird die echo-Funktion eingeschaltet, das heißt Sie sehen, was Sie tippen. Dies ist besonders nützlich, wenn Sie ein generiertes Passwort von einem Ausdruck abtippen müssen.
Jetzt müssen Sie das Einmalpasswort generieren, um der Anmeldeaufforderung nachzukommen. Dies muss auf einem gesicherten System geschehen, auf dem Sie opiekey(1) ausführen können. Dieses Programm gibt es auch für Windows®, Mac OS® und FreeBSD. Es benötigt den Iterationszähler sowie den Initialwert als Parameter, die Sie mittels „cut-and-paste“ direkt von der Login-Aufforderung nehmen können.
Auf dem sicheren System:
%
opiekey 498 to4268
Using the MD5 algorithm to compute response. Reminder: Do not use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
Sobald das Einmalpasswort generiert wurde, können Sie die Anmeldeprozedur fortsetzen.
Manchmal haben Sie keinen Zugriff auf eine sichere Maschine oder eine sichere Verbindung. In diesem Fall können Sie vorher mit opiekey(1) einige Einmalpasswörter generieren. Zum Beispiel:
%
opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response. Reminder: Do not use opiekey from telnet or dial-in sessions. Enter secret pass phrase:<secret password>
26: JOAN BORE FOSS DES NAY QUIT 27: LATE BIAS SLAY FOLK MUCH TRIG 28: SALT TIN ANTI LOON NEAL USE 29: RIO ODIN GO BYE FURY TIC 30: GREW JIVE SAN GIRD BOIL PHI
Mit -n 5
fordern Sie fünf
Passwörter der Reihe nach an. Der letzte
Iterationszähler wird durch 30
gegeben.
Beachten Sie bitte, dass die Passwörter in der
umgekehrten Reihenfolge, in der sie
zu benutzen sind, ausgeben werden. Wirklich paranoide
Benutzer können sich jetzt die Passwörter aufschreiben oder
ausdrucken. Sie sollten die Passwörter nach Gebrauch
durchstreichen.
OPIE kann die Verwendung von
UNIX®-Passwörtern abhängig von der
IP-Adresse einschränken. Die dazu nötigen
Einstellungen werden in /etc/opieaccess
vorgenommen, die bei der Installation des Systems automatisch
erzeugt wird. Weitere Informationen über diese Datei und
Sicherheitshinweise zu ihrer Verwendung finden Sie in
opieaccess(5).
opieaccess
könnte
beispielsweise die folgende Zeile enthalten:
permit 192.168.0.0 255.255.0.0
Diese Zeile erlaubt es Benutzern, die sich von einer der angegebenen IP-Adressen anmelden, ihr UNIX®-Passwort zu verwenden. Beachten Sie bitte, dass eine IP-Adresse leicht gefälscht werden kann.
Findet sich in opieaccess
kein
passender Eintrag, muss die Anmeldung mit
OPIE erfolgen.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.