Anbindung von Samba und freeRadius an LDAP

Aus DebianforumWiki
Wechseln zu: Navigation, Suche
WikiWeitere Dienste ‹ Anbindung von Samba und freeRadius an LDAP


Anbindung von Samba und freeRadius an LDAP

Vorwort

Dieses Tutorial setzt das Wissen über LDAP, Samba, PAM etc. voraus und beschränkt sich ausschließlich auf die Beschreibung einer lauffähigen Konfiguration der Dienste.

Grundkonfiguration

Der LDAP und alle weiter folgenden Server wurden auf einem Debian 5.0 konfiguriert. Dabei wurden neben de standardisierten Paketen folgende Pakete zusätzlich installiert:

LDAP Server

Installation

Für den LDAP Server werden folgende Pakete benötigt:

  • slapd
  • ldap-utils
  • phpldapadmin (optional)

Bei der Installation wird nach dem Administrationskennwort für LDAP gefragt welches aber später auch in der Datei /etc/ldap/slapd.conf überschrieben werden kann. Nach der Installation muss die /etc/ldap/slapd.conf angepasst werden, indem die Zeilen

suffix          "dc=your,dc=domain"
rootdn          "cn=admin,dc=your,dc=domain"
rootpw          [yourpassword]

eingefügt oder einkommentiert werden müssen. Dabei kann der Parameter rootpw entweder direkt eingegeben werden oder zunächst mittels des Befehls slappasswd verschüsselt werden, wobei der Schlüssel z.B. mittels

slappasswd -s [yourpassword]

erzeugt werden kann.


Zusätzlich müssen in der Datei /etc/ldap/ldap.conf die folgenden Änderungen gemacht werden bzw. die Kommentarzeichen entfernt werden

BASE    dc=your,dc=domain
URI     ldap://localhost

SIZELIMIT      12
TIMELIMIT      15
DEREF          never

Administration von LDAP

Die Administration von LDAP kann beispielsweise mittels des Webfrontends phpldapadmin oder des auf Eclipse basierenden Programms Apache Directory Studio[7] geschehen. In beiden Fällen erfolgt dies mittels der Daten:

Anmelde DN:     cn=admin,dc=your,dc=domain
Password        [yourpassword]


Administration mit ldapvi

Für Konsolenmenschen ist ldapvi aus dem gleichnamigen Debianpaket ein Segen. Die /etc/ldapvi.conf (Rechte auf 600 setzen!) könnte so ausschauen:

profile default
host: ldap://127.0.0.1
user: cn=admin,dc=your,dc=domain
password: GeheimesPasswort
discover: yes

Um dann den Benutzer Horst zu verändern, reicht ein ldapvi uid=Horst. Die Projekthomepage [8] ist empfehlenswert.

LDAP Clients

Auf allen Systemen, die sich per LDAP auf dem System anmelden können sollen, müssen folgende Pakete installiert werden. Dabei werden diese Pakete auch für die Anbindung von Samba an LDAP benötigt (siehe unten), daher empfiehlt es sich die Pakete auch auf dem Server zu installieren.

  • libpam-ldap
  • libnss-ldap
  • nscd
  • libpam-passwdqc

Konfiguration von libnss-ldap

Bei der Konfiguration von libnss-ldap müssen ausschließlich in der Datei /etc/nsswitch.conf die folgenden Zeilen angepaßt werden

passwd:         files ldap
group:          files ldap
shadow          compat

Konfiguration von PAM

Bei der Installation von libpam-ldap wird nach einigen Angaben gefragt. Dabei sind die Einstellungen:

|| URI des Servers || ldap://localhost || || Distinguished Name of Search Base || dc=your,dc=domain || || LDAP Version to use || 3 || || Make local root Database admin: || yes || || Does the LDAP database require login? || no || || LDAP account for root: || cn=admin,dc=your,dc=domain || || LDAP root account password: || [yourpassword] ||


