[[Vorlage(Archiviert, "Pakete sind seit [:Maverick:Ubuntu10.10] nicht mehr in den Quellen.")]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] Das Verwenden normaler Passwörter in einer unsicheren Umgebung (z.B Internetcafes, Schulcomputer, Universitätsrechner) ist nicht ohne Risiko, da ein eventuell installierter Keylogger die Login-Informationen stehlen könnte. Abhilfe schaffen hier sogenannte [http://de.wikipedia.org/wiki/Einmalpasswort Einmalpasswörter] {de} , die nach dem jeweils ersten Gebrauch ungültig werden. Ein potenzieller Angreifer könnte so nichts mehr mit den gestohlenen Login-Informationen anfangen. Bei der hier vorgestellten Implementierung namens OPIE (''One Time Passwords In Everything'') erzeugt ein auf dem Server installierter Generator eine Sequenznummer und einen Seed, mit deren Hilfe ein Passwortgenerator nach Eingabe einer geheimen Passphrase den Schlüssel erzeugt, der für den Loginvorgang am Server benötigt wird. Der Server kann hierbei auch der lokale Rechner sein, auf dem die OTPs (''One Time Passwords'') benutzt werden sollen. Genutzt werden können Einmalpasswörter zum Beispiel für [:SSH:], [:GDM:], [:sudo:] und viele weitere Dienste, die eine Passwortauthentifizierenung benötigen. = Installation und Konfiguration = == Pakete installieren == Auf dem Rechner, auf dem man sich mit OPIE einloggen will, müssen folgende Pakete installiert [1] werden: {{{#!vorlage Paketinstallation opie-server opie-client }}} Und auf dem Computern, auf denen die Einmalpasswörter generiert werden sollen, muss das Paket {{{#!vorlage Paketinstallation opie-client }}} installiert [1] sein. {{{#!vorlage Hinweis Das Programm existiert (bislang) weder für [:Oneiric:] noch für [:Precise:] in den Paketquellen. Siehe [http://scrapcoder.github.com/2012/02/04/using-one-time-passwords-with-ssh-on-ubuntu.html diese Seite] {en} für eine alternative Methode mit dem Programm otpw. }}} == OPIE-Schlüssel erzeugen == Damit der Client ein gültiges Einmalpasswort erzeugen kann, muss die Verwendung von OPIE auf dem entsprechenden Rechner initialisiert werden. Dazu loggt man sich auf dem Server als der Benutzer ein, mit dem man sich später mittels Einmalpasswörtern authentifizieren möchte und führt folgenden Befehl aus: {{{#!vorlage Befehl opiepasswd -c }}} {{{#!vorlage Hinweis Ruft man opiepasswd über eine SSH-Verbindung zu einem Server auf, bricht das Programm mit dem Hinweis ab, dass es unsicher sei, diesen Vorgang per Remote auszuführen. Da SSH aber im Gegensatz zu z.B. [http://de.wikipedia.org/wiki/Telnet Telnet] {de} ein verschlüsseltes Protokoll ist, stellt dies kein Problem dar. Sofern man an einem vertrauenswürdigen Rechner arbeitet kann man opiepasswd also guten Gewissens via SSH aufrufen. Dazu startet man es mit dem Argument ``-f``. }}} Die Ausgabe dieses Befehls könnte so aussehen: {{{Adding fop: 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 fop OTP key is 499 mu1376 MANA NEST JOY A ROLL AUNT }}} Dabei muss ein [:Sicherheits_1x1#Passwoerter:sicheres], mindestens zehn Stellen langes Passwort eingegeben werden. Als Ausgabe erzeugt das Programm das erste Einmalpasswort. Da dieses aber schon von opiepasswd verwendet wurde, ist es bereits ungültig. Wie gültige Einmalpasswörter für den Computer erzeugt werden, wird weiter unten beschrieben. == PAM-Dateien anpassen == Auf dem Rechner wird nun der Login mit Einmalpasswörtern vorbereitet. Da OPIE [http://de.wikipedia.org/wiki/Pluggable_Authentication_Modules PAM] {de} unterstützt, können mit OPIE viele verschiedene Dienste verwendet werden. Dabei muss zuerst eine Datei '''/etc/pam.d/opie''' mit folgendem Inhalt angelegt werden: {{{auth sufficient pam_unix.so auth sufficient pam_opie.so auth required pam_deny.so }}} Die erste Zeile wird dabei nur benötigt, falls man neben der Authentifizierung mit Einmalpasswörten weiterhin den Login mit normalen Passwörtern zulassen möchte. Um OPIE nun mit den verschiedenen Authentisierungsdiensten verwenden zu können, muss die eben angelegte Datei '''/etc/pam.d/opie''' in die PAM-Konfigurationen der jeweiligen Dienste eingebunden werden. Dazu wird in der Datei '''/etc/pam.d/''' der Eintrag {{{@include common-auth }}} durch {{{@include opie }}} ersetzt. === OPIE mit SSH === Aus den weiter oben genannten Gründen ist es besonders Sinnvoll, den SSH-Login auf einem Server mithilfe von Einmalpasswörtern abzusichern. Dabei muss aber zusätzlich zu den genannten Änderungen im Verzeichnis '''/etc/pam.d''' auch die Datei '''/etc/ssh/sshd_config''' angepasst werden. Der Eintrag {{{ChallengeResponseAuthentication no }}} wird durch {{{ChallengeResponseAuthentication yes }}} ersetzt. == Dienste neustarten == Zum Schluss muss noch der Dienst, mit dem OTPs verwendet werden sollen neugestartet werden. Das könnte beispielsweise so aussehen: {{{#!vorlage Befehl sudo /etc/init.d/ssh restart }}} = Login mit Einmalpasswörtern = == Einfacher Login == Möchte man sich von einem Client auf dem Server einloggen, wird der Seed und die Sequenznummer benötigt: {{{#!vorlage Befehl ssh 192.168.2.142 }}} Ausgabe (Beispiel): {{{Password: otp-md5 498 mu1376 ext, Response: }}} Im Beispiel ist die Sequenznummer 496 und der Seed mu6125. Hiermit muss nun ein OTP-Generator (One-Time-Password-Generator) gefüttert werden. Auf dem Client erledigt das opiekey: {{{#!vorlage Befehl opiekey 496 mu6125 }}} Nach Eingabe des Passworts generiert das Programm einen Einmalschlüssel für den Server: {{{Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: COAT MITE ARID SAD HELD BUD }}} Im Beispiel ist der Schlüssel also ''COAT MITE ARID SAD HELD BUT''. Hiermit kann man sich, vorrausgesetzt man hat den Opie-Key mit dem richtigen Passwort generiert, nun am Server einloggen. == Passwörter im Voraus generieren == Die oben beschriebene Methode um Einmalpasswörter zu generieren bringt den entscheidenden Nachteil, dass hier eine Installation von opiekey auf dem Client-System vorausgesetzt wird. Einerseits ist es nicht immer möglich, einen OTP-Generator zu installieren (z.B in Internetcafes), zum Anderen hat man so genau das gleiche Problem, wie vorher: Wird auf einem kompromitierten Rechner die OPIE-Passphrase ausgespäht, so ist es für den Angreifer ohne weiteres möglich, eigene Einmalpasswörter für den Server zu generieren. Zum Glück lassen sich mithilfe von opiekey auch mehrere Einmalpasswörter in einem Rutsch erzeugen: {{{#!vorlage Befehl opiekey -n 20 496 mu6125 }}} Nach Eingabe der korrekten Passphrase erzeugt das Programm nun nicht nur ein einziges Einmalpasswortfür die Sequenznummer 496, sondern 19 weitere für die folgenden Sequenzen 495 bis 477: {{{Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: 477: HIND WELD HID CRY EVER RAW 478: SHOT LACY FILL WON TURF GOWN 479: DASH BEEN COAL DANE TAG MANA 480: SAGE FELT KITE FIN LOG TRIM 481: CAW NECK AVID KNOT RUSK BALD 482: MOAN LYLE BERG LOSE HOLD DIAL 483: ROW HOOF OAT BIND AIDE ACTA 484: WEST USER CEIL MAY CURT ICY 485: THEN ROOT BOON DUAL POE BONY 486: EWE BOOT TINA LASS ARAB JOLT 487: SWAB YAW RIB SEWN APS ASKS 488: FLAM GAIT GLOB DUCK MYTH CADY 489: BUS LEAF HAAS SLED TRIG WALL 490: LOAM MONK DEAF BITE MASS SEN 491: APS GETS SELF ALIA LO WIN 492: HEN CALL NAB HEED PUG MARE 493: ELM SOLD FOR RATE HOYT SLAM 494: OVEN AHEM FRED COD REED NOD 495: ARAB DIVE BONG FLAK OAK PUT 496: COAT MITE ARID SAD HELD BUD }}} Die einzelnen OTPs kann man sich nun notieren und beispielsweise in der Brieftasche mit sich herumtragen. Sollte man sich nun an einem nicht vertrauenswürdigen Rechner mit Hilfe von Einmalpasswörtern authentifizieren wollen, benötigt man nur die im Voraus berechneten Kennungen. = OPIE deinstallieren = Um OPIE wieder zu entfernen, müssen zuerst die Änderungen an den PAM-Dateien in '''/etc/pam.d/''' wieder rückgängig gemacht werden. Dazu wird dort die Zeile {{{@include opie }}} durch {{{@include common-auth }}} ersetzt. Als nächstes sollten die Pakete * '''opie-server''' * '''opie-client''' gemäß mit der Paketverwaltung deinstalliert werden. Der Login auf dem System mittels Einmalpasswörtern sollte nun nicht mehr möglich sein. = Links = * [http://www.heise.de/security/artikel/87555 Artikel auf Heise-Security über OPIE] {de} ## * [http://www.inner.net/opie Homepage des OPIE-Projekts] {en} * [http://tanso.net/j2me-otp/ Ein OTP-Generator für Java fähige Handys] {en} * [http://www.androidzoom.com/android_applications/tools/opiekey_cnzw.html Ein OTP-Generator für Android-Smartphones] {en} # tag: Server, Sicherheit