Linux: Passwortstärke überprüfen mit cracklib

25. Dezember 2012 um 03:53

cracklib

Wiedermal ein kleiner Tipp von einen kleinen und nützlichen Tool von Linux. Mit „cracklib-check“ ist es möglich, Passwörter zu prüfen, ob diese schwer knackbar sind oder nicht. Dabei wird in kleinen Wörterbüchern gesucht, ob ein Wort im Passwort vorkommt. Zusätzlich wird das Programm auch noch diverse andere Algorithmen haben, welche die Stärke ermitteln kann.

Die Beispiele kann man auch im Screenshot des Artikels lesen.

Installation

apt-get install libcrack2

Verwendungsbeispiele

# echo "test" | cracklib-check
test: it is too short

# echo "test123" | cracklib-check
test123: it is based on a dictionary word

# echo "H8dsl§3G3d$" | cracklib-check
H8dsl§3G3d$: OK

Verwendungsbeispiel in der Praxis

#!/bin/bash
# A sample shell script to add user to the system
# Check password for strength 
# Written by Vivek Gite under GPL v2.x+
# ----------------------------------------------
read -p "Enter username : " user
read -sp "Enter password : " password
echo
echo "Testing password strength..."
echo
result="$(cracklib-check <<<"$password")"
# okay awk is  bad choice but this is a demo 
okay="$(awk -F': ' '{ print $2}' <<<"$result")"
if [[ "$okay" == "OK" ]]
then
	echo "Adding a user account please wait..."
	/sbin/useradd -m -s /bin/bash $user
	echo "$user:$password" | /sbin/chpasswd
else
	echo "Your password was rejected - $result"
        echo "Try again."
fi

Quelle: http://www.cyberciti.biz/security/linux-password-strength-checker/

MySQL & PHP: Vergleichen eines eingegebenen Passwortes mit ENCRYPT von MySQL

27. November 2012 um 01:06

Ich stand gerade vor dem Problem, ein eingegebenes Passwort von einem HTML-Formular mit einer MySQL Datenbank zu vergleichen. Der Haken war jedoch, dass die Passwörter mit der ENCRYPT()-Funktion von MySQL verschlüsselt wurden.

Lässt man also ein Passwort in die MySQL Datenbank mit ENCRYPT(„passwort“) speichern, wird das Passwort zufällig verschlüsselt und wird bei so einen Beispiel-Vergleich mit PHP nie richtig sein:

mysql_query("SELECT password FROM users WHERE password=ENCRYPT('eingegebenes_passwort')")

Verzweifelt habe ich dennoch versucht, die Passwörter zu vergleichen.
Die Lösung war eigentlich einfach – wenn man es weiß…:

mysql_query("SELECT password FROM users WHERE password=ENCRYPT('eingegebenes_passwort', password)")

Das heißt, MySQL vergleicht – irgendwie – das eingebene mit dem vorhandenen Passwort und gibt danach das Passwort zurück, wenn das eingegebene Passwort richtig gewesen ist.

Ich hoffe es sparrt Euch viel Ärger und Nerven 🙂

Top