Zoeken in deze blog

15 mei 2007

LDAP Server

Deze blog is nog niet compleet en op dit moment een logboek voor mij om bij te houden hoe mijn LDAP server ontwikkelt.

Lightweight Directory Access Protocol (LDAP) kan worden gebruikt voor vreselijk veel toepassingen. Het is een database model dat aan legio functies gekoppeld kan worden.
Op dit moment wil ik 1 PC in mijn netwerk voorzien van een LDAP server waarin ik gebruikers aanmaak. Vervolgens kunnen die gebruikers op alle PC's in mijn netwerk inloggen met dat account dat centraal wordt bijgehouden. Uiteindelijk worden op de LDAP server ook Network File System (NFS) shares aangemaakt. Aangezien de toegang van NFS gebaseerd is op uid en gid moeten die waarden voor een user altijd hetzelfde zijn, ongeacht op welke PC die user aanmeldt.

Nuttige sites:
http://www.howtoforge.org/linux_openldap_setup_server_client
https://help.ubuntu.com/community/OpenLDAPServer?highlight=%28ldap%29

Installeren:
slapd
ldap-utils


De installatie van slapd vraagt om een domein en een wachtwoord voor de domein beheerder.

De OpemLDAP server wordt gestopt en gestart met de comando's:
sudo /etc/init.d/slapd start
sudo /etc/init.d/slapd stop

De configuratie van LDAP wordt gedaan in het bestand/usr/share/slapd/slapd.conf

Er moet nog een wachtwoord in het configuratie bestand worden gezet. Zet dit wachtwoord versleuteld in het bestand. Genereer een versleuteld wachtwoord met een opdracht in Konsole:
$ slappasswd
New password:
Re-enter password:
{SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m
Edit slapd.conf en copy paste de gegenereerde password string samen met user en domein informatie:

suffix          "dc=martijnvanes,dc=eu"
directory "/var/lib/ldap"
rootdn "cn=admin,dc=martijnvanes,dc=eu"
rootpw {SSHA}4IzeFp7kDNMTLPvBGFtyEgNTsyqkUwTl


Het slapd.conf bestand ziet er dan zo uit:
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# 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

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel 0

# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_bdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend bdb
checkpoint 512 30

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database bdb

# The base of your directory in database #1
suffix "dc=martijnvanes,dc=eu"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn "cn=admin,dc=martijnvanes,dc=eu"
rootpw {SSHA}4IzeFp7kDNMTLPvBGFtyEgNTsyqkUwTl

# Where the database file are physically stored for database #1
directory "/var/lib/ldap"

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057
# for more information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod on

# Where to store the replica logs for database #1
# replogfile /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=martijnvanes" write
by anonymous auth
by self write
by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms. Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="cn=admin,dc=martijnvanes" write
by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
# by dn="cn=admin,dc=martijnvanes" write
# by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database

# The base of your directory for database #2
#suffix "dc=debian,dc=org"

Nadat slapd geconfigureerd is moet een bestand worden gemaakt met daarin de users met alle attributen dat wordt ingeladen in de LDAP database.
Mijn bestand heet users.ldif en staat in /etc/ldap
Het bestand ziet er alsvolgt uit:
dn: dc=martijnvanes,dc=eu
objectClass: dcObject
objectClass: organizationalUnit
dc: martijnvanes
ou: Martijnvanes Dot Eu

dn: cn=Manager,dc=martijnvanes,dc=eu
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: Manager
description: LDAP administrator

dn: ou=people,dc=martijnvanes,dc=eu
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=martijnvanes,dc=eu
objectClass: organizationalUnit
ou: groups

dn: uid=Test1,ou=people,dc=martijnvanes,dc=eu
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
uid: test1
sn: User
cn: Test User
displayName: Test User
uidNumber: 1001
gidNumber: 1001
userPassword: test1
gecos: Test User

loginShell: /bin/bash
homeDirectory: /home/test1
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: martij.es@gmail.com
postalCode: 7423 DJ
l: Deventer
o: martijnvanes
mobile: +31 (0)6 XX XX XX XX
homePhone: +31 (0)5 70 xx xx xx
title: System Administrator
postalAddress:
initials: TU

dn: cn=martijnvanes,ou=groups,dc=martijnvanes,dc=eu
objectClass: posixGroup
cn: martijnvanes
gidNumber: 1001

De inhoud van het bestand moet worden toegevoegd aan de server met de commando's
sudo /etc/init.d/slapd stop
sudo rm -rf /var/lib/ldap/*
sudo slapadd -l init.ldif
sudo /etc/init.d/slapd start

3 opmerkingen:

Nelleke zei

Héé, ik snap der geen zak van...

Nelleke zei

( uitspreken op z'n Teeuwens...)

Martijn van Es zei

Tis ook nog nie af man!!

Is Linux nog nieuw voor je?

Lees dan eerst de Introductie, daarin staat erg veel nuttige informatie. Verder kunnen de Ubuntu Documentatie en de Ubuntu Screencasts sites erg handig zijn.