Die Konfiguration von PAM selbst erfolgt über die Dateien im Verzeichnis /etc/pam.d/* Die Dateien haben den Aufbau:

<Modultyp>      <Kontroll-Flag>         <ModulName/Pfad>        <Optionen>


Modultyp || auth || Überprüfung der Identität der Benutzer || || account || Bedingungen für den Zugriff auf das System || || password || Aktualisierung der Authentisierungsdaten || || session || Einstellung für die Sitzung ||


Kontroll-Flag ||required ||Die erfolgreiche Auswertung dieses Moduls ist notwendig für den Gesamterfolg. Bei einer gescheiterten Auswertung werden trotzdem alle weiteren Module von diesem Typ geladen || ||requisite ||Die erfolgreiche Auswertung dieses Moduls ist notwendig für den Gesamterfolg. Bei einer gescheiterten Auswertung führt dieses zu einem Abbruch der Auswertung || ||sufficient ||Die erfolgreiche Auswertung dieses Moduls ist ausreichend für den Gesamterfolg. Das heißt ein gescheiterte Auswertung beeinflußt die Gesamtbewertung nicht, bei einem Erfolg wird der Authentifzierungsprozess beendet und die Ergebnisse der vorherigen required Module berücktsichtigt. || ||optional ||Eine erfolgreiche oder gescheiterte Authentifzierung hat nur dann eine Bedeutung wenn es das einzige eingebunde Modul ist || ||include ||Bezieht alle Argumente des gleichen Types aus der angegeben Datei ein ||


Modulname / Options

Eine Auswahl an Modulen und den passenden Optionen ist beispielsweise hier[3] zu finden.

In der Datei /etc/pam.d/common-password muss die Zeile

password required pam_unix.so nullok obscure min=4 max=8 md5

oder

password required pam_cracklib.so retry=3 minlen=6 difok=3
password required pam_unix.so use_authtok nullok md5

auskommentiert / entfernt werden und durch die Zeilen

password required pam_passwdqc.so min=disabled,16,12,8,6 max=256
password sufficient pam_unix.so use_authtok md5
password sufficient pam_ldap.so use_first_pass use_authtok md5
password required pam_deny.so

ersetzt werden


In der Datei /etc/pam.d/common-auth muss die Zeile

auth required pam_unix.so nullok_secure

auskommentiert oder entfernt werden und durch die Zeilen

auth sufficient pam_unix.so
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

ersetzt werden.

Schließlich muss noch die Datei /etc/pam.d/common-account dahin gehend angepasst werden, das die Zeile

account required pam_unix.so

durch die Zeilen

account sufficient pam_unix.so
account sufficient pam_ldap.so
account required pam_deny.so

ersetzt wird

chsh / chfn

Wenn die Benutzer und ihre Passwörter durch LDAP verwaltet werden funktionieren die Befehle chsh und chfn nicht mehr, daher sind die folgenden Änderungen notwendig

dpkg-divert --add --rename --divert /usr/bin/chfn.local /usr/bin/chfn
dpkg-divert --add --rename --divert /usr/bin/chsh.local /usr/bin/chsh
ln -s /usr/share/doc/libpam-ldap/examples/chsh /usr/bin/chsh
ln -s /usr/share/doc/libpam-ldap/examples/chfn /usr/bin/chfn

Nun können bereits Benutzer mit LDAP angelegt werden, welche sich auf der Konsole anmelden können.

Samba

Für einen Samba Server sowie die Zusammenarbeit mit LDAP müssen die folgenden Pakete installiert werden

  • samba
  • samba-doc
  • smbldap-tools
  • smbclient

Die folgende Konfiguration beschreibt nur die Konfiguration von der Anbindung von Samba an LDAP und nicht die grundlegende Einstellung von Samba

Konfiguration von LDAP für Samba

Zunächst muss in der /etc/default/slapd die Zeile SLAPD_SERVICES nach

SLAPD_SERVICES = "ldaps://[Hostname]/ ldap://localhost"

geändert werden. Als nächstes muss das Samba Schema in LDAP eingebunden werden, dieses geschieht indem

zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

ausgeführt wird. Danach kann die Datei samba.schema mittels

include /etc/ldap/schema/samba.schema

in die /etc/ldap/slapd.conf eingebunden werden. Zum Schluß muß vor dem Neustart den Benutzern erlaubt werden ihre Passwörter zu ändern dieses geschieht indem

access to attrs=userPassword,shadowLastChange

zu

access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword

verändert wird. Jetzt kann openldap mittels

/etc/init.d/slapd restart

neugestartet werden.

Konfiguration mit smbldap-tools

Die nachfolgenden Konfigurationsschritte können natürlich auch händisch ausgeführt werden. Allerdings wird diese Konfiguration durch das Paket smbldap-tools deutlich erleichert. Zunächst muss aber hierfür die für die Verwendung von smbldap-tools benötigten Konfigurationsdateien kopiert werden. Dieses erfolgt mit

cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/
cp /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz /etc/smbldap-tools/
gzip -d /etc/smbldap-tools/smbldap.conf.gz

Nun kann die von Samba bereitgestellte SID mittels

net getlocalsid

ermittelt werden. Diese muss jetzt in die Datei /etc/smbldap-tools/smbldap.conf eingetragen werden. Zusätzlich müssen noch einige andere Einstellungen wie die IP des LDAP Masters und die Maildomain eingetragen werden. Dabei sind alle Einstellungen

SID="[your_SID]"
slaveLDAP="127.0.0.1"
masterLDAP="127.0.0.1"
ldapTLS="0"
mailDomain="yourdomain.com"
suffix="dc=your,dc=domain"

Bevor die Rechte korrekt gesetzt werden müssen, muss die Datei /etc/smbldap-tools/smbldap_bind.conf zur Anbindung von Samba an LDAP wie folgt angepasst werden

slaveDN="cn=admin,dc=your,dc=domain"
slavePw="[ihr_password]"
masterDN="cn=admin,dc=iom,dc=local"
masterPw="[ihr_password]"

Zum Schluss müssen noch die Rechte für die beiden Konfigurationsdateien angepaßt werden dieses geschieht mittels

chmod 0644 /etc/smbldap-tools/smbldap.conf
chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

Jetzt kann der Verzeichnisdienst mit den Organisationseinheiten, Group, Computers und Users, sowie dem Domainnamen und den grundlegenden Benutzern und Gruppen befüllt werden

smbldap-populate -u 30000 -g 30000

Dabei steht das -u für die erste zu vergebene User-ID und der Parameter g für die erste zu vergebene Group-ID. Während der Ausführung wird dabei nach dem Passwort für Root gefragt dabei handelt es sich um den root-User welcher in LDAP hinterlegt ist.

Samba Server

Konfiguration

Nun kann endlich die /etc/samba/smb.conf angepasst werden. Hierbei muss zuerst die Datenbank für die Passwörter umgestellt werden dieses geschieht indem die Zeile

passdb backend = tdbsam

zu

passdb backend = ldapsam:ldap://localhost/

geändert werden. Zusätzlich muss noch die Option obey pam restrictions auf no gesetzt werden. Darüber hinaus muss die Struktur des LDAP Baumes Samba bekannt gemacht werden dieses geschieht indem die folgenden Zeilen unter der [global] Section eingefügt werden

ldap admin dn = cn=admin,dc=your,dc=domain
ldap suffix = dc=your, dc=domain
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Users

Nun muss noch Samba erlaubt werden die Passwörter mit LDAP zu synchronisieren und definiert werden mit welchen Programm die Passwörter erzeugt werden. Dieses erfolgt mit dem Einfügen der Zeilen

ldap passwd sync = Yes

passwd program = /usr/sbin/smbldap-passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*

Bevor nun samba neu gestartet werden kann muss noch der Domain erlaubt werden sich bei Samba einzuloggen dieses geschieht indem in der /etc/samba/smb.conf

domain logons = yes

gesetzt wird. Zusätzlich muss noch am Ende der Datei der Pfad zu den Homeverzeichnissen definiert werden, dieses erfolgt mit

[homes]
comment = Home Directories
browseable = yes
path = /home/%U
guest ok = no
inherit permissions = yes
read only = no
create mask = 0700
directory mask = 0700
#valid users = %S

Nun kann die Datei gespeichert werden und der Server mittels

/etc/init.d/samba restart

neu gestartet werden. Abschließend kann dann das Administrationskennwort für Samba gesetzt werden, dieses geschieht mit


smbpasswd -w admin_passwort

Benutzer und Gruppenverwaltung

Ein Benutzer kann mittels des Befehls

smbldap-useradd -a -m -M test.user -c "Test User" tuser

hinzugefügt werden. Die Parameter stehen dabei für

|| -a || Erlaubt den Login sowohl unter Windows als auch unter Linux || || -m || erstellt ein Homeverzeichnis || || -M || setzt den lokalen Mailalias || || -c || legt den vollständigen Namen fest ||


Das Passwort für den Benutzer kann dabei über den Befehl

smbldap-passwd tuser

festgelegt werden. Eine Gruppe kann darüber hinaus mittels

smbldap-groupadd [Gruppenname]

erstellt werden und der Benutzer dann der Gruppe über den Befehl

smbldap-usermod -G [Gruppenname(n)] tuser

einer Gruppe zugeordnet werden.

freeRadius

Für die Verwendung von freeRadius und die Anbindung an LDAP müssen die Pakete

  • freeradius
  • freeradius-ldap

installiert werden.

Konfiguration

Nach der Installation muss zunächst die /etc/freeradius/radiusd.conf an drei Stellen angepaßt werden. Zum einen muss der Block

ldap {
       server = "localhost"
       identity = "cn=admin,dc=iom,dc=local"
       password = [your_password]
       basedn = "dc=iom,dc=local"
       filter = "(uid=%u)"
       start_tls = no
       access_attr = "uid"
       dictionary_mapping = $(raddbdir}/ldap.attrmap
       ldap_connections_number = 5
       timeout = 4
       timelimit = 3
       net_timeout = 1
}

eingefügt werden. Zum anderen muss in der Zeile

ldap

das Kommentarzeichen entfernt werden, und schließlich müssen noch die Zeilen

Auth-Type LDAP {
 ldap
}

durch das entfernen der Kommentarzeilen mit hinein genommen werden.

Jetzt kann in der Datei die Authentifizierung von der Radius eigenen Datenbank auf LDAP umgestellt werden. Dieses geschieht indem in der Datei /etc/freeradius/users die Zeilen

DEFAULT Auth-Type = System
  Fall-Through = 1

durch

DEFAULT Auth-Type = LDAP
  Fall-Through :=1

ersetzt werden. Zum Schluss muss noch festgelegt werden welche Clients z.B. VPN Server auf den Radius Server mit welchem Passwort zugreifen dürfen. Dieses geschieht indem die Zeilen

client 127.0.0.1 {
     secret         = testing123
     shortname      = localhost
     nastype        = other
}

eingefügt werden.

Test

Nun kann getestet werden ob die Konfiguration korrekt war und sich die Benutzer anmelden können. Bei dem Beispiel wird nun davon ausgegangen das ein Benutzer namens testuser mit dem Passwort foobar existiert. Wenn alle Einstellungen richtig sind sollte der Befehl

radtest testuser linus 127.0.0.1 0 foobar

folgende Ausgabe zurückliefern

Sending Access-Request of id 229 to 127.0.0.1 port 1812
     User-Name = "testuser"
     User-Password = "[your_password]"
     NAS-IP-Address = 255.255.255.255
     NAS-Port = 0
rad_recv: Access-Accept packed from host 127.0.0.1:1812, id=229, length=20

Quellen

[1] [[1]]

[2] http://samba-ldap.de/node/46

[3] http://support.microsoft.com/kb/243330/de

[4] http://www.moduli.net/sysadmin/sarge-ldap-auth-howto.html

[5] http://islandlinux.org/howto/installing-samba-openldap-ubuntu

[6] http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html

[7] http://directory.apache.org/studio/

[8] http://www.lichteblau.com/ldapvi/