Erzeugung von Dice-Passwörtern

Hallo zusammen,

da manche Schüler Probleme beim Eintippen der initialen Zufallspasswörtern haben (manche Schüler sitzen das erste Mal im Leben vor einer echten Tastatur und wissen nicht, wie man Sonderzeichen und Großbuchstaben eintippt - und jetzt gleich in einem Passwortdialog, bei dem man gar nicht sieht, was man tippt) würde ich gerne Diceware Passwörter verwenden. Bei Diceware werden Wörterbucheinträge aneinander gehängt (siehe: https://diceware.dmuth.org/). Da kommen dann zusammengesetzte Passwörter wie werbegag.vier.stunde oder raupe.grau.kadenz heraus.

Ich habe mal sophomorix dahingehend erweitert und einen Pull-Request erstellt: Ability to generate passwords using diceware by raphael247 · Pull Request #176 · linuxmuster/sophomorix4 · GitHub

Kurz zusammengefasst:

  • In der school.conf die Variable RANDOM_PWD = dice setzen. Das geht in den Abschnitten [userfile.students.csv], [userfile.teachers.csv] sowie [userfile.extrastudents.csv].
  • Die Anzahl der verwendeten Wörter kann dabei mittels der Variable PWD_LENGTH eingestellt werden.
  • Intern wird das Programm diceware verwendet, welches mittels
    pip3 install diceware
    installiert werden muss.
  • Da die Passwörter nicht mehr komplex sind, muss man in Samba die Passwort-Komplexität heruntersetzen. Dies geht auf der Kommandozeile mittels:
    samba-tool domain passwordsettings set --complexity=off

Ich fände es wäre schön, wenn wir das Feature offiziell in Sophomorix einbauen könnten.
Für Kritik und Verbesserungsvorschläge bin ich auch immer offen.

Viele Grüße

Raphael

Hallo zusammen,

Raphaels Vorschlag finde ich super!!! Das will ich haben. Direkt mit PR im Git-Repo so dass eigentlich keine Arbeit entsteht. Wie sorgen wir dafür dass das der Pull request vom Maintainer akzeptiert wird (Freundlicher Stuppser in Richtung @jeffbeck ) :innocent:

Hallo zusammen,

wir haben bei uns ein Python-Skript, das „einfache“ Passwörter aus Anfangsbuchstaben eines Satzes erstellt.

Bisher haben wir uns mit folgendem Konstrukt geholfen:

  • erstellen eines Python-Skripts /usr/local/bin/passwd.py, dass ein Passwort, das aus Anfangsbuchsten eines Satzes sowie diesen Merksatz durch ein Semikolon getrennt ausgibt.
  • erstellen des sophomorix-add-Hook-Verzeichnisses - das scheint nicht automatisch angelegt zu werden (mkdir -p /etc/linuxmuster/sophomorix/default-school/hooks/sophomorix-add.d)
  • erstellen eines Skripts, dass für neue Nutzer (aus dem letzten Sophomorix-Durchlauf) Passwörter erstellt sowie Passwort und Merksatz mit Sophomorix-Befehlen speichert:
#make passwords great again

# read freshly added users by selecting all users with same second column from added user log
users=($(grep $(tail -n1 /var/log/sophomorix/userlog/user-add.log | awk -F '::' '{print $2}') /var/log/sophomorix/userlog/user-add.log | awk -F '::' '{print $5}'))

for user in "${users[@]}"; do
  echo "* create a really, really phantastic password for $user"
  pwdstring=$(/usr/local/bin/passwd.py)
  pwd=$(echo $pwdstring | cut -d ";" -f1)
  hnt=$(echo $pwdstring | cut -d ";" -f2)

  echo "  - set the great password using sophomorix-password"
  sophomorix-passwd --user $user --pass "$pwd" --hide

  echo "  - set the really great password hint to custom2"
  sophomorix-user --user $user --custom2 "$hnt"

Die Benutzer bekommen dadurch hinreichend komplizierte aber gut merkbare Passwörter der Form:
Hh55PidB! („Horst hütet 55 Pferde in der Badewanne!“). Zudem akzeptiert plesk diese Passwörter für unseren E-Mail-Server (da gab es einige Probleme mit Sonderzeichen).

Todsicher ist das allerdings nicht, da die Anzahl der Kombinationen mit ca. 150 Millionen deutlich geringer ist als völlig zufällig gewählte Passwörter. Wir haben aber entschieden, dass das für Erstpasswörter ausreicht. Zudem sind gut zu merkende Passwörter eben auch Passwörter, deren Karten man seltener unter Tastaturen findet :slight_smile:

Das Ganze direkt in sophomorix einzubauen ist natürlich wesentlich netter…

Viele Grüße
Thomas

Hallo @Raphael ,

ich habe das diceware Verfahren testen wollen.
Geht auch nach folgendem Eingriff, jetzt wo ich die 7.4 habe:

Habe noch den Vorschlag, ein diceware „nice“ von hier herunterzuladen und zu konfigurieren, damit man keine blöden Wörter bekommt: GitHub - bjoernalbers/diceware-wordlist-german: German Diceware Wordlist for Random Passphrases · GitHub

cd /usr/local/lib/python3.14/dist-packages/diceware/wordlists
wget https://github.com/bjoernalbers/diceware-wordlist-german/releases/download/v1.0.0/wordlist-german-diceware.txt -O wordlist_de_nice.txt

Zudem ist der Patch echt haarig zu verstehen. Habe den sophomorix-code durchkämmen müssen um zu verstehen, dass nur bei "--class X --configfile" das diceware Verfahren verwendet wird. Ansonsten bleibt sophomorix gerne einfach stehen, weil „create_plain_password()“ keinen Switch für „diceware“ kennt und dann gibt es (denke ich) endlos-Schleifen.

Vg, Tobias

Hallo Tobias,

Das war schon lang auf meine Liste, ich habe es jetzt umgestellt auf Debian Packages, da auch dort die Wörterlisten (DE, FR) drin sind.

Gruß

Arnaud

Super, danke. :heart:

EDIT:

Der manuelle Aufruf von „sophomorix-passwd“ geht in den meisten von mir genutzten Fällen schief.

sophomorix-passwd --nofirstpassupdate --random 2 --user fobi

hängt bei mir unendlich, wenn man dice verwendet im Gegensatz zu yes für die Variable RANDOM_PWD.
Mein debugging lief auf die Funktion create_plain_password hinaus. Wenn die mit dice getriggert wird, dann hängt die sich auf, weil dort einfach keine Verzweigung für den dice - Fall existiert. Im Gegensatz zu get_plain_password().

Das bedeutet, dass ich tatsächlich

sophomorix-passwd --nofirstpassupdate --user fobi --configfile

nutzen kann, weil es die create..()-Funktion nicht triggert.

Ich habe prinzipiell kein Problem damit, weil ich das nur für die Erstpasswörter der jungen SuS brauche und dafür auf „dice“ umstelle. Im Normalbetrieb stelle ich auf „yes“ zurück.

anderes Problem: webUI-PW-Erstellung

Ich stelle fest, dass die WebUI zumindest bei der Funktion „erstelle ein zufälliges Passwort“ für einen Benutzer sich vorrangig an den samba-Einstellungen min-pwd-length orientiert und nicht an PWD_LENGTH… das ist nicht weiter schlimm. Aber dadurch habe ich jetzt kapiert, warum meine extrem offenen Einstellungen (samba-complexity=off, min-pwd-length=2, random_PWD = dice und DICE_WORDS=3 und PWD_LENGTH=5) zu keinen sinnvollen Ergebnissen in der WebUI führen.

VG, Tobias

Hallo Tobias,

danke fürs Debugging, beide Punkte stimmen, es sind aber zwei getrennte Fehler:

  1. sophomorix-passwd --random N liest RANDOM_PWD gar nicht aus: dieser Weg erzeugt immer ein Zeichen-Passwort, dice wird nur über --configfile (get_plain_password()) berücksichtigt. Das Hängen kommt daher, dass dieses Zeichen-Passwort Sonderzeichen, Klein-, Großbuchstaben und eine Ziffer enthalten muss. Mit weniger als 4 Zeichen ist das unmöglich, die Schleife endet nie. Das passiert auch mit RANDOM_PWD=yes, sobald --random kleiner als 4 ist. Dein Weg mit --configfile ist also der richtige. Die Endlosschleife wird durch eine klare Fehlermeldung ersetzt.

  2. Richtig: die WebUI hat einen eigenen Generator und richtet sich nach der Passwort-Richtlinie (Samba min-pwd-length bzw. password_constraints.yml), nicht nach school.conf. Dice ist dort momentan nicht vorgesehen.

Gruß

Arnaud

Hallo Tobias,

Der erste Punkt sollte jetzt gelöst sein:

Gruß

Arnaud