2FA zum Testen für bwHPC
Nutzer können sich einmalig auf dem QR-Generator-Knoten einen QR-Code erzeugen lassen, den sie mit einer geeigneten App abscannen. Diese erzeugt nun Einmalpasswörter, die als zweiter Faktor beim Login auf dem eigentlichen System abgefragt werden. Zukünftig könnte man auch Yubikeys etc. unterstützen, doch funktioniert derzeit lediglich die Yubikey-Mobil-App.
Eine erneute Erzeugung des QR-Codes ist nur möglich, wenn der Nutzer administrativ auf dem QR-Generator-Knoten wieder freigeschalten wurde.
Dies ist ein Fork der von nemo-cluster/2fa die wesentlichen Änderungen sind:
- Es wird sichere auf RSA basierende Verschlüsslung aus gpg statt des textbook RSA aus openssl verwendet.
- Es wird sichergestellt, dass die Einmalpasswörter wirklich nur einmalig verwendet werden können.
- Um vorher genanntes zu erreichen wurde der Updatemechanismus angepasst.
- Mehrere der Management-Knoten (HA-Setups) werden supportet.
Es gibt drei Knotentypen, wobei Management- und Loginknoten identisch sein können. Im einfachsten Fall nutzen alle drei Knotentypen die selbe Nutzerauthentifizierung (z.B. LDAP). Da auf dem Managementknoten Credentials erzeugt werden, die der QR-Generator-Knoten ebenfalls benötigt, sollte mit dessen Installation begonnen werden:
- QR-Generator-Knoten, dient ausschliesslich zum Erzeugen des zweiten Faktors, dem QR-Code.
- Managementknoten nehmen diesen QR-Code entgegen.
- Loginknoten, auf denen die Zwei-Faktor-Authentifizierung erfolgen soll.
- FreeOTP (PlayStore Webseite)
- Aegis Authenticator
- Google Authenticator
- Yubico Authenticator
- Microsoft Authentificator Webseite
- Soll ermöglicht werden, dass ein User sich neue Credentials erstellen kann, muss oathdel [USER] auf dem QR-Geneartor-Knoten aufgerufen werden. Diese überschreiben die alten sobald der User dies auch wirklich macht.
- Soll ein 2nd Faktor deaktiviert werden muss auf dem Management oathdeact [USER] aufgerufen werden. Diese funktionen sind also komplementär.
-
/etc/2fa/secret
: Hier liegt das shared secret, mit dem Management und QR-Generator-Knoten Credentials austauschen. Es muss entsprechend auf diesen Knotentypen identisch sein. -
/<Pfad>/2fa/users.oath /<Pfad>/2fa/users.lock
: Hier liegt die Liste der User und deren Seeds, welche zwischen QR-Generator- und Management-Knoten synchron sein muss. Es empfiehlt sich daher ein geshartes Dateisystem (NFS, Lustre, etc.), prinzipiell sind aber auch andere Synchronisierungsmechanismus möglich. -
/root/.gnupg/ /etc/public_key.gpg
: Der Key mit dem die Seeds verschlüsselt werden. Der öffentliche Schlüssel muss auf jedem QR-Generator-Knoten, der private Schlüssel auf jedem Management-Knoten importiert werden.