OpenLDAP automatisch installieren und einrichten

Ich habe heu­te ein Script geschrie­ben, wel­ches OpenLDAP auf Debi­an­sys­te­men auto­ma­tisch instal­lie­ren und auch gleich für ppo­li­cy kon­fi­gu­rie­ren kann. Wer sowas schon­mal von Hand gemacht hat, weiß um die Schwie­rig­kei­ten. Es soll­te auf den meis­ten Debi­an­de­ri­va­ten funk­tio­nie­ren (ent­wi­ckelt habe ich auf stretch), ist aber leicht anpass­bar, da ich alle Ein­zel­schrit­te in Funk­tio­nen gepackt habe.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/bin/bash
 
# globals
LDAPDB="mdb"
PASSWORD="test1234"
HOSTNAME=`hostname`
DOMAIN=`echo  $HOSTNAME | awk -v FS="." '{print $1}'`
TLD=`echo  $HOSTNAME | awk -v FS="." '{print $2}'`
PPOLICY_FILE="/etc/ldap/schema/ppolicy.ldif"
LOGFILE="debug.txt"
 
# basesetup()
# Installs slapd (openLDAP) unattended
# using debconf
 
basesetup() {
 
	PASS=$1
        HOST=$2
	DBTYPE=$3
 
	echo "Building LDAP-Roottree ...\n"
 
	export DEBIAN_FRONTEND=noninteractive
	echo -e " \
		slapd    slapd/internal/generated_adminpw    password   $PASS
		slapd    slapd/password2    password    $PASS
		slapd    slapd/internal/adminpw    password   $PASS
		slapd    slapd/password1    password    $PASS
		slapd	 slapd/backend: string	$DBTYPE
		slapd	 slapd/domain	string	$HOST
	" | debconf-set-selections
 
	apt-get install -y slapd ldap-utils
 
}
 
make_index() {
 
	echo "Adding index ...\n"
 
        echo -e " \
dn: olcDatabase={1}$LDAPDB,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: mail,givenName eq,subinitial
        " | ldapmodify -Y EXTERNAL -H ldapi:///
 
}
 
# configure_policy()
# installs: 	ppolicy-scheme
# 		ppolicy-module
# 		overlay
# 		ppolicycontext
# 		defaultpolicy
 
configure_policy() {
 
        echo "Setting temporary ACLs ..."
 
        echo -e " \
dn: olcDatabase={1}$LDAPDB,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write by * none
        " | ldapmodify -Y EXTERNAL -H ldapi:///
 
	echo "Adding ppolicy-scheme ..."
 
	ldapadd -Q -Y EXTERNAL -H ldapi:/// -f $PPOLICY_FILE
 
        echo "Activating ppolicy-module ..."
 
        echo -e " \
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: ppolicy.la
        " | ldapmodify -Y EXTERNAL -H ldapi:///
 
	/etc/init.d/slapd restart
 
        echo "Generating ppolicy-context ..."
 
        echo -e " \
dn: ou=policies,dc=$DOMAIN,dc=$TLD
objectClass: organizationalUnit
objectClass: top
ou: policies
        " | ldapadd -Q -Y EXTERNAL -H ldapi:///
 
        echo "Setting default policy ..."
 
        echo -e " \
dn: cn=default,ou=policies,dc=$DOMAIN,dc=$TLD
objectClass: top
objectClass: person
objectClass: pwdPolicy
cn: default
sn: default
pwdAllowUserChange: TRUE
# this don't work though documentation says it should
# pwdAttribute: userPassword
# So we use OID for workaround
pwdAttribute: 2.5.4.35
pwdInhistory: 3
pwdLockout: TRUE
pwdLockoutDuration: 1800
pwdMaxAge: 0
pwdMaxFailure: 3
pwdMinLength: 6
pwdMustChange: TRUE
pwdSafeModify: TRUE
# comment for syntax reason (trailing TAB here leads to syntax error when importing)
        " | ldapadd -Q -Y EXTERNAL -H ldapi:///
 
        echo "Generating overlay ..."
 
        echo -e " \
dn: olcOverlay=ppolicy,olcDatabase={1}$LDAPDB,cn=config
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=default,ou=policies,dc=$DOMAIN,dc=$TLD
olcPPolicyHashCleartext: FALSE
olcPPolicyUseLockout: FALSE
olcPPolicyForwardUpdates: FALSE
# comment for syntax reason (trailing TAB here leads to syntax error when importing)
        " | ldapadd -Q -Y EXTERNAL -H ldapi:///
 
}
 
