OpenLDAP automatisch installieren und einrichten

Ich habe heute ein Script geschrieben, welches OpenLDAP auf Debiansystemen automatisch installieren und auch gleich für ppolicy konfigurieren kann. Wer sowas schonmal von Hand gemacht hat, weiß um die Schwierigkeiten. Es sollte auf den meisten Debianderivaten funktionieren (entwickelt habe ich auf stretch), ist aber leicht anpassbar, da ich alle Einzelschritte in Funktionen 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

Eigentlich muss man oben nur ein anderes Passwort setzen und am Ende das „cleanldap“ auskommentieren. Da das Ganze noch „Work in Progress“ ist, fehlen noch einige Funktionen:

  1. Konfiguration für TLS
  2. Integration des freeradius-Schemas
  3. Vernünftige ACLs nach Abschluss der Installation setzen

Ja, ich stehe in diesem Jahr ziemlich auf LDAP …

Neues Jahr, neue Zielgruppen

Dieses Blog ist ja relativ breit aufgestellt, was die Themen angeht. Erstmals habe ich auch etwas an anderer Stelle veröffentlicht und dabei sehr viel darüber gelernt, wie man Leserinnen und Leser nicht vergrault – da bietet so mancher Artikel hier doch einigen Optimierungsbedarf.

WordPress hat den entscheidenen Vorteil, dass es relativ suchmaschinenfreundlich aufgestellt ist. Da hier mittlerweile einiges an Inhalten vorhanden ist, werde ich demnächst ein paar Dinge verändern – für die treuen Feedleser sollte dabei alles beim Alten bleiben.

  1. Die Seite selbst wird sich mehr in Richtung eines Onlinemagazins entwickeln. Viele Artikel aus den vergangenen Jahren kann ich so etwas prominenter präsentieren – man sieht schon etwas im Header der Seite oder als Widget. Da werde ich aber noch viel experimentieren. Vielleicht kann ich den einen oder anderen so etwas länger auf der Seite halten.
  2. Ich möchte versuchen im Zuge von Punkt 1 mehr mit Bildern zu arbeiten. Das lockert die Texte ggf. etwas auf und macht es dem Lesenden u.U. leichter, dem teilweise doch recht minimalistischen Kauderwelsch zu folgen. Ich werde dazu Bilder unter CC0-Lizenz nutzen, etwa von Pixabay oder Jay Mantri.
  3. Ich werde meine Inhalte allesamt nach und nach hier im Blog zusammenziehen. Wundert euch also nicht, wenn hier demnächst auch viel Technikkram aus meinen Administrationserfahrung und der Arduino-AG hier hineindiffundiert. Wenn ich das Veröffentlichungsdatum frisiere, sollte da eigentlich nicht so viel in den Feed hineinwirken.
  4. Uneins bin ich mir noch, ob ich mich über Twitter hinaus in sozialen Netzwerken engagieren sollte. Mich machen die meisten Sachen und Diskussionen dort nicht besonders glücklich. Meine Twitterwelt besteht ja fast ausschließlich aus der Edu-Welt-Filterblase, die ich sehr bereichernd finde, die aber auch eine recht geschlossene ist.

Dieses Blog bekommt seine meisten Besucher über Suchmaschinen, naja, eigentlich über eine Suchmaschine. Diese „belohnt“ Seiten mit Inhalten mit hohen Platzierungen. Jeder neue Inhalt profitiert damit von den bestehenden, ist also u.U. in einem Wiki wie bisher nicht gut aufgehoben.

Ich weiß, dass es nicht „statthaft“ ist, so zu denken und zu schreiben – Geld gibt es aber keines für dieses Blog und Kommentare oder direkte Rückmeldungen auch eher wenig, d.h. ich möchte gerne schauen, wie ich motiviert bei der Sache bleiben kann und da bleiben neben den altruistischen, idealisierten Ansätzen eigentlich nur nackte Zahlen.

 

 

Mailmanagement mit osTicket

Seit langem nervt es mich, dass ich keine klare Trennung zwischen der Bearbeitung von E-Mails und sonstigen Aufgaben  hinbekomme. Mir schreiben viele Menschen E-Mails: Meine Kolleginnen und Kollegen bei Problemen mit unserer Schulserverlösung, Menschen, mit denen ich im Rahmen der Medienberatung zu tun habe. Oft geht es dabei um Terminvereinbarungen, technische Probleme, Erstellung von Ausstattungsvorschlägen, also klassische Themen, die man dem „Supportbereich“ zuordnen kann. Da geht viel durcheinander, sodass ich das eine oder andere auch schon einmal vergesse. Zum Glück gibt es ein Stück Technik, welches genau für diese Anforderung erschaffen wurde, denn Firmen haben im Support genau die gleichen Herausforderungen: Das Ticketsystem. Ich setze dafür das kostenlose Opensource-System  osTicket ein (hier gibt es eine Demo – Login: demo / Passwort: anmelden ).

logo

osTicket sollte auf fast jedem Webspace problemlos laufen, der folgende Bedingungen erfüllt:

  • MySQL-Unterstützung
  • PHP ab Version 5.3
  • PHP IMAP – Modul
  • imap-fähiger E-Mailaccount mit der Berechtigung, eigene Ordner anzulegen

Was ändert sich?

osTicket macht eigentlich technisch genau das, was ein beliebiges E-Mailprogramm wie Outlook oder Thunderbird tut: Es holt die Mails eines Kontos per imap ab, schreibt diese jedoch in eine Datenbank. Jede neue Mail erhält eine Ticket-ID, die automatisch mit in die Subject-Zeile geschrieben wird, wenn ich jemandem antworte. Antwortet mir mein Gegenüber auf diese Mail, erkennt osTicket anhand der Ticket-ID, zu welchem Kommunikationsvorgang die Antwort gehört und weist diesen automatisch zu. Ein Kommunikationsvorgang heißt „Ticket“. Das ist erstmal alles.

Hä? Und wo ist da jetzt der Unterschied zu vorher?

Bleibt ein Ticket zu lange liegen (bei mir sind es drei Tage), schreibt osTicket Jammermails und priorisiert das jeweilige Ticket, indem es den Kommunikationsprozess in einer Liste nach oben schiebt. Erst wenn ich antworte, ist wieder für drei Tage Ruhe – ich brauche das.

Wenn ein Prozess abgeschlossen ist, kann ich das Ticket „schließen“. Natürlich wird eine Statistik erstellt (mein Dienstherr mag Statistiken als „Arbeitsnachweis“ und ich habe keinen Bock, die selbst zu erstellen) und ich kann geschlossene Tickets ganz einfach finden, z.B. mit einer Suche nach einem Namen oder einer E-Mailadresse. Damit weiß ich, was ich wie oft mit welcher Person verhackstückt habe.

Und sonst?

Ich kann vordefinierte Antworten anlegen – wenn eine Schule z.B. über unsere Medienzentrum eine Homepage hosten und betreuen lassen möchte, ähneln sich die Prozesse doch sehr. Die Antworten klicke ich einfach in die Mail hinein.

Auch für telefonische oder mündliche Anfragen kann ich selbst Tickets eröffnen. Da alle Prozesse in osTicket mehrbenutzerfähig sind, wüssten z.B. auch Kolleginnen und Kollegen von mir, wo ich gerade stehe.

Wer es mag, kann osTicket auch mit Android und Co. über eine App managen. Das ist für mich und meinen Workflow aber eher ein Nachteil. Ich setze mich lieber gezielt 1-2x am Tag an einen Rechner und arbeite den Kram dann konzentriert ab.

Außerhalb meiner Arbeitszeit gibt es eine höfliche, aber bestimmte Mail, die den Empfang bestätigt, aber dann auf z.B. Montag vertröstet.

