[stextbox id=“warning“ caption=“Achtung“]Diese Seite befindet sich noch in der bearbeitung – Benutzen auf eigene Gefahr![/stextbox]
__ LDAP-Verzeichnisse stellen eine art globale Datenbank dar. -Die einfachtse Anwendung ist hier z.B. das Führen von Firmen-/ oder Familienweiten Adressbüchern.
Oftmals kennt man dies von den Mailsystemen in Outlook oder Lotus Notes, bei dem man einfach nur den Namen des Mitarbeiters eingeben kann und die e-mail Adresse erscheint. Oder die "Who-is-who" Verzeichnisse, bei denen man die Telefonnummern, Foto, usw. von anderen mitarbeitern nachschlagen kann.
Doch mit LDAP lässt sich noch viel mehr machen. Man kann sozusagen das gesammte inventar in einem LDAP-Verzeichniss speichern und interessante Web-Anwendungen damit machen.
Wir werden hier jetzt auf Debian-etch einen solchen LDAP-Server installieren und in anderen Tutorials spezifisch erweitern (z.B. für SAMBA).
Zusätzlich wird mit phpLDAPadmin noch eine schöne Web-Administraions Oberfläche aufgesetzt. __
Vorbemerkungen
Unter Debian genügen die "apt-get install" aufrufe, da dort alle Abhängigkeiten automatisch installiert werden. Für andere Distributionen hier die Pakete die benötigt werden; diese kann man sich seperat downloaden und dann z.B. mit "rpm -ihv [paket]" installieren.
Grundinstallation des LDAP Dienstes
Benötigte Software-Pakete
Main Pakages
- libiodbc2
- libldap-2.3-0 libslp1
- libslp1
Dependencies
- make, gcc, gcc++
- gengetopt libpopt-dev python-crypto
- libpopt-dev
- python-crypto
Installation
Zunächst mal die abhängikeiten installieren (kann nicht verkehrt sein g):
apt-get install make gcc gcc++ gengetopt libpopt-dev python-crypto |
apt-get install make gcc gcc++ gengetopt libpopt-dev python-crypto
Dann LDAP selbst:
apt-get install slapd ldap-utils |
apt-get install slapd ldap-utils
Nun müssen wir den noch rekonfigurieren:
Die Fragen werden nun wie folgt beantwortet:
<SMALL>Hinweis: Der DNS-Name kann auch etwas anderes sein, z.B. ‚fileserver.home.meinName.tld‚</SMALL>
Soll die OpenLDAP-Server-Konfiguration ausgelassen werden?: Nein
DNS Name: samba.local
Name seiner Organisation: samba.local
Admin Kennwort: 123456
Kennwort wiederholen: 123456
Zu verwenden Datenbankmaschine : BDB
soll die Datenbank entfernt werden, wenn slapd vollständig gelöscht wird?: Nein
Es möchte die alte Datenbank verschieben: Ja__
LDAPV2: Nein
Testen kann man das ganze nun mit:
ldapsearch -x -b "dc=samba,dc=local" |
ldapsearch -x -b "dc=samba,dc=local"
(oder halt der DNS Name, den ihr eingegeben habt)
Dabei sollte sowas rauskommen:
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# samba.local
dn: dc=samba,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: samba.local
dc: samba
# admin, samba.local
dn: cn=admin,dc=samba,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2 |
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# samba.local
dn: dc=samba,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: samba.local
dc: samba
# admin, samba.local
dn: cn=admin,dc=samba,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
Nun müssen wir noch den apache2-webserver installieren (für die Weboberfläche):
Und schliesslich die Weboberfläche selbst 😉 :
apt-get install phpldapadmin |
apt-get install phpldapadmin
Nun kann man sich unter: http://IP-DES-SERVERS/phpldapadmin anmelden und Einträge hinzufügen.
Auf diese kann man nun ganz einfach mit Thunderbird, Outlook, usw. zugreifen.
Hier die Schritte für Thunderbird:
# Extras – Adressbuch
# Extras – Einstellungen
# Unter "Verfassen" die Registerkarte "Adressieren" wählen
# Häckchen bei "LDAP-Verzeichnisserver", dann "Anpassen" drücken
# "Hinzufügen" wählen
# Daten Eingeben, z.B. LDAP-Server / 10.0.0.3 / cn=admin,dc=samba,dc=local
Für ein Adressbuch reicht dies bereits aus. Wer bereits SAMBA als Domaincontroller einsetzt interessiert sich vielleicht auch für die nächsten Schritte, wenn wir LDAP in SAMBA integrieren.
Logging einrichten
Standardmässig werden die LDAP-Meldungen ins syslog geloggt. Da man aber besonders beim deubbgen extrem viele Meldungen bekommt, möchte man besser ein eigenes Logfile dafür haben.
Dazu muss man in syslog-deamon nur den Eintrag: "local4" konfigurieren:
touch /var/log/ldap.log
chown openldap:openldap /var/log/ldap.log
echo "local4.* /var/log/ldap.log" >> /etc/syslog.conf
/etc/init.d/sysklogd restart && /etc/init.d/slapd restart |
touch /var/log/ldap.log
chown openldap:openldap /var/log/ldap.log
echo "local4.* /var/log/ldap.log" >> /etc/syslog.conf
/etc/init.d/sysklogd restart && /etc/init.d/slapd restart
Die Meldungen des LDAP-Servers werden nun unter: /var/log/ldap.log gespeichert.
Integration in einen SAMBA Server
Dieses Tutorial geht davon aus, dass ein SAMBA Domaincontroller bereits nach dem Linux Fileserver Tutorial einsatzbereit läuft.
LDAP Anpassungen
Zusätzliche Software
Für die Installation von PAM mit OpenLDAP werden noch die folgenden Pakete beötigt: libnss-ldap, libpam-ldap und nscd.
apt-get install libnss-ldap libpam-ldap nscd |
apt-get install libnss-ldap libpam-ldap nscd
Die folgenden Fragen wie folgt beantworten:
Make local root Database admin: Ja
Does the LDAP database require login: Nein
Root login account: cn=admin,dc=samba-ldap,dc=local
Root login password: samba-ldap
Local crypt to use when changing passwords: crypt
LDAP Server host: 127.0.0.1
The distinguished name of the search base: dc=samba-ldap,dc=local
LDAP version to use: 3
Datenbank benötigt Login: Nein
Konfiguration nur für den Eigentümer les-/schreibbar machen: Ja
Nun muss noch der NSCD-Dienst gestartet werden:
Nun können wir LDAP an SAMBA anpassen. Dazu generieren wir als erstes mal ein Verschlüsseltes LDAP-Passwort:
Die Ausgabe, etwas wie: " {SSHA}EDmTvpZ56jZAOelNPBR4MwReReHNJXo+" können wir gleich in die Zwischenablage kopieren.
Nun das File: /etc/ldap/slapd.conf öffnen und die 2 Zeilen rootdn/rootpw ändern/einfügen (rootpw ist das Passwort, dass wir vorhin erstellt haben):
rootdn "cn=admin,dc=samba-ldap,dc=local"
rootpw {SSHA}EDmTvpZ56jZAOelNPBR4MwReReHNJXo+ |
rootdn "cn=admin,dc=samba-ldap,dc=local"
rootpw {SSHA}EDmTvpZ56jZAOelNPBR4MwReReHNJXo+
Da wir für unsere Anwendung ganz andere Zugrissrechte als die Standardmässigen benötigen, schiessen wir die folgenden am besten gleich raus:
access to attrs=userPassword
by dn="cn=admin,dc=samba-ldap,dc=local" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=samba-ldap,dc=local" write
by * read |
access to attrs=userPassword
by dn="cn=admin,dc=samba-ldap,dc=local" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=samba-ldap,dc=local" write
by * read
Dafür setzten wir nun diese ein:
access to attrs=userPassword
by self write
by anonymous auth
by * none
access to attrs=sambaLMPassword
by self write
by anonymous auth
by * none
access to attrs=sambaNTPassword
by self write
by anonymous auth
by * none
access to *
by * read |
access to attrs=userPassword
by self write
by anonymous auth
by * none
access to attrs=sambaLMPassword
by self write
by anonymous auth
by * none
access to attrs=sambaNTPassword
by self write
by anonymous auth
by * none
access to *
by * read
Dann muss noch die Zeile:
ersetzt werden durch:
index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq |
index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
Nun können wir diese Datei schliessen und dafür: /etc/default/slapd öffnen.
Dort ersetzen wir:
in
, speichern und schliessen die Datei und öffnen: /etc/ldap/ldap.conf.
Hier tragen wir noch HOST, BASE und URI ein:
HOST 127.0.0.1
BASE dc=samba-ldap,dc=local
URI ldap://localhost:389 |
HOST 127.0.0.1
BASE dc=samba-ldap,dc=local
URI ldap://localhost:389
SAMBA Anpassungen
Zusätzliche Software
Als erstes müssen wir nun noch die samba-Dokumentation, die smbldap-tools, sowie das Tool: "mkntpwd" installieren; letzteres ist dazu da NT-Passwörter zu kreieren.
apt-get install samba-doc |
apt-get install samba-doc
Dann noch einige LDAP-Tools:
apt-get install smbldap-tools |
apt-get install smbldap-tools
Um die funktionstüchtigkeit von den sambaldap-tools zu gewärleisten, müssen noch einige Perl-Module installiert werden:
apt-get install libnet-ldap-perl libcrypt-smbhash-perl libunicode-maputf8-perl libio-socket-ssl-perl libdigest-sha1-perl |
apt-get install libnet-ldap-perl libcrypt-smbhash-perl libunicode-maputf8-perl libio-socket-ssl-perl libdigest-sha1-perl
Dazu müssen wir noch die smbldap-tools configfiles kopieren:
gunzip -c /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
cp -pv /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf |
gunzip -c /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
cp -pv /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf
Nach dem wir alle Perl-Module installiert haben, können wir einen Test der sambaldap-tools machen:
Kommt nun folgende Ausgabe, hat die Installation des sambaldap Tools und die Installation der Perl Module funktionert:
(c) Jerome Tournier - IDEALX 2004 (<a href="http://www.idealx.com)-" target="blank">http://www.idealx.com)-</a> Licensed under the GPL
Usage: /usr/local/sbin/smbldap-usershow [-?] username
-? show this help message |
(c) Jerome Tournier - IDEALX 2004 (<a href="http://www.idealx.com)-" target="blank">http://www.idealx.com)-</a> Licensed under the GPL
Usage: /usr/local/sbin/smbldap-usershow [-?] username
-? show this help message
mkntpwd muss kompiliert werden:
$ cd /opt/
wget <a href="http://www.silcom.com.pe/soft/mkntpwd.tar.gz" target="blank">http://www.silcom.com.pe/soft/mkntpwd.tar.gz</a>
tar -zxf mkntpwd.tar.gz
cd mkntpwd
make
cp mkntpwd /usr/local/bin |
$ cd /opt/
wget <a href="http://www.silcom.com.pe/soft/mkntpwd.tar.gz" target="blank">http://www.silcom.com.pe/soft/mkntpwd.tar.gz</a>
tar -zxf mkntpwd.tar.gz
cd mkntpwd
make
cp mkntpwd /usr/local/bin
Testen mit:
Ausgabe:
# mkntpwd
Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd]
mkntpwd password
mkntpwd -f [-] [filename]
-L lanmgrpasswd LanManager cleartextpwd <= 14 chars
-N ntpasswd NT cleartextpwd <=128 chars (usually <=14)
with both options present the encrypted LanManager-Pwd is
printed first, followed by a ':' and the encrypted NT-Pwd.
The second usage behaves like mkntpwd -L pwd -N pwd
The third usage reads the password from STDIN or a File. Printout
is the same as second.
anton@genua.de |
# mkntpwd
Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd]
mkntpwd password
mkntpwd -f [-] [filename]
-L lanmgrpasswd LanManager cleartextpwd <= 14 chars
-N ntpasswd NT cleartextpwd <=128 chars (usually <=14)
with both options present the encrypted LanManager-Pwd is
printed first, followed by a ':' and the encrypted NT-Pwd.
The second usage behaves like mkntpwd -L pwd -N pwd
The third usage reads the password from STDIN or a File. Printout
is the same as second.
anton@genua.de
smbldap-tools Konfiguration
Nun können wir die smbldap-tools konfigurieren.
Als erstes müssen wir die so genannte SID unserer Domäne ermitteln. Diese wird bei jeder Domäne anders aussehen, deswegen nicht wundern wenn Ihr eine andere habt als hier angegeben.
net getlocalsid SAMBA-LDAP |
net getlocalsid SAMBA-LDAP
SID for domain SAMBA-LDAP is: S-1-5-21-2856778860-2055491937-1446371655
Diese SID müssen wir jetzt in die smbldap.conf einfügen:
/etc/smbldap-tools/smbldap.conf
Dort suchen wir jetzt nach dem SID Eintrag und löschen das Beispiel von IDEALIX.ORG raus und tragen dafür unseren ein:
Als nächstes müssen wir den Wert sambaDomain in dieser Datei auf unsere Domäne so wie in der smb.conf angegeben abändern:
Wir verwenden in diesem HowTo keine Verschlüsselung und somit können wir ldapTLS auf = 0 setzen.
Für die Installation benötigen die smbldap-tools noch unseren LDAP Suffix:
suffix="dc=samba-ldap,dc=local" |
suffix="dc=samba-ldap,dc=local"
Wie in der smb.conf angegeben verwalten wir die Computer Accounts im SubTree Machines. Aus diesem Grund müssen wir noch den computersdn ändern:
computersdn="ou=Machines,${suffix}" |
computersdn="ou=Machines,${suffix}"
Um herauszufinden welche UnixIDs noch frei sind müssen wir noch angeben in welchen Domain Pools nach freien IDs suchen soll:
sambaUnixIdPooldn="sambaDomainName=SAMBA-LDAP,${suffix}" |
sambaUnixIdPooldn="sambaDomainName=SAMBA-LDAP,${suffix}"
Da wir schon in der smb.conf schon angeben haben wo sich das Home Verzeichnis der Benutzer befindet können wir den Wert userSmbHome auf „“ setzen.
Das gleiche auch mit den Benutzerprofilen:
Nun hinterlegen wir noch den Laufwerksbuchstaben für das Persönliche Laufwerk:
Da auch die smbldap-tools wissen müssen in welchem Server die Daten gespeichert warden sollen, tragen wir jetzt in die /etc/smbldap-tools/smbldap_bind.conf die benötigten Werte ein.
/etc/smbldap-tools/smbldap_bind.conf
Die vorhanden Daten ersetzen wir gegen:
slaveDN="cn=admin,dc=samba-ldap,dc=local"
slavePw="samba-ldap" |
slaveDN="cn=admin,dc=samba-ldap,dc=local"
slavePw="samba-ldap"
masterDN="cn=admin,dc=samba-ldap,dc=local"
masterPw="samba-ldap" |
masterDN="cn=admin,dc=samba-ldap,dc=local"
masterPw="samba-ldap"
Nun gehts ans anpassen der Samba-Config.
<EM>Achtung: </EM>Wenn ihr den Samba-Server schon produktiv im einsatz habt am besten ein Backup der smb.conf machen: cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.noldap! -Dann könnt ihr, falls was schief geht durch austauschen der smb.conf.noldap wieder die alte Funktionalität herstellen.
Folgende zusätzliche Änderungen sind nun in die /etc/samba/smb.conf Einzutragen:
# Password Backend
passdb backend = ldapsam:ldap://127.0.0.1/ |
# Password Backend
passdb backend = ldapsam:ldap://127.0.0.1/
# Samba Tools zur Verwaltung der Benutzer, Gruppen und Computerkonten im LDAP
add user script = /usr/local/sbin/smbldap-useradd –m –a “%u”
delete user script = /usr/local/sbin/smbldap-userdel “%u”
add group script = /usr/local/sbin/smbldap-groupadd –p “%g”
delete group script = /usr/local/sbin/smbldap-groupdel “%g”
add user to group script = /usr/local/sbin/smbldap-groupmod –m “%u” “%g”
delete user from group script = /usr/local/sbin/smbldap-groupmod –x “%u””%g”
set primary group script = /usr/local/sbin/smbldap-usermod –g “%u” “%g”
add machine script = /usr/local/sbin/smbldap-useradd –w “%u” |
# Samba Tools zur Verwaltung der Benutzer, Gruppen und Computerkonten im LDAP
add user script = /usr/local/sbin/smbldap-useradd –m –a “%u”
delete user script = /usr/local/sbin/smbldap-userdel “%u”
add group script = /usr/local/sbin/smbldap-groupadd –p “%g”
delete group script = /usr/local/sbin/smbldap-groupdel “%g”
add user to group script = /usr/local/sbin/smbldap-groupmod –m “%u” “%g”
delete user from group script = /usr/local/sbin/smbldap-groupmod –x “%u””%g”
set primary group script = /usr/local/sbin/smbldap-usermod –g “%u” “%g”
add machine script = /usr/local/sbin/smbldap-useradd –w “%u”
# LDAP werte für den Zugriff von Samba auf die LDAP Datenbank
ldap admin dn = cn=admin,dc=samba-ldap,dc=local
ldap delete dn = Yes
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Machines
ldap passwd sync = Yes
ldap suffix = dc=samba-ldap,dc=local
ldap ssl = no
host msdfs = Yes |
# LDAP werte für den Zugriff von Samba auf die LDAP Datenbank
ldap admin dn = cn=admin,dc=samba-ldap,dc=local
ldap delete dn = Yes
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Machines
ldap passwd sync = Yes
ldap suffix = dc=samba-ldap,dc=local
ldap ssl = no
host msdfs = Yes
# Administratoren des Servers – alle Aktionen warden mit dem Systembenutzer root
# ausgeführt
admin users = root, Administrator |
# Administratoren des Servers – alle Aktionen warden mit dem Systembenutzer root
# ausgeführt
admin users = root, Administrator
Damit LDAP auch weiß, wie es mit Samba Benutzern und seinen Passwörtern umzugehen hat müssen wir jetzt noch das samba Schema entpacken und in der slapd.conf eintrage.
gunzip –c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema |
gunzip –c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
In der Datei slapd.conf im /etc/ldap/ Verzeichniss tragen wir nach den vorhanden Schemas noch das samba.schema ein, wie unten zu sehen ist.
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema |
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
Damit der smbd und LDAP auch miteinander Kommunizieren können und dürfen muss noch das admin Kennwort in der secrets.tdb hinterlegt werden. Dies geschieht durch den smbpasswd Befehl mit der Option –w.
Das Passwort muss natürlich angepasst werden.
Ausgabe:
"Setting stored password for "cn=admin,dc=samba-ldap,dc=local" in secrets.tdb"
Systen Anpassen / PAM-NSS
Testumgebung einrichten
Wenn man einen Produktiven SAMBA-PDC auf LDAP authentifizierung upgraded, kann es in der Anfangsphase häufig zu Problemen kommen, so dass ein login an der Domäne teilweise gar nicht mehr möglich ist.
Hat man also keine Testumgebung zur Verfügung, bzw. arbeiten schon user an der Domäne, muss man diese quasi auf "knopfdruck" wieder zur alten Konfiguration herstellen können.
Ich habe mir zu diesem zeck von jedem configfile, dass verändert wird 2 Kopien gemacht: Eine ldap-version und eine noldap-Version. Mit 2 kleinen Scripts setze ich jeweils links auf diese Versionen. Die noldap-Version habe ich zudem mit dem "immutable" attribut ausgestattet, damit sicher gestellt wird, dass diese nicht verändert werden kann.
So richtet man sich eine solche Umgebung ein:
pam.d-Verzechnis auserhalb des /etc kopieren:
cp -pRv /etc/pam.d /root/ldap-pam |
cp -pRv /etc/pam.d /root/ldap-pam
2 Versionen der Files anlegen:
cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.ldap
cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.noldap
cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.ldap
cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.noldap
cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.ldap
cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.noldap
cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.ldap
cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.noldap
cp -pv /root/ldap-pam/login /root/ldap-pam/login.ldap
cp -pv /root/ldap-pam/login /root/ldap-pam/login.noldap
cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.ldap
cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.noldap |
cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.ldap
cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.noldap
cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.ldap
cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.noldap
cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.ldap
cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.noldap
cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.ldap
cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.noldap
cp -pv /root/ldap-pam/login /root/ldap-pam/login.ldap
cp -pv /root/ldap-pam/login /root/ldap-pam/login.noldap
cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.ldap
cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.noldap
Funktionierende Config unveränderbar machen:
chattr -V +i /root/ldap-pam/*.noldap
chattr -V +i /etc/samba/smb.conf.noldap |
chattr -V +i /root/ldap-pam/*.noldap
chattr -V +i /etc/samba/smb.conf.noldap
Scripts schreiben:
vi /root/ldapon.sh
ln -vs /root/ldap-pam/common-account.ldap /etc/pam.d/common-account
ln -vs /root/ldap-pam/common-auth.ldap /etc/pam.d/common-auth
ln -vs /root/ldap-pam/common-password.ldap /etc/pam.d/common-password
ln -vs /root/ldap-pam/common-session.ldap /etc/pam.d/common-session
ln -vs /root/ldap-pam/login.ldap /etc/pam.d/login
ln -vs /etc/samba/smb.conf.ldap /etc/samba/smb.conf
/etc/init.d/samba restart |
ln -vs /root/ldap-pam/common-account.ldap /etc/pam.d/common-account
ln -vs /root/ldap-pam/common-auth.ldap /etc/pam.d/common-auth
ln -vs /root/ldap-pam/common-password.ldap /etc/pam.d/common-password
ln -vs /root/ldap-pam/common-session.ldap /etc/pam.d/common-session
ln -vs /root/ldap-pam/login.ldap /etc/pam.d/login
ln -vs /etc/samba/smb.conf.ldap /etc/samba/smb.conf
/etc/init.d/samba restart
vi /root/ldapoff.sh
ln -vs /root/ldap-pam/common-account.noldap /etc/pam.d/common-account
ln -vs /root/ldap-pam/common-auth.noldap /etc/pam.d/common-auth
ln -vs /root/ldap-pam/common-password.noldap /etc/pam.d/common-password
ln -vs /root/ldap-pam/common-session.noldap /etc/pam.d/common-session
ln -vs /root/ldap-pam/login.noldap /etc/pam.d/login
ln -vs /etc/samba/smb.conf.noldap /etc/samba/smb.conf
/etc/init.d/samba restart |
ln -vs /root/ldap-pam/common-account.noldap /etc/pam.d/common-account
ln -vs /root/ldap-pam/common-auth.noldap /etc/pam.d/common-auth
ln -vs /root/ldap-pam/common-password.noldap /etc/pam.d/common-password
ln -vs /root/ldap-pam/common-session.noldap /etc/pam.d/common-session
ln -vs /root/ldap-pam/login.noldap /etc/pam.d/login
ln -vs /etc/samba/smb.conf.noldap /etc/samba/smb.conf
/etc/init.d/samba restart
Scripts ausführbar machen:
chmod 755 /root/ldapon.sh
chmod 755 /root/ldapoff.sh |
chmod 755 /root/ldapon.sh
chmod 755 /root/ldapoff.sh
So kann ich einerseits die "normalen" configdateien in /etc/pam.d bearbeiten (da sie ja nur links sind) nicht ausversehen die "falschen" editieren (da sie unveränderbar sind) und mittels /.ldapon.sh, bzw. /.ldapoff.sh jederzeit die LDAP-, oder die (funktionierende) nicht-LDAP Umgebung aufrufen.
Hinweis: Läuft die LDAP-Konfiguration sollte man die links unter /etc/pam.d/ löschen und stattdessen die *.ldap Files wieder Zurück kopieren.
So, nun werden die Security-Module des Systems noch so konfiguriert, dass auch das ganze Linux System die Infos zuerst aus der LDAP-Datenbank liesst.
<EM>Achtung:</EM> Damit wird ggf. das /etc/passwd /etc/groups und /etc/shadow System ungültig! -Die User/PW Daten sind dann alle in der LDAP Datenbank!
Daher erfolgt hier zu einigen der zu bearbeitenden Dateien eine genauere Beschreibung; es ist sehr wichtig zu wissen, was ihr hier ändert!
PAM common settings für alle Services
<SMALL>PAM steht für "Pluggable Authentication Modules". Diese regeln unter Linux den Modus für die Zugriffs-Liste. Standardmässig werden bei einem Unix-System die Benutzer-Infos aus den Dateien: /etc/passwd /etc/groups und /etc/shadow gelesen.
Diese kann man aber im PAM Modul ändern, so dass die Infos z.B. auch aus einer mysql, oder eben LDAP Datenbank (oder beiden) geholt werden können.
Es gilt grundsätzlich, dass zuerst der erste Eintrag in der Reihenfolge abgefragt wird, dann der Zweite, dann der dritte, usw.
D.h. wenn ich einem PAM File angebebe, dass die User-Authentifizierung über LDAP, mysql, passwd erfolgen soll, wird bei einem Login erst das LDAP verzeichnis abgefragt; findet sich die Info darin erfolgt das Login, falls nicht wird die mysql, dann das passwd-file, usw. abgefragt. Ist die Information in allen angegebenen sourcen nicht verfügbar wird eine "login failed" fehlermeldung ausgegeben.</SMALL>
/etc/pam.d/
<SMALL>Im Verzeichnis /etc/pam.d werden die Konfigurationsdateien für jeden Service gespeichert, der die PAM Module nutzt. In unserem Fall also z.B. samba/ldap.</SMALL>
/etc/pam.d/common-account
<SMALL>Das Account Modul regelt ob und wie sich ein benutzer einloggen kann und schaut z.B. nach ob das PW abgelaufen ist, er sich nur zu bestimmten tagen einloggen darf oder ob er sich remote bzw. über die Konsole anmeldet, usw.</SMALL>
account required pam_unix.so
account sufficient pam_ldap.so |
account required pam_unix.so
account sufficient pam_ldap.so
/etc/pam.d/common-auth
<SMALL>Im Auth-Modul wird geprüft ob es den Benutzer gibt, dieser ein gültiges Passwort eingegeben hat und zu welcher Gruppe dieser gehört. (Standardmässig sind das die Files: /etc/passwd, /etc/shadow und /etc/group)</SMALL>
auth sufficient pam_unix.so nullok_secure
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so |
auth sufficient pam_unix.so nullok_secure
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
/etc/pam.d/common-password
<SMALL>Dieses Modul regelt das updaten/ändern des User-Passworts</SMALL>
password sufficient pam_unix.so nullok obscure min=4 max=8 md5
password sufficient pam_ldap.so use_first_pass use_authtok
password required pam_deny.so |
password sufficient pam_unix.so nullok obscure min=4 max=8 md5
password sufficient pam_ldap.so use_first_pass use_authtok
password required pam_deny.so
/etc/pam.d/common-session
<SMALL>Dinge die getan werden, bevor der Benutzer sich einloggt; dies sind z.B. das Mounten von User-Spezifischen verzeichnissen, Umgebungsvariablen, usw.</SMALL>
session required pam_unix.so
session optional pam_ldap.so |
session required pam_unix.so
session optional pam_ldap.so
/etc/nsswitch.conf
<SMALL>Diese Datei enthält die Sourcen wo bestimmte system-calls ihre Informationen abrufen. Die Shell kann sich z.B. die Passwörter von Files oder Datenbanken holen, die Namensauflösung vom DNS-Server, usw.</SMALL>
passwd: compat ldap
group: compat ldap
shadow: compat ldap |
passwd: compat ldap
group: compat ldap
shadow: compat ldap
NSS anpassen
/etc/libnss-ldap.conf
~ Zeile: 50
rootbinddn cn=admin,dc=samba-ldap,dc=local |
rootbinddn cn=admin,dc=samba-ldap,dc=local
~ Zeile: 179
nss_base_passwd ou=Users,dc=samba-ldap,dc=local?one |
nss_base_passwd ou=Users,dc=samba-ldap,dc=local?one
nss_base_passwd ou=Machines,dc=samba-ldap,dc=local?one |
nss_base_passwd ou=Machines,dc=samba-ldap,dc=local?one
nss_base_shadow ou=Users,dc=samba-ldap,dc=local?one |
nss_base_shadow ou=Users,dc=samba-ldap,dc=local?one
nss_base_group ou=Groups,dc=sama-ldap,dc=local?one |
nss_base_group ou=Groups,dc=sama-ldap,dc=local?one
~ Zeile: 217
~ Zeile: 275
Nun haben wire s fast geschaft. Jetzt müssen wir nur noch die Grunddaten in die LDAP Datenbank schreiben.
Da bei manchen Installationen beim ersten Start nach der Installation nur fehlerhafte Daten in die Datenbank geschrieben werden, werden wir diese erstmal stoppen und dann löschen. Nach einem erfolgreichen löschen der Daten müssen wir allerdings vor dem Eintragen unserer Daten die LDAP Datenbank wieder starten.
debain-pdc:~# /etc/init.d/slapd stop
debian-pdc:~# rm /var/lib/ldap/.
debian-pdc:~# /etc/init.d/slapd start
Nun ist die Datenbank soweit vorbereitet damit wir unsere Daten mit smbldap-populate einspielen:
Ausgabe:
Populating LDAP directory for domain SAMBA-LDAP
(S-1-5-21-2856778860-2055491937-1446371655)
(using builtin directory structure)
adding new entry: dc=samba-ldap,dc=local
adding new entry: ou=Users,dc=samba-ldap,dc=local
adding new entry: ou=Groups,dc=samba-ldap,dc=local
adding new entry: ou=Machines,dc=samba-ldap,dc=local
adding new entry: ou=Idmap,dc=samba-ldap,dc=local
adding new entry: uid=root,ou=Users,dc=samba-ldap,dc=local
adding new entry: uid=nobody,ou=Users,dc=samba-ldap,dc=local
adding new entry: cn=Domain Admins,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Domain Users,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Domain Guests,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Domain Computers,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Administrators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Account Operators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Print Operators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Backup Operators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Replicators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: sambaDomainName=SAMBA-LDAP,dc=samba-ldap,dc=local
Please provide a password for the domain root:
Changing password for root
New password : samba-ldap
Retype new password : samba-ldap |
Populating LDAP directory for domain SAMBA-LDAP
(S-1-5-21-2856778860-2055491937-1446371655)
(using builtin directory structure)
adding new entry: dc=samba-ldap,dc=local
adding new entry: ou=Users,dc=samba-ldap,dc=local
adding new entry: ou=Groups,dc=samba-ldap,dc=local
adding new entry: ou=Machines,dc=samba-ldap,dc=local
adding new entry: ou=Idmap,dc=samba-ldap,dc=local
adding new entry: uid=root,ou=Users,dc=samba-ldap,dc=local
adding new entry: uid=nobody,ou=Users,dc=samba-ldap,dc=local
adding new entry: cn=Domain Admins,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Domain Users,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Domain Guests,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Domain Computers,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Administrators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Account Operators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Print Operators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Backup Operators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: cn=Replicators,ou=Groups,dc=samba-ldap,dc=local
adding new entry: sambaDomainName=SAMBA-LDAP,dc=samba-ldap,dc=local
Please provide a password for the domain root:
Changing password for root
New password : samba-ldap
Retype new password : samba-ldap
Jetzt können wir den smbd Final neustarten und versuchen auf die Freigaben zu zugreifen.
/etc/init.d/samba restart |
/etc/init.d/samba restart
Related Links
|| Link | Beschreibung
[http://www.openldap.org/|openldap.org] | Der bekannte LDAP Server für Linux, Dokumentation
[http://www.yolinux.com/TUTORIALS/LinuxTutorialLDAP.html|YoLinux LDAP Tutorial] | Gutes tutprial mit lauffähigem Beispiel
[http://www.pro-linux.de/t_office/openldap-adressbuch.html|Openldap Adressbuch] | Infos für die integration in Outlook/Thunderbird/etc. Clients
[http://www.linux-magazin.de/heft_abo/ausgaben/2001/05/straffe_verwaltung|Linux-Magazin: OpenLDAP Praxis] | Einige interessante Info szum Aufbau von LDAP Servern
[http://www.samba-ldap.de/|samba-ldap.de] | Eine Ganze Webseite, die sich mit dem Thema beschäftigt
||
Related Downloads
|| File | Beschreibung
[http://phpldapadmin.sourceforge.net/|phpLDAPadmin] | Sehr schöne Weboberfläche für die Administration von LDAP-Servern
[http://www-unix.mcs.anl.gov/~gawor/ldap/|LDAPBrowser] | JAVA LDAP-Browser um die LDAP-Verbindung zu testen und Einträge zu Erstellen; klappt damit manchmal besser als mit dem Web-Tool!
||