# configure_tls()
# does:
#	generating of cert-authority
#	generating of certs for slapd
#	configuring of slapd for using tls
 
configure_tls() {
 
	echo
 
}
 
# toggle_acl()
# sets ACL back to save values after install
 
toggle_acl() {
 
	echo
 
}
 
# debug_output()
# dumps to file:
#	debconf values for slapd
#	complete Root-DN
#	complete cn=config
 
debug_output() {
 
	debconf-show slapd > $LOGFILE
	slapcat >> $LOGFILE
	ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config >> $LOGFILE
 
}
 
 
# cleanldap()
# Removes all of openLDAP
 
cleanldap() {
 
	apt-get remove -y slapd ldap-utils --purge
 
}
 
# main
 
basesetup $PASSWORD $HOSTNAME $LDAPDB
make_index
configure_policy
debug_output
cleanldap

Eigent­lich muss man oben nur ein ande­res Pass­wort set­zen und am Ende das „cleanldap” aus­kom­men­tie­ren. Da das Gan­ze noch „Work in Pro­gress” ist, feh­len noch eini­ge Funk­tio­nen:

  1. Kon­fi­gu­ra­ti­on für TLS
  2. Inte­gra­ti­on des fre­e­ra­di­us-Sche­mas
  3. Ver­nünf­ti­ge ACLs nach Abschluss der Instal­la­ti­on set­zen

Ja, ich ste­he in die­sem Jahr ziem­lich auf LDAP

Verzeichnisdienste

Weit­ge­hend unbe­merkt von uns Nor­mal­sterb­li­chen ver­rich­ten unzäh­li­ge Ver­zeich­nis­diens­te ihr Werk in ver­schie­de­nen Insti­tu­tio­nen. Wenn man Netz­wer­ke etwas wei­ter denkt als auf einen Stand­ort bezo­gen, kommt man um die­ses The­ma irgend­wann nicht mehr her­um. Ver­zeich­nis­diens­te gel­ten als sper­rig, nur für Ein­ge­weih­te zu admi­nis­trie­ren und haben immer die Aura des Mys­te­riö­sen um sich. Das stimmt übri­gens bei­des. Gleich­zei­tig sind Ver­zeich­nis­diens­te das zen­tra­le Ele­ment, um Zugän­ge, Grup­pen­zu­ge­hö­rig­kei­ten, Rech­te u.v.m. zu mana­gen. Bei Micro­soft heißt der Dienst Active­Di­rec­to­ry (AD), bei uni­xo­iden Betriebs­sys­te­men openLDAP. Die Spra­che (das Pro­to­koll), mit dem Ver­zeich­nis­diens­te ange­spro­chen wer­den, nennt sich LDAP.

Bei­spiel­vi­si­on:

Die Schul­se­kre­tä­rin gibt einen neu­en Schü­ler in die Schul­ver­wal­tung ein, der die Schu­le gewech­selt hat. Gleich­zei­tig sind damit ein Account auf dem Schul­ser­ver, eine E-Mail­adres­se und ein WLAN-Zugang ange­legt und sämt­li­che Zugän­ge und Zugriffs­be­rech­ti­gun­gen auf der alten Schu­le deak­ti­viert. Selbst­re­dend ist unser Schü­ler damit auch gleich den rich­ti­gen Grup­pen auf der Lern­platt­form der Schu­le zuge­wie­sen, in die Schul­sta­tis­tik ein­ge­pflegt und in der Lehr­mit­tel­ver­wal­tung mit den kor­rek­ten Attri­bu­ten ver­se­hen (z.B. Geschwis­ter­er­mä­ßi­gung bei der Schul­buch­aus­lei­he).

