Kategorie: Allgemein
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:
- Konfiguration für TLS
- Integration des freeradius-Schemas
- 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.
- 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.
- 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.
- 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.
- 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 ).
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.