Und nicht zuletzt: Das Backup einer MySQL-Datenbank ist auch viel performanter als dasjenige tausender Fitzeldateien auf der Festplatte.

Und der E-Mailclient zu Hause?

osTicket löscht normalerweise empfangende Mails auf dem Server, kann aber diese auch in einen imap-Unterordner verschieben. Wenn sich eine wirklich private Mail auf einen Dienstaccount verirrt, kann ich sie immer noch aus dem Archivordner heraus ganz normal ohne Ticket-ID persönlich mit der privaten Mailadresse beantworten.

 

Kein Tablet! Oder: Warum nutze ich immer noch Laptop und Desktop?

Die Idee zu diesem Beitrag habe ich bei Herrn Larbig bekommen, der darüber schreibt, warum das Tablet für ihn ein immer wichtigeres Werkzeug geworden ist. Er kommt dabei beeindruckenderweise Weise ohne Abwertung anderer Geräte aus. Ob ich das beim Tablet schaffen werde, weiß ich so nicht :o)…

Ich bin mit Tablets nie warm geworden – das verhindert aber nicht, dass ich für Schule und Unterricht diese Geräte beschaffe, sie auch schon verschenkt oder empfohlen habe und es es verhindert vor allem nicht, dass ich in von mir konzipierten Schulnetzwerken die besonderen Belange von Tablets mit berücksichtige. Nur für die didaktisch-methodische Arbeit mit den Geräten verweise ich dann auf meine in diesem Bereich wesentlich kompetenteren Kolleginnen und Kollegen.

Ich empfinde die Arbeit am Einzelplatz mit Programmen in kommunikativen(!) Situationen von Unterricht als antiquiert. Ob diese Programme jetzt Programme oder Apps heißen, macht für mich keinen großen Unterschied. Wesentlich für meine Arbeit mit digitalen Endgeräten ist der Austausch und die Zusammenarbeit. Dafür gibt es nach meinem Dafürhalten zurzeit viele hervorragende Webanwendungen, die lediglich einen Browser voraussetzen. Um nur als Plattform für einen Browser zu dienen, sind insbesondere Tablets von Markenherstellern viel zu teuer. Ich würde im Unterricht mit Tablets nicht anderes als Webanwendungen nutzen – gerade weil wir perspektivisch auf eine sehr heterogene Technikausstattung zusteuern (einen Browser haben alle Geräte, oder man kann zumindest – sogar bei Applegeräten –  einen brauchbaren nachinstallieren).

Jede Art, etwas Analoges digital machen zu wollen, finde ich überflüssig. Dazu gehört für mich z.B. das Abfotografieren von Schülerarbeiten mit anschließender Projektion und Korrektur am Beamer oder das Filmen von Experimenten (die mache ich lieber analog ohne Sinnesreduktion). Wenn ich so etwas vorhabe, arbeite ich eben digital mit z.B. digitalen Arbeitsblättern. Gibt es die nicht oder habe ich nicht die Zeit für die Erstellung, dann eben analog, nur analog. Ich habe eine tiefe Abneigung gegen Medienbrüche, weil die immer Zeit kosten und ineffektiv sind. Interaktive Tafelsysteme sind für mich Prototypen des Versuchs, ursprüngliche analoge Tätigkeit möglichst äquivalent digital abzubilden, vom Wartungsaufwand für diese teuren Ungetüme mal ganz abgesehen.

Wenn ich arbeite, mache ich viele Dinge gleichzeitig: Auf einem Server läuft vielleicht via SSH ein Installations- oder Updatescript. Im Hintergrund ein Onlinespiel, im nächsten Tab WordPress, in einem weiteren vielleicht irgendein Nachschlagewerk und darüberhinaus nebenbei eine Officeanwendung. Ich arbeite sehr viel mit der Zwischenablage und tausche Dateien mit anderen Systemen über verschiedene, meist verschlüsselte Protokolle aus. Auch muss ich mich oft via SSH durch lokale Firewalls durchtunneln, um in anderen Einrichtungen das Internet wie gewohnt nutzen zu können. Immer wieder ist auch ein Video zu transkodieren. Und dann setze ich auch privat grundsätzlich nur Gebrauchtware aus dem Businessbereich ein, was neben finanziellen auch ökologische Gründe hat – immerhin gibt es dafür noch viele günstige Ersatzteile.