Das ist kei­ne Zau­be­rei und erst recht kein Daten­schutz­gau, son­dern der Grund, war­um Ver­zeich­nis­diens­te erfun­den wor­den sind. Sche­ma­tisch sieht so etwas so aus:

verzeichnisdienst

Wir fan­gen mal unten an: In einem Ver­zeich­nis­dienst sind ver­schie­de­ne Insti­tu­tio­nen ange­legt, die z.B. jeweils Nut­zer, Grup­pen und z.B. Gerä­te besit­zen. Wir schau­en uns mal einen Nut­zer­ein­trag an:

---------------------------------------------------------------------
| Objektname: Maik Riecken => Nutzer => Schule => Verzeichnisdienst |
|-------------------------------------------------------------------|
| Attribute:  Name                                                  |
|             Nachname                                              |
|             Benutzername                                          |
|             E-Mailadresse                                         |
|             Passwort (verschlüsselt)                              |
---------------------------------------------------------------------

Maik, der zur Insti­tu­ti­on „Schu­le” gehört, möch­te jetzt ger­ne mit sei­nem Han­dy im Rat­haus sur­fen. Ein Acces­s­point im Rat­haus muss jetzt prü­fen, ob Maik das auch darf. Dazu fragt er Maik erst­mal nach sei­nem Nut­zer­na­men und sei­nem Pass­wort und gibt bei­des an einen Ver­mitt­ler­dienst wei­ter — im WLAN-Bereich über einen wie­der­um ver­schlüs­sel­ten Weg oft an einen soge­nann­ten RADI­US-Ser­ver. Der RADI­US-Ser­ver lei­tet die Anfra­ge an den Ver­zeich­nis­dienst wei­ter und bekommt eine 1 oder eine 0 zur Ant­wort. Ist die Ant­wort 1, bekommt Maik jetzt Zugriff auf das Inter­net, ist sie 0, muss er lei­der wei­ter UMTS oder LTE nut­zen. Der Witz an der Sache ist, dass außer sehr weni­gen und dar­über­hin­aus auch noch ver­schlüs­sel­ten Daten nur sehr wenig über das Netz geht (Daten­schutz).

Für die­se Auf­ga­be kann man auch theo­re­tisch eine Daten­bank wie MyS­QL nut­zen. In der Tat ern­tet man oft Stirn­run­zeln, wenn man Leu­ten vor­schlägt, auf einen Ver­zeich­nis­dienst umzu­stei­gen. Eine Daten­bank kann die glei­chen Auf­ga­ben erle­di­gen — aber:

  1. Für Ver­zeich­nis­diens­te exis­tie­ren stan­dar­di­sier­te Sche­ma­ta für Objekt­klas­sen
  2. Für Ver­zeich­nis­diens­te exis­tie­ren genau wegen die­ser Sche­ma­ta in sehr vie­len Pro­duk­ten stan­dar­di­sier­te Schnitt­stel­len (Mood­le, Own­cloud, Wor­d­Press, Dru­pal, Joom­la! — fast jedes grö­ße­re Pro­jekt unter­stützt LDAP und damit Sin­gle-Sign-On = ein Pass­wort für alles). Ich kann platt­form­über­grei­fend jeden Dienst mit LDAP betrei­ben, der das LDAP-Pro­to­koll unter­stützt. Sogar Apple.
  3. Die Orga­ni­sa­ti­on von Insti­tu­tio­nen in hier­ar­chi­schen Bäu­men ermög­licht eine sehr gra­nu­la­re und stan­dar­di­sier­te Rech­te­zu­wei­sung, z.B. bekom­men Poli­zei und Schul­trä­ger dann nur die Daten, die das jewei­li­ge Lan­des­da­ten­schutz­recht vor­sieht — dafür aber jeweils immer tages­ak­tu­ell. Auch die belieb­ten Schul­sta­tis­ti­ken gehö­ren bei ent­spre­chen­der Imple­men­ta­ti­on der Ver­gan­gen­heit an und lie­gen eben­falls tages­ak­tu­ell vor. Nie­mand kann mehr „ein­fach so” Lis­ten mit Daten erstel­len, die dem Gebot der Daten­spar­sam­keit nicht genü­gen — weil es kei­nen Export mehr gibt und der auch nicht not­wen­dig ist.
  4. Das Pro­to­koll ist „light­weight” und damit äußerst per­for­mant
  5. Wenn man den Ver­zeich­nis­dienst als Haupt­da­ten­quel­le imple­men­tiert, bekommt man über ihn eine Ver­net­zung ver­schie­de­ner Appli­ka­tio­nen und Insti­tu­tio­nen ganz auto­ma­tisch.

