Homepage | Products | OX Knowledge Base | Support | Try Now | Contact | Company
OX Logo
Results 1 to 8 of 8
  1. #1
    Join Date
    Mar 2008
    Posts
    17

    Default Pam-mysql und OX: Password Hash Rätselraten

    Hallo Forum,
    ich versuche gerade OX mal wieder zu evaluieren. In der Vergangenheit hatte ich damit mässig Glück weil in vergangenen Zeiten das Calendaring oft Zeitzonenprobleme hatte mit ical Clients, etc. Jetzt könnte ja alles besser sein und versuch macht kluch

    Also ran ans Werk: Ubuntu 8.10 in eine virtuelle Box, die OX Pakete drauf, Datenbank eingerichtet und Probelogin mit einem angelegten User. Alles bestens.
    Die Authenfizierung via Sasl wollte aber überhaupt nicht. Anstatt den Passwort Mech auf Crypt herunterzusetzen hab ich pam-mysql neugebaut mit openssl-support und hab damit ein Paket mit SHA-1 Hash Unterstützung. Die fehlt, es gibt einen alten Debian Bugreport aber da passiert derzeit anscheinend sonst nicht viel.
    Also Pam-Mysql neu aber Sasl will aber immernoch nicht. Wenn ich in pam-mysql crypt=0 setze und das Passwort für den User im Klartext eintrage funktioniert eine Authentifizierung, getestet mit testsaslauthd. Generelle Config also heil.
    Wenn ich mir auf der Console oder per Webgenerator (z.B. http://www.ideaspace.net/misc/hash/ ) einen SHA-1 Hash über mein Passwort erzeuge und den in die OX Datenbank einsetze und pam-mysql auf SHA-1 umstelle (crypt=4) funktioniert der Login auch. Allerdings nicht mehr im Webinterface.
    Der Hash unterscheidet sich auch von dem den OX erzeugt hat. Setze ich den von OX erzeugten Hash wieder ein, versagt saslauthd wieder die Authentifizierung.
    Jetzt frage ich mich natürlich: Wo liegt der Unterschied ? Warum unterscheiden sich die Hashes ? Warum ist SHA-1 hier anscheinend nicht gleich SHA-1 ? Wie untersuche ich das mal näher ?

    Jemand eine Idee ? Bin für jeden Tipp dankbar.

    Grüz
    Hibbelharry

  2. #2
    Join Date
    Mar 2008
    Posts
    17

    Default

    Nur nochmal ums festzuhalten:

    Ich hab mir das ganze nocheinmal angesehen und bin inzwischen der festen Ansicht das OX hier noch einen Salt benutzt um das ganze besser Rainbowtable immun zu machen. Evidenz hab ich allerdings keine weil ich noch nix entsprechendes gefunden hab. Damit wäre dann aber eh pam-mysql hinfällig weil es dort anscheinend keine Möglichkeit gibt einen Salt hinzu zufügen. Also gebe ich erstmal murrend auf und nutze auch vorläufig Crypthashes bis mir was besseres einfällt

    Grüz
    Hibbelharry

  3. #3
    Join Date
    Oct 2009
    Posts
    9

    Default

    Hallo Hibbelharry,
    ich hänge mich hier mal ran, da ich vor dem gleichen Problem stehe. Es scheint kein normaler SHA Hash zu sein.

    Mein SHA1 Hash ist viel größer als der vom OX. Vieleicht hat ja einer eine Idee.

    MFG
    exchange

  4. #4
    gunnarstahl Guest

    Default Passwort-Laenge

    Kann es was damit zu tun haben, dass das Passwort bei crypt auf 8 Zeichen begrenzt wird (d.h. ein 10-Zeichen-passwort funktioniert auch, wenn man nur die ersten 8 Stellen eingibt).

    Probiert es mal mit kuerzeren Passwortern aus. Waere aber irgendwie schon schraeg...

  5. #5
    Join Date
    Feb 2007
    Location
    Germany
    Posts
    3,695

    Default

    Hi,

    korrekt - crypt() nutzt nur die ersten 8 Buchstaben des Passworts. Deshalb sollte man aus Sicherheitsgründen auch SHA bevorzugen. Soweit ich weiss speichert crypt auch nur die ersten 8 Buchstaben des Passworts im Hash.

    Gruß

  6. #6
    Join Date
    Jul 2009
    Posts
    20

    Default

    SHA ist schön und gut, jedoch gebe ich zu bedenken, das für SHA Support pam-mysql 0.7 erforderlich ist.
    Diese ist meines Wissens nach die erste Version die SHA unterstützt.
    Auf den meissten Systemen wird noch Version 0.62 verwendet, da es seit 2006 keinen Relase der 0.7er Version gibt.

    Somit ist für alle die Imap und SMTP Auth an Mysql anbinden wollen und sich nicht einen preRelease von pam-mysql selber compilieren wollen Crypt obligatorisch.

    Ich habe dieses Problem schon seit einiger Zeit, anscheinend wird wohl SHA nicht sehr dringend benötigt, sonst hätte sich bestimmt schonmal jmd erbarmt und die 07er Version fertig gemacht.

    Es ist mir auch schleierhaft, warum Crypt und SHA unterstützt werden, MD5 aber nicht.
    MD5 läuft zb. mit der 0.62er Version.

    Vielleicht gibt es auch Distributionen die schon die 0.7 als Paket einsetzen, zumindest Debian nicht.

    Hier mal die Optionen die unterstützt werden aus dem README:
    crypt (plain)

    The method to encrypt the user's password:

    0 (or "plain") = No encryption. Passwords stored in plaintext.
    HIGHLY DISCOURAGED.

    1 (or "Y") = Use crypt(3) function.

    2 (or "mysql") = Use MySQL PASSWORD() function. It is possible
    that the encryption function used by PAM-MySQL
    is different from that of the MySQL server, as
    PAM-MySQL uses the function defined in MySQL's
    C-client API instead of using PASSWORD() SQL function
    in the query.

    3 (or "md5") = Use plain hex MD5

    Zu der crypt funktion 8 Zeichen und salt. Wie ich gesehen habe werden die ersten beiden Stellen des gehashten Passwortes als Salt genommen. Ich musste extern an die Datenbank, hatte da ne Pinnwand programmiert und musste das Passwort überprüfen, was der User eingibt.

    Also das Plaintext Passwort ist zb. foobar gecryptet sieht es dann in der Datenbank so aus: rtD.ggz2
    wenn man nun von extern fragen will ob das Passwort korrekt ist muss man den salt "rt" verwenden, damit man auf das richtige Passwort beim crypten kommt.
    wo die ersten beiden Zeichen, also der Salt herkommen, entzieht sich meiner Kenntnis. Zumindest wird er nicht zufällig generiert, denn wenn man zb. im OX sein Passwort ändert und es auf den gleichen Wert setzt, kommt immer der gleiche Salt raus. Ursprünglich meine ich mich zu erinnern, das man beim salt im Zusammenhang mit crypt die ersten beiden Buchstaben des pliantext Passwortes verwendet, ob das Standard ist weiss ich nicht. Jedenfalls scheint es so bei OX nicht zu sein und ist wohl generell auch Geschmacksache.


    mein crypt call in php so aus:
    PHP Code:
    //$user_password=...mysql_fetch_row["userPassword"].....

        
    $salt=substr($user_password,0,2);
        
     if (
    $user_password_from_html_form==crypt($user_password,$salt)){
    //passwort stimmt
    }
    else{
    //passwort ist falsch!

    Last edited by evildead; 10-09-2009 at 07:25 PM.

  7. #7
    Join Date
    Oct 2007
    Location
    Germany, Essen
    Posts
    171

    Default

    Hi,

    hast du eine Lösung für dein Problem gefunden?

    Ich versuche ebenfalls den salt der durch OX verwendet wird zu finden.

    Ich benutze eine Shell Script um das Userpassword ändern zu lassen da ich das ganze dem user nicht so einfach machen will, soll heißen min. 8 Zeichen klein Buchstaben Groß Buchstaben und evtl. Sonderzeichen.

    Alles Funktioniert bis auf das Hashen des Passwortes da mir hier der salt fehlt.

    für eine Info diesbezüglich wäre ich dir dankbar

    MfG

    outlow

  8. #8
    Join Date
    Oct 2007
    Location
    Germany, Essen
    Posts
    171

    Default

    Habes es heraus gefunden. Wenn ich wem damit helfen kann bitte melden.

    MfG

    outlow

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •