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 „cle­anldap“ aus­kom­men­tie­ren. Da das Gan­ze noch „Work in Pro­gress“ ist, feh­len noch eini­ge Funktionen:

  1. Kon­fi­gu­ra­ti­on für TLS
  2. Inte­gra­ti­on des freeradius-Schemas
  3. Ver­nünf­ti­ge ACLs nach Abschluss der Instal­la­ti­on setzen

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

Etherpad selbst hosten…

… ist mit Ubun­tu sehr, sehr ein­fach – zwei Lakritz­schne­cken lang:

1. Schritt

In die /etc/apt/sources.list muss das Part­ner­re­po­si­to­ry von Cano­ni­cal ein­ge­tra­gen werden:

deb http://archive.canonical.com/ lucid partner

Ein „apt-get update“ bringt die Daten­bank von APT auf den neu­es­ten Stand.

2. Schritt

Das JDK von Sun muss instal­liert wer­den – openjdk will mit Ether­pad nicht.

apt-get install sun-java6-jdk

3. Schritt

Das für die Archi­tek­tur pas­sen­de „*.deb“-Paket von Etherpad.org muss manu­ell her­un­ter­ge­la­den wer­den, da die bereit­ge­stell­te Quel­le für APT von sel­bi­gem nicht akzep­tiert wird. Bei mir ist das Paket für die amd64-Archi­tek­tur das Richtige.

4. Schritt

Die­ses Paket mit dpkg installieren:

dpkg ‑i etherpad_1.1_all.deb (genau­er Name kann varieren)

5. Schritt

Der Pfad im Init-Script on Ether­pad pass­te bei mir nicht. Ich musste

DAEMON_BASE=“/usr/share/etherpad“

set­zen, bevor ein

/etc/init.d/etherpad start

unter mei­ner Haupt­do­main auf Port 9000 Ether­pad präsentierte.

In sol­chen Momen­ten tun mir alle leid, die kei­ne (V)Server admi­nis­trie­ren kön­nen. Ether­pad bedient sich sehr intui­tiv und hin­ter einem HTTP_AUTH mit LDAP-Backend kann mei­ne gan­ze Schu­le jetzt bald kol­la­bo­ra­tiv mit Tex­ten arbei­ten – ohne Tan­te Goog­le. Cool, cool… Viel­leicht bekom­me ich das LDAP-Auth­plug­in noch eincompiliert…

lighttpd und PositiveSSL-Certs

Ich habe gera­de die lite-Ver­si­on der auf http://www.psw.net feil­ge­bo­te­nen SSL-Certs aus­pro­biert. Es gibt kei­ne direk­te Anlei­tung für die Instal­la­ti­on des Zer­ti­fi­ka­tes inner­halb von lighttpd (ligh­ty) und die in der Bestä­ti­gungs­mail ange­ge­be­nen Links sind mei­ner Erfah­rung nach bes­ten­falls irreführend.

Der Bestell­pro­zess

Zunächst ist ein Ser­ver­key für die Domain www.domain.tld mit Open­S­SL zu erstel­len. Im wah­ren Leben ist natür­lich der Aus­druck „www_domain_tld“ durch eine eige­ne, rea­le Domain zu erset­zen. Das geht auf der Kom­man­do­zei­le z.B. durch Ein­ga­be von:

open­s­sl req ‑new ‑nodes ‑key­out www_domain_tld.key ‑out www_domain_tld.csr

Dabei wer­den eini­ge Infor­ma­tio­nen abge­fragt, die man mit sinn­vol­len Daten füt­tern soll­te. Immens wich­tig ist die Eingabe

Com­mon Name (eg, YOUR name) []: www.domain.tld

Nur dann schützt spä­ter das aus­ge­stell­te Zer­ti­fi­kat die Domains http://domain.tld und http://www.domain.tld (das ist bei der ver­wen­de­ten CA Posi­ti­ve­SSL auto­ma­tisch so).

Für den Bestell­pro­zess wird der Inhalt der Datei www_domain_tld.csr benö­tigt. Für die Instal­la­ti­on des Zer­ti­fi­ka­tes brau­chen wir spä­ter noch die Datei www_domain_tld.key.

Wei­ter­le­sen

Evaluationssystem: Einrichtung und Konfiguration von openLDAP

openLDAP wird uns als Backend zum Able­gen von Zufalls-IDs und deren Ver­wal­tung die­nen. Die Instal­la­ti­on auf einem debian­ba­sier­ten Sys­tem ist denk­bar einfach.

Wer kei­nen eige­nen Ser­ver oder Vser­ver zur Ver­fü­gung hat, z.B. also „nur“ hos­tet, muss auf die Bul­ku­pload­al­ter­na­ti­ve aus­wei­chen und kann die­sen Teil überspringen!

Log­gen sie sich zunächst auf der Kon­so­le ihres Linux­sys­tems ein und ver­schaf­fen Sie sich Root­rech­te. Ein

apt-get install slapd

führt Sie zu fol­gen­der Dialog-Ausgabe:

Es wird ledig­lich ein Pass­wort für den Admi­nis­tra­tor ver­langt. Alle übri­gen Anga­ben ermit­telt der Instal­ler des Pake­tes aus Ihren Linux Sys­tem selbst – meist kei­ne glück­li­che Lösung. Wir wer­den des Paket also noch nach­träg­lich konfigurieren.

Wei­ter­le­sen