Die Lage in Deutsch­land sieht lei­der so aus:

  1. Es gibt kaum Schul­ver­wal­tungs­soft­ware, die das kann.
  2. Es ist unklar, wo und von wem ein Ver­zeich­nis­dienst betrie­ben wer­den kann.
  3. Durch 16 unter­schied­li­che Daten­schutz- bzw. Schul­ge­set­ze in den Bun­des­län­dern ist es für Anbie­ter nahe­zu unmög­lich, eine Lösung anzu­bie­ten, die sich wirt­schaft­lich abbil­den lässt.
  4. Ein Ver­zeich­nis­dienst gehört m.E. gene­rell nicht in die Hand eines Anbie­ters, son­dern ist eine öffent­li­che Auf­ga­be — gera­de wegen der Kumu­la­ti­on der ver­schie­dens­ten Daten an einer Stel­le — also z.B. in ein kom­mu­na­les oder Lan­des­re­chen­zen­trum.
  5. Die wenigs­ten Anbie­ter sind dar­an inter­es­siert, stan­dar­di­sier­te Schnitt­stel­len anzu­bie­ten (oder las­sen sich das teu­erst ver­gü­ten), weil pro­prie­tä­re Daten­hal­tung immer ein will­kom­me­nes Instru­ment der Kun­den­bin­dung ist — man muss sich nur mal anschau­en, wel­cher Mist (z.B. SCORM in mei­nen Augen) in der Bil­dungs­in­dus­trie zum „Indus­trie­aus­stausch­stan­dard” erklärt wird — obwohl es gut doku­men­tier­te und stan­dar­di­sier­te For­ma­te und Pro­to­kol­le gibt.
  6. Päd­ago­gi­sche und Ver­wal­tungs­an­for­de­run­gen sind nicht immer klar zu tren­nen. Noten gehö­ren für mich z.B. nicht in einen zen­tral auf­ge­stell­ten Dienst.

Wer macht schon sowas in Ansät­zen?

Uni­ven­ti­on ist sehr weit auf die­sem Feld und betreut z.B. die Schul­ver­wal­tung in Bre­men. Die Schles­wig-Hol­stei­ner den­ken Dank des ULD und der Pira­ten­frak­ti­on auch stark in die­se Rich­tung. Ich selbst ver­su­che, die­se Lösung immer gleich mit im Blick für die Bera­tung und Kon­zep­ti­on von Netz­wer­ken zu haben. Sie müs­sen es jetzt heu­te nicht kön­nen, aber spä­ter die Mög­lich­keit dafür bie­ten.

 

 

IT-Konzept (technisch)

Wir über­ar­bei­ten nach den Feri­en unse­re kom­plet­te IT-Struk­tur. Ich habe in den letz­ten Tagen dar­über viel nach­ge­dacht und mit Vir­tu­al­box flei­ßig klei­ne, vir­tua­li­sier­te Net­ze gebaut. Ziel war es, etwas zu ersin­nen, was einer­seits tech­nisch für eine Lehr­kraft beherrsch­bar ist, ander­seits mög­lichst vie­le didak­ti­sche Mög­lich­kei­ten eröff­net. Zudem spie­len natür­lich auch Wirt­schaft­lich­keits­über­le­gun­gen und öko­lo­gi­sche Aspek­te eine Rol­le (man muss es ja dem Schul­trä­ger auch ver­mit­teln kön­nen). Her­aus­ge­kom­men ist das hier:

