Zugabe eines Salzes .htpasswd?
-
09-10-2019 - |
Frage
Ist es möglich, ein Salz Passwörter in .hpasswd Dateien hinzufügen? Ich gehe davon aus nicht, da der Server das Salz für jeden Benutzer benötigen, um würde das Passwort zu bestätigen, und ich kann nicht glauben, wie sie sie bekommen würden, aber ansonsten, wenn die Liste erhalten war zu, es wäre ziemlich anfällig. Gibt es eine Lösung?
Vielen Dank für Ihre Hilfe, Ben
Lösung
Standardmäßig htpasswd nutzt die Standard- Krypta Funktion und somit Passwörter bereits gesalzen - in diesem Beispiel fest, dass beide Benutzer das gleiche Passwort haben noch die Hashes sind unterschiedlich:
simon@diablo:~$ htpasswd -b -c htpasswd simon abcd Adding password for user simon simon@diablo:~$ htpasswd -b htpasswd simon2 abcd Adding password for user simon2 simon@diablo:~$ cat htpasswd simon:NWvm/LCCxQ64E simon2:2I.LBzsRqULN6
(Anmerkung: die -b
Flagge wird in der Regel abgeraten, da andere Benutzer Ihre Befehlszeilenargumente sehen und damit das Passwort)
Die ersten beiden Zeichen des Hash sind das Salz; Passwörter werden durch den Aufruf crypt()
erneut verifiziert. Die Eingabe eines falschen Passworts erzeugt eine Zeichenfolge, die mit dem Hash-Passwort ungleich ist:
>>> from crypt import crypt
>>> crypt("wrongpass", "NWvm/LCCxQ64E")
'NWbxQgX1unvso'
, während das korrekte Passwort erzeugt die erwartete hash:
>>> crypt("abcd", "NWvm/LCCxQ64E")
'NWvm/LCCxQ64E'
htpasswd -m
verwendet einen anderen Algorithmus, der MD5-basiert und verwendet eine längere Salz:
simon@diablo:~$ htpasswd -m -b -c htpasswd simon abcd Adding password for user simon simon@diablo:~$ cat htpasswd simon:$apr1$mfvnBVmG$iIHIHOaH9vcImG5G.8eVa/
Hier ist das Salz die 8 Zeichen zwischen dem zweiten und dritten $
.
htpasswd -s
speichert einen SHA-1 ohne Salz verdauen;
simon@diablo:~$ htpasswd -s -b -c htpasswd simon abcd Adding password for user simon simon@diablo:~$ htpasswd -s -b htpasswd simon2 abcd Adding password for user simon2 simon@diablo:~$ cat htpasswd simon:{SHA}gf6L/odXbD7LIkJvjleEc4KRes8= simon2:{SHA}gf6L/odXbD7LIkJvjleEc4KRes8=
Diese können leicht rückgängig gemacht werden - convert in ein Sechseck verdauen:
>>> "".join("%02x" % ord(c)
... for c in "gf6L/odXbD7LIkJvjleEc4KRes8=".decode("base64"))
'81fe8bfe87576c3ecb22426f8e57847382917acf'
dann verwenden, um eine Online-Hash-Datenbank .
Andere Tipps
Das htpasswd
Dienstprogramm bereits Nutzt Salze in den meisten Fällen:
Die crypt () und MD5-Formate permutieren die Darstellung durch eine zufällige Salz Zeichenfolge vorangestellt wird, Wörterbuch-Attacken gegen die Passwörter schwieriger zu machen.
Und das ist (Art) den Zweck von Salzen in Passwort-Dateien. Während Salze in der Server-.htpasswd
Datei enthalten sein müssen für den Server, um Passwörter zu überprüfen, ist es die zahlreichen verschiedenen Möglichkeiten, was ein Salz wie rainbow Tables .
Allerdings, wenn Ihre Benutzer schwach oder gemeinsame Passwörter wählen, ist das Knacken von Passwörtern ein Problem sowieso, da der Angreifer (mutmaßlich Zugriff auf die Passwort-Datei haben) wird versuchen, diese erste, sehr schnell in der Tat (nicht durch die Geschwindigkeit begrenzt der Server und Internet-Verbindung), indem Sie in der normalen Art und Weise zu erraten. Der beste Rat, den ich geben kann, ist, dass die Benutzer immer starke Passwörter wählen sollen.