Um meinen Betatest-V-Server besser abzusichern habe ich mir gedacht wenn man mal von unsicheren Rechnern (z.B. Keylogger, virenverseucht, Internetcafe) hat, könnte man ja mal Einmalpasswörter nutzen. Das kann man im übrigen ohne Probleme parallel nutzen. Alternativ könnte man SSH-Keys einsetzen, aber manchmal vor allem bei webbasierten SSH-Clients wie Ajaxterm geht das nicht. Ich habe im Prinzip alles einmal durchlaufen und mir für den Notfall 20 Einmalpasswörter ausgedruckt. Vielleicht brauche ich sie ja nie.
Achtung:Bei der Installation immer sicherheitshalber in einem anderen Fenster angemeldet bleiben. Fehler bei der SSH-Konfiguration können zu einem nicht mehr erreichbaren System führen. Backup sollte man immer vorrätig haben.
Gelesen habe ich zur Einstimmung:
http://www.heise.de/security/artikel/Einmalpasswoerter-fuer-den-Heimgebrauch-270884.htmlUnter Debian installiert man:
apt-get install opie-client
apt-get install opie-server
In der SSH-Server-Konfiguration (/etc/ssh/sshd_config) ändert man:
ChallengeResponseAuthentication yes
In /etc/pam.d/sshd ändert man die Zugriffe in der Form, dass nach dem normalen UNIX-Passwort (falsch bzw. leer) das Einmalpasswort abgefragt wird:
#@include common-auth (dieser Eintragwird auskommentiert)
auth sufficient pam_unix.so
auth sufficient pam_opie.so
auth required pam_deny.so
Nun staret man den SSH-Server neu und erst mal ist nicht viel anders:
/etc/init.d/ssh reload
Achtung: Hier mal testen ob SSH per Passwort/Key noch läuft, wenn nicht Aktionen rückgängig machen bzw. kontrollieren.
Nun braucht man noch ein paar Einmalpasswörter, die man wie folgt am besten als normaler Benutzer erzeugt. In dem Zusammenhang sollte man von diesem Benutzer auch "sudo" ohne root-Passwort erlauben bzw. es auch auf Einmalpasswörter umstellen.
Erzeugung Einmalpasswörter für den aktuellen Benutzer:
opiepasswd -c
opiepasswd -c -f (wenn das System meckert, da man Remote die Keys erzeugt)
Die zu vergebene Passphrase ist wichtig um wieder an die generierten Keys zu kommen. Wird bei der SSH-Anmeldung jedoch nicht gebraucht.
Wichtig ist die laufende Nummer (abwärts von 499 bis 0) und der sogenannte "Seed". Das System nennt diesen bei der Erstellung, im Zweifel kann man ihn mit "opiepasswd" wieder rausfinden. Er ist hier im Beispiel "kb7051" (geändert). Auch wird er bei jeder SSH-Anmeldung per Einmalpasswort genannt.
opiepasswd
Updating uname:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 499 kb7051
Nun gibt man noch entsprechend z.B. 20 Werte aus (für unterwegs):
opiekey -n 20 499 kb7051 (Seed entsprechend anpassen, System fragt nach Passphrase von oben)
Die Ausgabe sieht so aus:
480: ....
...
498: MILT DUE FIT ELK GREY SLOW
499: EDDY DOLL FLAW BALL BUSS OBOE
Wenn man sich nun per SSH anmeldet und bei der Anmeldung "Enter" bzw. ein falsches Passwort eingibt, so fragt das System nach dem höchsten noch nicht verbrauchten Einmalpasswort:
otp-md5 499 kb7052 ext, Response:
In diesem Fall würde man die Nummer "499" und somit "eddy doll flaw ball buss oboe" eingeben. Groß/Kleinschrift wird scheinbar nicht überprüft.