Kern ist das LTSP-Pro­jekt. Ein schö­ner Eins­tig in das grund­sätz­li­che Prin­zip fin­det sich auf Wiki­pe­dia: Man degra­diert sämt­li­che Schü­ler­rech­ner zu rei­nen Anzei­ge­ge­rä­ten. Fest­plat­ten und nicht erfor­der­li­chen RAM reißt man her­aus, ver­ram­melt das BIOS mit einem Pass­wort und lässt die Kis­ten per PXE vom LTSP-Ser­ver boo­ten — das muss pro Tag ein­mal gesche­hen und dau­ert kür­zer als ein WinXP-Start (Was nicht viel hei­ßen will…).

Damit ent­fällt sämt­li­che Turn­schuh­ad­mi­nis­tra­ti­on und auch die emp­find­lichs­ten Kom­po­nen­ten von PCs sind eli­mi­niert. Soft­ware muss nur noch auf einem Gerät instal­liert wer­den und ist dann auf allen Cli­ents ver­füg­bar. Als Anzei­ge­ge­rät ist ein Pen­ti­um I mit 133Mhz und halb­wegs brauch­ba­rer Gra­fik­kar­te aus­rei­chend. Schön wären natür­lich ech­te Thin­Cli­ents, am bes­ten in ein LCD-Panel inte­griert — so dürf­te es lei­se und kühl im PC-Raum wer­den. Alle Anwen­dun­gen lau­fen auf einem zen­tra­len Ser­ver, der natür­lich ein Ser­ver und kein Spiel­zeug sein muss (Hexa­core, 32GB RAM, RAID10, red­un­dan­te Netz­tei­le — die 4000-Euro-Klas­se halt). Sound kann man bidi­rek­tio­nal an die Cli­ents wei­ter­rei­chen, mit Video klappt es auch, wenn die Anbin­dung stimmt und man auf HD-Mate­ri­al ver­zich­ten mag.

Der Ser­ver kann aller­dings nur Linux (Ubun­tu). Damit kann man sur­fen, schrei­ben, Audio bear­bei­ten u.v.m. — das Wich­tigs­te halt. Die meis­ten Diens­te ver­la­gern sich eh in die Cloud. Es ist nicht schwer, GNOME einen Win­dows7- oder XP-Look auf­zu­zwin­gen — aber das hal­te ich für eine Art Betrug. Die meis­ten „Win­dowsia­ner” kom­men mit mei­nem Net­book erstaun­lich gut klar und den Desk­top kann man ja vor­struk­tu­rie­ren mit net­ten, ein­fa­chen Icons. Mit WINE habe ich bis­her zusätz­lich fast alle Soft­ware zum Lau­fen gebracht, die auf unse­ren jet­zi­gen WinXP-Cli­ents vor sich hin­ve­ge­tiert. Hier sind vor allem mit den Her­stel­lern lizenz­recht­li­che Fra­gen zu klä­ren, da es WINE recht egal ist, ob eine Wor­d2010-Instanz 25x von ver­schie­de­nen Nut­zern gestar­tet wird…

Datei­en las­sen sich auf USB-Medi­en spei­chern, die LTSP von den Cli­ents durch­ge­reicht bekommt, oder man nutzt NFS (ist bei LTSP lei­der so) mit fes­tem Quo­ta für jeden Nut­zer­ac­count (gefühlt 1GB, dann wür­de bei uns noch die 2GB-Plat­te für die gan­ze Schul­ge­mein­schaft bei Voll­aus­las­tung rei­chen).

