Benutzerverwaltung in LDAP

Abstract

LDAP-Operationen am offenen Deskriptor sind eine heikle Sache. In diesem Blog möchte ich auf unterschiedliche Methoden der LDAP-Operation hinweisen und ihre Risiken, aber auch ihre Vorteile aufzeigen.

In diesem Blog möchte ich auf unterschiedliche LDAP-Operationen hinweisen, die die Benutzerverwaltung und die Administration von Directory-Servern erleichtern.

Passwörter erstellen

Im Rahmen der Anwenderverwaltung ist es häufig erforderlich, neue Anwender automatisiert anzulegen. Besonders sicherheitskritisch ist dabei die Erzeugung eines neuen Passwortes, denn dieses sollte geschützt und geheim bleiben.

Das Lightweight Directory Access Protocol bietet die Möglichkeit, über die in den Core-Spezifikationen genannten Operationen hinaus sog. extended Operations, also erweiterte Operationen auszuführen. Hierzu gehört auch die in RFC 3062 beschriebene LDAP Password Modify Extended Operation.

Im Root Directory Special Entry (rootDSE) wird der Object Identifier 1.3.6.1.4.1.4203.1.11.1 ausgegeben, sofern der Server diese erweiterte Operation unterstützt. Als Ergebnis dieser erweiterten Operation kann serverseitig ein generiertes Passwort ausgegeben werden, und zwar als Wert des Feldes genPassword.

Einige Zeilen Perl sollen dies verdeutlichen:

#! /usr/bin/perl
use feature ':5.10';
use Net::LDAP;
use Net::LDAP::Extension::SetPassword;
use Data::Dumper;
my ($ldap,$msg);
my $host = 'ldapi://%2Fvar%2Frun%2Fslapd%2Fldapi';
my $binddn = 'cn=Directory Manager,dc=example,dc=de';
my $bindpw = 'secret';
my $userdn = 'cn=foo bar,ou=people,dc=example,dc=com';
$ldap = Net::LDAP->new( "$host",
$ldap->bind("$binddn",
           password=> "$bindpw" );
$msg = $ldap->set_password(
                          user => "$userdn" );
die "Fehler: ",$msg->code(), ":",$msg->error() if ($msg->code());
say "Neues Passwort: ", $msg->gen_password();
ldap->unbind();

Dieses generierte Passwort kann weiterverarbeitet werden.

Note

Die Methode set_password(OPTIONS) verlangt mindestens eine Option, hier die Option user. Weitere Optionen sind:

  • oldpassword
  • newpassword

Im vorliegenden Fall wird das neue Passwort in Klartext übertragen. Der Datentrasport muss daher besonders geschützt werden. Es bieten sich da TLS (Transport Layer Security) und IPC (Inter Process Communication) an. Das obige Beispiel benutzt ldapi:///, also Transport mittels IPC. Per Definition hat ldapi einen ssf (Security Strength Factor) von 71.

Dieter Klünter, 26. December 2012

   LDAP