Kurzum: Für meinen persönlichen Workflow ist ein fünf Jahre altes Businessnotebook mit neuem Akku genau richtig. Schon von der Rechenleistung her sehen auch aktuelle Tablets dagegen wenig Land. Ich hatte schon verschiedene Tablets über mehrere Wochen hier bei mir. Als Spielzeug auf dem Sofa waren sie für mich ganz brauchbar – aber dafür dann auch zu teuer. Völlig genervt war ich oft von den Fehlermeldungen, die wenig aufschlussreich waren. Dann musste man im Web suchen und fand mit Glück irgendeinen Touchweg, der das Problem zwar löste, aber keinen Hinweis auf die eigentliche Ursache gab. Was ich nicht vernünftig debuggen und damit verstehen kann, ist für mich unbrauchbar.

Viele Tablets speichern Daten irgendwie lokal oder auch nicht. Kurzum: Man weiß eigentlich nicht so genau, was mit Daten geschieht, die auf einem Tablet verarbeitet werden. Das ist aus Anwendersicht auch überhaupt nicht notwendig. Es verstößt aber massiv gegen Grundsätze des technischen oder juristischen Datenschutzes, z.B. gegen das Transparenzgebot. Deswegen lehnt unser Landesdatenschutzbeauftragter hier in Niedersachsen die Verwendung von Tablets zur Verarbeitung von personenbezogenen Daten auch ab (z.B. Teachertool o.ä.).

Tablets sind von der Konzeption her 1:1-Geräte. Daher sind 1:many-Lösungen mit diesen Geräten immer schwierig, weil sich auch diese Geräte nur mit einigem administrativen Aufwand so verrammeln lassen, dass einem beim nächsten Start eines von mehreren Personen genutzten Geräts nicht ein buntes Bouquet von individuellen Anpassungen entgegenleuchtet. Es gibt einige Ansätze mit MDM-Lösungen – keine reicht jedoch in meinen Augen an die Möglichkeiten heran, die ich unter Linux oder Windows habe.

Ich bereite gerade einen Kompromiss mit Windows 8.1-Pro-Tablets vor, die sich in die IT-Landschaft meiner Schule wohl ganz gut integrieren lassen werden.

Nicht zuletzt halte ich Tablets für Kompetenzverhinderungsmaschinen (für mich kann es keine Medienkompetenz ohne eine informatische Grundkompetenz geben), wenn es darum geht, die digitale Welt zu verstehen. Mir scheint das in Zeiten von #prism nicht so unwesentlich, auch technisches Wissen zum Netz der Netze stärker gesellschaftlich zu verankern. Biologie, Chemie und Physik lehren wir ja auch, obwohl man die Welt mittlerweile ja einfach „benutzen“ kann – was gerade wir in den westlichen Gesellschaften offenbar zunehmend gerne tun.

Natürlich schaue ich überhaupt nicht aus Anwendersicht auf Tablets, sondern eher administrativ. Deswegen ist meine Meinung dazu eben auch sehr speziell genau wie mein Anspruchsprofil. Zudem habe ich bis jetzt sehr wenig Unterrichtseinsatz mit Tablets gesehen, der mich didaktisch-methodisch überzeugt hätte. Ich denke mir den Unterricht dann immer abzüglich des „Motivationsfaktors durch ein digitales Gerät“ – für SuS werden solche Geräte in hoher Qualität bald alltäglich sein und sie werden dann irgendwann sehr genau erkennen, ob sich Paradigmen oder Geräte geändert haben.

1 2 3 15