Einmalpasswörter für den Heimgebrauch

Seite 3: Zurück nach Vorne

Inhaltsverzeichnis

Ajaxterm horcht standardmäßig auf Port 8022 auf eingehende Verbindungen -- allerdings nur auf localhost. Um Zugriff von außen zu erhalten, muss man einen lokalen Web(-Proxy) einsetzen, der die Zugriffe auf den lokalen Port von Ajaxterm umleitet. Zudem empfiehlt es sich, die Kommunikation zwischen dem Webbrowser im Internet-Cafe und dem Server mit SSL zu verschlüsseln, um die über das Netz übertragenen Daten zu schützen. Der Apache-Webserver bietet praktischerweise sowohl SSL- als auch Proxy-Funktionen.

Ist Apache2 noch nicht installiert, so erledigt dies der Befehl

apt-get install apache2-commom apache2

Für den Betrieb als SSL-Server setzt Apache ein Zertifikat voraus, das sich für erste Versuche mit dem Befehl apache2-ssl-certificate sehr einfach generieren lässt -- allerdings hat es nur eine kurze Laufzeit, sodass man sich später eines mit einem späteren Ablaufdatum erzeugen sollte. Anschließend aktiviert man für eine Neuinstallation noch das SSL- und das Proxy-Modul im Apache:

a2enmod ssl
a2enmod proxy

In der Datei ports.conf definiert die zusätzliche Zeile listen 443 den HTTPS-Port. Zuletzt benötigt der Apache noch eine Konfigurationsdatei für den auf Port 443 horchenden virtuellen Server. Am einfachsten kopiert man dazu die Datei für den am Port 80 lauschenden Server und modifiziert diese:

cd /etc/apache2/site-available/
cp default ssl

In der Datei ssl fügt man dann die Portnummern 443 zur Konfiguration des neuen virtuellen Servers hinzu:

NameVirtualHost *:443
<VirtualHost *:443>

Der HTTPS-Port lässt sich prinzipiell auf jeden anderen Port legen, die Wahl muss nur mit der in ports.conf übereinstimmen.

Zusätzlich fügt man in ssl noch folgende Zeilen hinzu:

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
ProxyRequests Off
<Proxy *>
Order Deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8022/
ProxyPassReverse / http://localhost:8022/

Der Befehl a2ensite ssl aktiviert nun die Konfiguration für den SSL-Betrieb. Praktische Hinweise zur Konfiguration liefert auch die Homepage von Ajaxterm. Sofern man bereits einen SSL-Server betreibt, der vorhandene Seiten ausliefert, sollte für die Proxy-Umleitung der Pfad /ajaxterm/ statt des Webserver-Wurzelverzeichnisses verwendet werden:

ProxyPass /ajaxterm/ http://localhost:8022/
ProxyPassReverse /ajaxterm/ http://localhost:8022/

Damit können dann weiterhin die bisherigen Seiten über SSL aufgerufen werden, für den Zugriff auf das SSH-Terminal muss man dann der URL ebenfalls ajaxterm/ hinzufügen: https://www.example.com/ajaxterm/ – nicht vergessen darf man den abschließenden Slash.

Um die neue Konfiguration zu übernehmen, ist ein Neustart des Servers notwendig:/etc/init.d/apache2 restart. Der Aufruf des Server im Browser per HTTPS zaubert dann Ajaxterm auf den Schirm, in dem man nun seinen Usernamen und sein statisches Passwort oder das Einmalpasswort eingeben kann. Aus praktischen Gründen kann es sinnvoll sein, die Eingabe eines statischen Passworts von sicheren Rechnern zu erlauben. Dann sollte das Passwort aber sehr schwer zu erraten und auch hinreichend lang sein, um mögliche Brute-Force-Angriffe zu erschweren. Insbesondere wenn noch andere Nutzerkonten auf dem Systen angelegt sind, sollte man auf die Passwortsicherheit achten. Wer doch lieber das OTP eingeben will, drückt bei der Passwortabfrage einfach Enter

Eine SSH-Shell im Browser ermöglicht den Zugang zum heimischen Server ohne SSH-Client.

Bei der Verbindung mit dem heimischen Server ist darauf zu achten, dass man während die Arbeit in der Shell keine Befehle ausführt, die Root-Rechte erfordern. In unserer Konfiguration müsste man dazu das Passwort eingeben, das etwa bei Ubuntu identisch mit dem ersten angelegten Nutzer ist. Ein Keylogger würde dieses Passwort mitlesen, sodass trotz Einmalpasswort ein Login möglich wäre, sofern man neben dem OTP-Login auch noch das statische Passwort zulässt. Eine Lösung wäre, normale Logins nur lokal zuzulassen, sodass das Login-Passwort bei der Anmeldung über ein Netzwerk nicht funktioniert.

Einfacher ist, in /etc/pam.d/ssh die Zeile auth sufficient pam_unix.so auszukommentieren, so dass ein Login grundsätzich nur noch mit Einmalpasswörtern erlaubt ist. Alternativ ließe sich auch der Befehl sudo auf die Authentifizierung per Einmalpasswort umstellen.

Bei der Verbindung mit dem Server sollte man die Warnung zum selbstsignierten SSL-Zertifikat nicht achtlos wegklicken. Zumindestens eine Prüfung der Checksumme des Zertifikats kann Aufschlüsse darüber liefern, ob man nicht doch gerade per Man-in-the-Middle-Attacke angegriffen wird. Leider gib es aber schon Trojaner, die auch Datenverkehr mitlesen können, bevor er vom Netzwerkstack verschlüsselt beziehungsweise nachdem er entschlüsselt wurde. Eine Risikoabschätzung muss hier jeder Anwender selber treffen.

Eine unschöne Angewohnheit von Ajaxterm soll an dieser Stelle nicht verschwiegen werden. Sobald es im Browser geöffnet ist, müllt es die access.log-Datei des Apache zu und füllt so die Festplatte. Abhilfe schafft es, das Logging abzustellen, allerdings verpasst man dann unter Umständen Angriffsaktivitäten auf den Server.

[1] Wikipedia:One-time password

[2] One Time Passwords in Everything (OPIE)

[3] S/Key

[4] Linux-PAM

[5] Portierung von JOTP für J2ME

[6] Ajaxterm: Dokumentation und Download (dab)