Die Nut­zer­ver­wal­tung mache ich tra­di­tio­nell über LDAP. Dann kann man den Pro­xy dar­über mit Anmel­dung lau­fen las­sen. Außer­dem lässt sich das Ding so schön per Skript mit einem kas­trier­ten Export der Schü­ler­da­ten­bank füt­tern (inkl. Ord­nung nach Klas­sen) — das Skript gibt es schon für die Anbin­dung unse­res Web­an­ge­bots. Das ist übri­gens der här­tes­te Teil der Geschich­te. LDAP hat dafür aber auch den Vor­teil, dass es mit RADIUS spricht — ein net­tes Spiel­zeug (man kann in LTSP auch die Cli­ent­kon­fi­gu­ra­ti­on dar­über machen). So mel­det man sich per WLAN in der Schu­le mit den gewohn­ten Netz­werk-Log­in­da­ten an, jeder WLAN-Rou­ter kriegt sein eige­nes Netz, (dann gehen die IPs so schnell nicht aus) man kann fest­le­gen, wer sich wann anmel­den darf (abends braucht man kein Netz, oder?) usw.. Dann noch ein AdHoc-Netz, um das gan­ze Schul­ge­län­de zu bestrah­len… (träum…). Aber das wird eh die Zukunft — mehr als der per­sön­li­che Desk­top auf dem Schul­ser­ver.

Eini­ge Din­ge gehen par­tout nicht unter Linux. Dafür wür­de ich ger­ne einen WindowsServer2008RC2 hin­stel­len, der über 25 Accounts ver­fügt. Bei der Anmel­dung am LTSP kann man sich dann ent­schei­den, ob man Win­dows möch­te oder nicht und sowohl der Ser­ver als auch die Soft­ware­li­zen­zen sind bei 25 Cli­ents noch über­schau­bar teu­er. Ob man nun einen RDesk­top oder die die Aus­ga­be eines XSer­vers an die Cli­ents wei­ter­lei­tet, ist wohl egal. Viel­leicht lässt sich der Win­dows­Ser­ver sogar vir­tua­li­sie­ren, wenn man den LTSP-Ser­ver noch dicker… .

Das Schö­ne an die­sem Kon­zept ist sei­ne Modu­la­ri­tät: Man kann klein anfan­gen und sich dann stei­gern — allein der LTSP-Ser­ver mit sei­ner Hard­ware, den braucht man schon. Die Cli­ents sind ja schon da. Wenn man völ­lig bekloppt sein will, ver­legt man alle jet­zi­gen Cli­ents in vir­tu­el­le Maschi­nen und nutzt deren Lizen­zen wei­ter.

Was kos­tet das Gan­ze? Im Voll­aus­bau schät­ze ich eine Sum­me von 10000,- Euro (ohne Cli­ents und wenn man es selbst macht: LTSP ist in Ubun­tu sehr gut vor­kon­fi­gu­riert und recht schnell auf­ge­setzt). Wenn man 50 Cli­ents erneu­ern oder durch Note­books erset­zen möch­te, darf jedes nur 200,- Euro kos­ten, damit es „bil­li­ger” wird. Für den Anfang tut es auch nur der LTSP-Ser­ver und der VLAN-fähi­ge Switch — dann kommt man wohl mit der Hälf­te hin und hat recht aktu­el­le, leicht wart­ba­re Sys­te­me.

Evaluationssystem: Kopplung des LDAP mit Moodle

Vor­aus­ge­setzt wird, dass Mood­le auf dem glei­chen Ser­ver wir der ein­ge­rich­te­te und mit Daten befüll­te slapd läuft. Sche­ma­tisch ist die­se Anlei­tung ganz all­ge­mein ver­wend­bar, um Mood­le ein einen openLDAP-Ser­ver zu kop­peln. Die „Bul­ku­pload­leu­te” brau­chen die­se Anlei­tung nicht…

Zunächst ein­mal müs­sen wir sicher­stel­len, dass die Authen­ti­fi­zi­erng über openLDAP über­haupt in Mood­le akti­viert ist. Dazu kli­cken Sie im Admi­nis­tra­ti­ons­me­nu

Web­site-Admi­nis­tra­ti­on => Nutzer/innen => Authen­ti­fi­zie­rung => Über­sicht

auf das geschlos­se­ne Auge bei „LDAP-Ser­ver”, so es denn noch geschlos­sen ist. Durch das Akti­vie­ren der LDAP-Aurhen­ti­fi­zie­rung blei­ben übri­gens alle übri­gen Authen­ti­fi­zie­rungs­me­tho­den funk­ti­ons­fä­hig. Jetzt erscheint im Menu

Web­site-Admi­nis­tra­ti­on => Authen­ti­fi­zie­rung

ein neu­er Ein­trag mit dem Namen „LDAP-Ser­ver”, den es anzu­kli­cken gilt. Es folgt eine umfang­rei­che Kon­fi­gu­ra­ti­ons­sei­te. Ich hang­le mich mich jetzt nur durch die Fel­der hin­durch, die geän­dert oder mit Daten befüllt wer­den müs­sen. Alle ande­ren Fel­der blei­ben jung­fräu­lich. Es wer­den fol­gen­de Anga­ben aus dem vor­he­ri­gen Schritt benö­tigt:

  • Wert der Varia­blen $orga­ni­sa­ti­on (eva­lua­ti­on)
  • Wert der Varia­blen $domain (schul­do­main)
  • Wert der Varia­blen $tld (tld)

Ich nen­ne zunächst das Kon­fi­gu­ra­ti­ons­feld gefolgt von einem Pfeil (=>), hin­ter dem der ein­zu­tra­gen­de Inhalt steht.

Wei­ter­le­sen

LDAP: Schulfotoseitenzugriff auf Schulöffentlichkeit beschränken

Bil­der von Schü­le­rin­nen und Schü­lern sind oft ein Pro­blem — vor allem dann, wenn man sie ver­öf­fent­lich und das viel­leicht sogar noch so tut, dass Namen einem bestimm­ten Foto zuge­ord­net wer­den kön­nen. In eini­gen Bun­des­län­dern ist das sogar strikt ver­bo­ten.

Auch hier kann LDAP abmil­dern: Man nutzt ein Schul-LDAP als „Zapf­stel­le” für eine HTTP-basier­te Authen­ti­fi­zie­rung, die vie­len bestimmt bekannt ist (.htac­cess).

Mit mei­nem Lieb­lings­web­ser­ver (ligh­ty) geht das sehr leicht — das auth-Modul muss aller­dings akti­viert sein.

server.modules                += ( „mod_auth” )

auth.backend                 = „ldap”

auth.backend.ldap.hostname   = „127.0.0.1”
auth.backend.ldap.base-dn    = „ou=ldapbaum,dc=foo,dc=tld”
auth.backend.ldap.filter     = „(uid=$)”

$HTTP[„host”] == „subdomain.fuer.fotos” {
auth.require = (   „” => (
„method”  => „basic”,
„realm”   => „Anmel­dung bit­te mit Schulo­gin und -pass­wort fuer die Sei­te „,
„requi­re” => „valid-user”
)
)
}

… und schon ist nach einem /etc/init.d/lighttpd force-rel­oad der Zugriff auf die Sei­te http://subdomain.fuer.fotos mit allen Unter­sei­ten nicht mehr ohne Anmel­dung mög­lich, wenn lokal der LDAP-Ser­ver oder eine Kopie bzw. Repli­ka­ti­on davon mit­läuft. So kann sich der der poten­ti­el­le Kin­der­schän­der nicht mehr ohne Wei­te­res sein nächs­tes Opfer anhand des letz­ten Schwimm­wett­be­werbs­bil­des aus­wäh­len — es sei denn, er kommt selbst von der Schu­le (zuge­ge­be­ner­ma­ßen eine sehr düs­te­re Opti­on). Inge­samt nett und sim­pel.

Wenn man das jetzt noch mit Web­DAV und Mood­le kom­bi­niert, kann man sogar ein­zel­nen Lehr­kräf­ten Schreib­rech­te in bestimm­ten Mood­le­ord­nern ein­räu­men. Da Ligh­ty regu­lä­re Aus­drü­cke unter­stützt, müss­te das sogar recht schmerz­frei gehen. Aber das ist eine ande­re Geschich­te…

1 2