Overlay autoca in der Praxis

Das Overlays autoca
Mit dem Overlay autoca wurde bei der neuen Version von OpenLDAP die Möglichkeit geschaffen, Zertifkate für Benutzer und Computer automatisch
erstellen zu lassen. Im LDAP-Baum kann entweder die automatisch erstellte CA mit self signed certificates genutzt werden, Sie können aber auch die
eigene CA einbinden.
Als Erweiterung zum Buch möchte ich hier das Overlay etwas genauer betrachten. Hier soll die OpenLDAP eigene CA durch eine eigene ersetzt werden.
Zusätzlich möchte ich Ihnen zeigen, wie Sie die im Binärformat abgelegten Zertifikate der Benutzer und Computer in .PEM-Dateien umwandeln können,
um die Zertifikate anschließend für andere Aufgaben nutzen zu können. Denkbar wäre so ein Nutzung für eine 802.1x Authentifizierung oder für den Einsatz mit einem Radius-Server.

Um das Overlay nutzen zu können, benötigen Sie als erstes ein Modul. Das Modul können Sie mit der folgenden LDIF-Datei laden:

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleload
olcModuleload: autoca.la

 

Jetzt muss noch das Overlay in die entsprechenden Datenbank eingebunden werden. Dazu können Sie die folgende LDIF-Datei nutzen:

dn: olcOverlay={2}autoca,olcDatabase={2}mdb,cn=config
objectClass: olcAutoCAConfig
objectClass: olcOverlayConfig
olcOverlay: {2}autoca
olcAutoCADays: 3652
olcAutoCAserverDays: 1826
olcAutoCAuserDays: 365

Nachdem Sie die Konfiguration eingespielt haben, können Sie mit dem folgenden Kommando das Zertifikat und den Key anzeigen lassen:
—————-
ldapsearch -x -D cn=admin,dc=example,dc=net -W -LLL dc=example ‚cACertificate;binary‘ ‚cAPrivateKey;binary‘
—————-
Wichtig ist, den Zugriff auf den Key hat nur der rootdn der Datenbank. Alle anderen Benutzer können sich lediglich das Zertifikat anzeigen lassen.

Um eigene Zertifikate nutzen zu können, ändern Sie die Attribute in der obersten Ebenen des LDAP (hier dc=example,dc=net). Die beiden Attribute die Sie
anpassen müssen sind:
cACertificate;binary
und
cAPrivateKey;binary

Wenn das Zertifikat nicht getauscht wird, dann würde immer das vom OpenLDAP erstellte self signed Certificate genutzt. Wie das Attribut schon zeigt, wir das Zertifikat im binary-Format gespeichert. Was aber wenn nur .PEM-Zertifikate vorhanden sind? Dann können Sie das Zertifikat und den Key mit den folgenden Kommandos umwandeln:
—————
openssl rsa -inform pem -in cakey.pem -outform der -out cakey-binary.der

openssl x509 -outform der -in cacert.pem -out cacert-binary.der
————–

Anschließend tauschen Sie das Zertifikate und der Key mit der folgenden LDIF-Datei aus:

dn: dc=example,dc=net
changetype: modify
replace: cACertificate;binary
cACertificate;binary:< file:///root/mycert/cacert-binary.der

replace: cAPrivateKey;binary
cAPrivateKey;binary:< file:///root/mycert/cakey-binary.der

 

Jetzt fehlt nur noch eine ACL damit ein Benutzer sein Zertifikat und den Privatkey erstellen kann. Die ACL sollte weit oben angelegt werden, da es sich um eine ACL auf ein einzelnes Attribut handelt:

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {1}to attrs=pKCS8PrivateKey
by self ssf=128 write

 

Die ACL auf das Attribut pKCS8PrivateKey vererbt die Rechte an die beiden Attribute „userCertificate;binary“ und „userPrivateKey;binary“.

Jetzt können der Benutzer selber und der rootdn das Zertifikat und den Schlüssel mit dem Kommando:
—————
ldapsearch -x -D „cn=u1 verw,ou=users,ou=verwaltung,dc=example,dc=net“ -W „cn=u1 verw“ -LLL „userCertificate;binary“ „userPrivateKey;binary“
—————

erstellen. Alle anderen Benutzer können das Zertifikate lesen, nicht aber den Key.

Sollen die Zertifikate später für andere Aufgaben genutzt werden, wie zum Beispiel für einen Radius-Server, werden die Zertifikate im PEM-Format benötigt. Das folgende kleine Skript extrahiert das Zertifikat und den Key, eines als Positionsparameter
übergebenen Benutzers, aus den binären Attributen. Es entstehen zwei PEM-Dateien.

#!/bin/bash
#
LDAPSEARCH=’/opt/symas/bin/ldapsearch‘
MANAGERDN=’cn=admin,dc=example,dc=net‘
URIP1=’ldaps://ldap-r01.example.net‘
PASSWD=’geheim‘
DC=’net‘
TESTDIR=$(mktemp -dp ./)
SEARCHOUT=output.binary
USERDN=$1
EXISTS=$($LDAPSEARCH -D $MANAGERDN -H $URIP1 -w $PASSWD -LLL „$USERDN“ dn)
EXISTS=${#EXISTS}
echo $EXISTS
if [ $EXISTS -eq 0 ]
then
echo „Benutzer/Host $USERDN ist nicht vorhanden“
exit 1
fi
RDN=$(echo $USERDN | egrep ‚^uid=|^cn=‘)
if [ -z $RDN ]
then
echo “ Kein RDN angegeben Benutzer im Format „
echo “ uid=object oder cn=object angeben“
exit 2
fi

NOCERT=$($LDAPSEARCH -D $MANAGERDN -H $URIP1 -w $PASSWD -LLL „$USERDN“ | grep ‚userCertificate;binary‘ )
echo „wert: $NOCERT“
NOCERT=${#NOCERT}
echo „zahl: $NOCERT“
if [ $NOCERT -eq 0 ]
then
echo „Benutzer/Host hat noch kein Zertifikat“
while [ „$CREATECERT“ != „J“ -a „$CREATECERT“ != „N“ ]
do
echo -n „Soll ein Zertifikat erstellt werden (j/n)? „
read CREATECERT
CREATECERT=$(echo $CREATECERT | tr a-z A-Z)
done
if [ $CREATECERT == „J“ ]
then
$LDAPSEARCH -D $MANAGERDN -H $URIP1 -w $PASSWD -LLL „$USERDN“ ‚userCertificate;binary‘ ‚userPrivateKey;binary‘ >/dev/null
else
echo „Kein Zertifikat vorhanden und es wurde auch keins erstellt“
exit 1
fi
fi
echo „Suche das Zertifikat für $USERDN mit ldapsearch“
$LDAPSEARCH -D $MANAGERDN -H $URIP1 -w $PASSWD -LLL „$USERDN“ ‚userCertificate;binary‘ > $SEARCHOUT 2>&1
echo „Erstelle das Zertifikat“
echo „—–BEGIN CERTIFICATE—–“ > $TESTDIR/“${USERDN}“-usercert.pem
sed -e „/^dn:/d“ -e „/^ dc=${DC}/d“ -e „s/userCertificate;binary:://“ -e „/^$/d“ $SEARCHOUT >> $TESTDIR/“${USERDN}“-usercert.pem
echo „—–END CERTIFICATE—–“ >> $TESTDIR/“${USERDN}“-usercert.pem

echo „Suche den Key für $USERDN mit ldapsearch“
$LDAPSEARCH -D $MANAGERDN -H $URIP1 -w $PASSWD -LLL „$USERDN“ ‚userPrivateKey;binary‘ > $SEARCHOUT 2>&1
echo „Erstelle den Key“
echo „—–BEGIN PRIVATE KEY—–“ > $TESTDIR/“${USERDN}“-userkey.pem
sed -e „/^dn:/d“ -e „/^ dc=${DC}/d“ -e „s/userPrivateKey;binary:://“ -e „/^$/d“ $SEARCHOUT >> $TESTDIR/“${USERDN}“-userkey.pem
echo „—–END PRIVATE KEY—–“ >> $TESTDIR/“${USERDN}“-userkey.pem

echo „Inhalt des Zertifikats“
openssl x509 -noout -text -in $TESTDIR/“${USERDN}“-usercert.pem
echo „Weiter mit RETURN“ ; read

echo „Vergleich der Prüfsumme des Zertifikate mit der des keys“
echo „“
echo „Prüfsumme des Keys: $(openssl pkey -in $TESTDIR/“$USERDN“-userkey.pem -pubout -outform pem | sha256sum)“
echo „“
echo „Prüfsumme des Zertifikat: $(openssl x509 -in $TESTDIR/“$USERDN“-usercert.pem -pubkey -noout -outform pem | sha256sum)“

Was macht das Skript?:
– Als erstes wird geprüft, ob der als Positionsparameter übergeben Benutzer existiert.
– Im Anschluss wird geprüft, ob der Name als RDN also entweder als uid= oder cn= übergeben wurde
– Dann wird geprüft, ob der Benutzer bereits ein Zertifikat besitzt. Wenn nicht, wir gefragt, ob eins erstellt werden soll. Ein „N“ verlässt das Skript. Ein „J“ erstellt Zertifikat und Key
– Jetzt wird das binäre Zertifikat in eine .PEM-Datei umgewandelt und in einem temporären Verzeichnis abgelegt. Der Dateiname enthält den Benutzername.
– Dann wird der binäre Key in eine .PEM-Datei umgewandelt und in einem temporären Verzeichnis abgelegt. Der Dateiname enthält den Benutzername.
– Im Anschluss wir der Inhalt des Zertifikats ausgelesen und angezeigt
– Zum Abschluss werden die Prüfsummen des Zertifikats und des Keys verglichen. Nur wenn beide identisch sind, passt der Key zum Zertifikat.

In dem temporären Verzeichnis liegen jetzt zwei Dateien: Zum Einen das Zertifikat im PEM-Format und zum Anderen der Key im PEM-Format.

Wichtig!
Für den Key wurde kein Passwort gesetzt.

Alle Dateien un den Text finden Sie hier oder im git-Repository zum Buch

Posted in LDAP | Leave a comment

Listings zum Buch OpenLDAP jetzt auch über github verfügbar

Alle Listings zur 2. Auflage unseres OpenLDAP-Buchs sind jetzt auch im github abgelegt. So können wir schneller Änderungen vornehmen, eventuelle Fehler beheben, oder auch mal neu kleine Inhalte bereitstellen die noch nicht im Buch vorhanden sind.

 

Posted in LDAP | Leave a comment

Debian 12 ohne syslogd

Mit Debian 12 (bookworm) wird jetzt nur noch der journald für das
Logging installiert und nicht noch wie bei den vorherigen Versionen zusätzlich der syslog-ng. Endlich, warum auch zwei log-Systeme? Auch hat der journald eine Menge an Vorteilen gegenüber den anderen Log-Systemen.  Klar, das Log-file wird binär abgelegt und nicht mehr im ASCII-Format, aber das hat mehr Vor- als Nachteile. Man muss sich jetzt vielleicht mal etwas genauer mit dem journald auseinandersetzen um auch die Vorteile zu sehen.

Durch das binäre Format ist eine Fälschung des logs durch entfernen von einzelnen Zeilen kaum bis gar nicht mehr möglich. Für jeden Eintrag im Log wird eine Hashwert gebildet und der Hashwert beinhaltet immer auch den Hashwert des vorherigen Eintrags. Würde also eine Zeile aus dem Log entfernt, stimmen alle folgenden Hashwerte nicht mehr und die Manipulation würde sofort auffallen.

Auch ist die Suche im Log erheblich einfacher. Hier mal ein paar Beispiele:

journalctl – -until „2023-01-01 12:00:00“
Hier werden alle Einträge bis zum angegeben Datum und Uhrzeit aufgelistet

Das ganze geht natürlich auch so:
journalctl – -since „2023-01-06 12:00:00“
Starte die Suche zum angegebenen Datum und Uhrzeit bis jetzt.

Eine Kombination aus beiden ist auch möglich:
journalctl – -since „2023-01-01 12:00:00“  –until „2022-01-06 12:00:00“

Bei den Zeitangaben gibt es jede Menge an Möglichkeiten. hier ein paar Beispiele:
journalctl – -since yesterday
journalctl – -since 09:00 –until „1 hour ago“
journalctl – -since „2023-01-07 17:15:00“ –until now
journalctl – -since „2023-01-07 17:15:00“ –until „+1 hour“
journalctl – -since „2023-01-07 17:15:00“ –until „-1 minute“

Auch lässt sich gut nach Einträgen eines  bestimmten Dienstes suchen:
journalctl -u slapd.service

Ein zusätzlichen -f öffnet das Journal und Sie können alle aktuell auflaufende Meldungen des Dienstes sehen.

Sie suchen nach allen Einträgen die zu einer bestimmten Prozess-ID gehören? Kein Problem:
journalctl _PID=560

Oder Einträge die eine bestimmte UID haben:
journalctl _UID=106 –since today

Sie wollen sehen, welche Meldungen zu einem bestimmten Log-Level seit dem letzten boot im Log stehen?
journalctl -p err -b

Das sind nur ein paar Möglichkeiten die Sie mit dem journald haben. Also, nicht gleich den syslog-ng installieren so nach dem Motto: „Das haben wir immer schon so gemacht“.  

Posted in Allgemein | Leave a comment

Dateien zum neuen OpenLDAP-Buch

Wenn alles klappt, kommt das neu OpenLDAP-Buch bereits im August in den Handel. Geplant war September. Aber alle Beteiligten haben schnell gearbeitet, sodass das Buch wahrscheinlich einen Monat früher erscheinen wird. Damit Sie als Leser nicht alles Skripte und LDIF-Dateien aus dem Buch abtippen müssen, liegen hier alle Dateien zu allen Kapiteln zum Download bereit.

Posted in Allgemein, LDAP | Leave a comment

Das neue OpenLDAP-Buch ist fertig

Nach über 14 Jahren gibt es von OpenLDAP endlich eine neue Version, die Versionen 2.5/2.6. Die Version 2.5 ist vor ca. 1.5 Jahren erschienen kurz darauf dann die Version 2.6. Die Version 2.5 ist eine LTS-Version in der nur Sicherheitsupdates und Bug-fixes eingepflegt werden. Anders sieht es bei der Version 2.6 aus, da werden auch immer wieder neue Funktionen mit eingebunden. Beide Version sind stabil, aber die Version 2.6 soll dann im laufe des Jahres durch eine 2.7 ersetzt werden. 2.5 wird es erheblich länger geben.

Da im Moment noch keine Distribution die neuen Pakete enthält, verwenden wir die Pakte aus dem Repository der Firma Symas. Fast die gesamte Entwicklung von OpenLDAP wird von dort durchgeführt, somit sind die Pakte auch stabil und immer aktuell. Die Pakte gibt es dort für verschiedene Distributionen kostenfrei. Für uns ein Vorteil, so konnten wir die Installation recht kurz halten und mussten nicht mehr auf unterschiedliche Distributionen eingehen. Den Platz haben wir lieber für neue Inhalte genutzt. Alle Pfade sind auf allen Distributionen identisch.

Im neuen Buch haben Andreas und ich uns auf die Version 2.6 geeinigt. Zum Zeitpunkt der Erstellung des Buchs waren die Unterschiede nur marginal. An den Stellen, an denen es Unterschiede gibt, haben  wir das auch erwähnt.

Das alte Buch hatte ca. 370 Seiten, das neue über 450. Jetzt könnte man denken: „80 Seiten mehr ist ja kein großer Aufwand und nicht viel neues.“ Aber! Wir haben uns darauf geeinigt, die statischen Konfiguration über die slapd.conf komplett aus dem Buch zu entfernen und nur noch die dynamische Konfiguration über cn=config zu besprechen. Da sind dann so einige Seiten aus dem alten Buch raus gefallen und es gab Platz für neue Inhalte. An dieser Stelle möchte ich nur eine kurze Aufzählung der neuen Inhalte nennen:

  • Das Kapitel zum sssd wurde um die Möglichkeit der Auswertung der SRV-Records im DNS ergänzt.
  •  Bei den grafischen Tools beschränken wir uns auf den LAM und das Apache Directory Studio. Beim LAM sind wir etwas mehr in die Tiefe gegangen als in der letzten Auflage.
  • Das Kapitel der ACLs haben wir überarbeitet und um die Möglichkeit der „sets“ erweitert und ACLs mit Filtern und der Verwendung des ssf werden auch erklärt.
  • Beim Kapitle Overlays gibt es sehr viel neues. Das alles hier aufzuzählen wäre zu viel. Nur eins: Das Overlay „memberOf“ wird komplett durch das Overlay „dynlist“ ersetzt.
  • Die Funktion der Replikation wurde im neuen OpenLDAP komplett überarbeitet. Alle neuen Möglichkeiten werden im Buch besprochen. Die Funktion des „standby provider“ haben wir komplett rausgeworfen und durch die neuen Möglichkeiten der „multi provider replikation“ ersetzt.
  • Natürlich hat der neue Loadbalancer, der im neuen OpenLDAP enthalten ist, ein eigenes Kapitel erhalten. 
  • Auch die Einrichtung der verschiedenen LDAP-Proxy Möglichkeiten finden Sie im Buch, inklusive der Einrichtung de cachings.
  • Referrals fehlten in der ersten Auflage, sind aber jetzt enthalten.
  • OpenLDAP im Container wurde durch die Nutzung von Kubernetes ergänzt.
  • Die Einrichtung von OpenLDAP mittels Ansible hat auch ein eigenes Kapitel bekommen.

Sie sehen, es hat sich viel getan. 

Das Buch wurde von uns so geschrieben, dass sowohl ein Einsteiger in das Thema, als auch jemand der von 2.4 updaten will (was unbedingt zu empfehlen ist!) genutzt werden kann.

Wie bei allen Büchern an denen ich beteiligt war, ist es mir auch hier wichtig gewesen den Praxisteil möglichst groß zu gestalten. In allen Kapiteln gibt es Beispiele. Keine Angst, Sie müssen nicht alles abtippen was Sie in den Listings sehen. Ich werde alle Skripte, LDIF-Dateien und Konfigurationen hier noch bereitstellen. Auch beim Verlag wird es die Daten auch als Download geben.

Wie immer freue ich mich über konstruktive feedbacks.

Jetzt heißt es nur noch warten. Das Buch wird wohl Anfang September erscheinen.

Posted in LDAP | Leave a comment

Die SambaXP rückt näher!

Im Mai (09.05 bis 11.05.2023) ist es endlich wieder soweit, die SambaXP findet wieder in Götting, live und in Farbe statt. Endlich wieder nette Menschen treffen und sich über alles rund um Samba austauschen.

Ich bin auch wieder mit einem Tutorial dabei und zwar (wie immer in den letzten Jahren) am Tag vor der eigentlichen Konferenz, also am 09.05.2023. So können Sie am Tutorial teilnehmen und keine der Vorträge verpassen. 

Worum geht es in meinem diesjährigen Tutorial:
Lange hatte ich überlegt, was ich machen soll. Wieder ein spezielles Thema vertiefen? Oder mal mehr ein Augenmerk auf Um- und Einsteiger werfen?

Die Entscheidung ist dann auf die Um- und Einsteiger gefallen. Warum? In den letzten zwei Jahren habe ich immer mehr Anfrage zum Thema „Wie können wir auf eine Samba-AD umsteigen? Wie schwierig ist das?“ Genau diese Fragen möchte in diesem Tutorial beantworten. 

Im Tutorial wird es selbstverständlich auch wieder einen Praxisanteil geben in dem wir eine kleine Samba-Domäne mit zwei Domaincontrollern und einem Fileserver aufbauen werden. Doch liegt ein weiterer Schwerpunkt auf der Beantwortung Ihrer Fragen um alles rund um Samba. Also:

  • Was kann Samba an Diensten bieten
  • Wie ist es mit der Umstellung einer alten Windows-Domäne auf eine neue Samba-Domäne (oder eine Umstellung einer alten Samba 3 Domäne)
  • Wie wirkt sich die Umstellung von Samba auf Ihre Mitarbeiter aus
  • Wie kompatible sind z.B. Gruppenrichtlinien
  • Wie kann eine Domäne bei einem Totalausfall wieder hergestellt werden

Und natürlich alle Fragen, die Ihnen sonst noch so einfallen.

Wie schon in den letzten Jahren habe ich auch dieses Mal wieder Vorarbeit geleistet und die passenden VMs erstellt, die Sie auf Ihrem eigenen Notebook via Vagrant einrichten können. So haben Sie am Ende des Tutorials eine Umgebung, die Sie auch später noch zum Testen nutzen können, wenn Sie wieder zu Hause sind. 

Das Tutorial wir auf Englisch gehalten, aber, bis jetzt habe ich es auch immer noch zweisprachig hinbekommen. 

Bleibt mir nur noch auf die Agenda zur Konfernz zu verweisen. Diese finden Sie hier.

Posted in Allgemein | Leave a comment

Pimp my zsh

Heute mal was ganz anderes. Seit langem verwende ich schon die zsh an stelle der bash und fast genau so lange habe ich meinen vim und die zsh etwas aufgemotzt. Das fängt an mit der Anzeige des Prompt bis zur Verwendung von globalen Abkürzungen bis zur Statusanzeige eines GIT-repositories wenn man in das entsprechende Verzeichnis wechselt. Das sieht dann so aus:

Zusammen mit der zsh habe ich dann auch am vim noch ein paar nette Kleinigkeiten eingebaut, wie zum Beispiel den NERDTree oder das automatische passende Einrücken bei Python-Skripten und noch ein paar mehr zusätzliche Plugins.

Jetzt musste ich mein System von kubuntu 20.04 auf 22.04 updaten, da es demnächst keine Updates mehr gibt und die ewige Meldung dazu nervt :-).

Aber wie das so nach einem Update ist, nicht alles läuft mehr so wie vorher, genau so war es mit meinem vim und der zsh. Aber zum Glück habe ich mir mal alles aufgeschrieben wie ich das vor Jahren eingerichtet habe und konnte so alles recht schnell wieder herstellen. 

Da ich finde, dass es nicht nur gut aussieht sondern auch an vielen Stellen nützlich ist, dachte ich mir, ich stelle das ganze hier mal vor. Ich werde hier jetzt die einzelnen Schritte aufführen und die benötigten Dateien natürlich auch bereitstellen. Lange Rede, los geht’s:

sudo apt install vim-gtk git
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
mkdir ~/.oh-my-zsh
cd ~/.oh-my-zsh
git clone https://github.com/robbyrussell/oh-my-zsh .
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
cp vimrc.txt  /home/<user>/.vimrc
cp zshrc.txt /home/<user>/.zshrc
Beide Dateien an den eigenen Benutzernamen und Umgebung anpassen 
source .zshrc
Anschließend im vim ausführen:
:PluginInstall
Dort dann alle Plugins installieren. Anschließend den vim wieder verlassen.
Fehlermeldungen können an dieser Stelle ignoriert werden, das ändert sich noch.
sudo apt install openjdk-17-jdk python3-pip
pip3 install flake8
pip3 install powerline-status
pip3 install yapf
sudo apt install cmake python3-dev build-essential golang npm
cd ~/.vim/bundle/YouCompleteMe
python3 ./install.py –all
apt install fonts-powerline fonts-font-awesome
sudo dpkg-reconfigure fontconfig
für eine gute Darstellung der Farben auf der Shell und im vim ist das Farbschema „Solarized“ am besten.

Das war es dann schon. Wenn jetzt der vim gestartet wird, sind alle Plugins aktiv und es sollten keine Fehlermeldungen mehr auftauchen. Nach dem Start des vim einfach mal:
:NERDTree
eingeben und schon lässt sich der Dateibaum im vim durchsuchen. Auch eine Test mit einem Python-Skript lohnt sich.

Bleibt mir nur noch viel Spaß mit der neuen zsh und dem vim zu wünschen. 

Posted in Allgemein | Leave a comment

SambXP 2023 (09.5. bis 11.05.2023) wieder live

Endlich, nach drei online Konferenzen, wird die SambaXP 2023 wieder live in Göttingen stattfinden. Auch dieses Mal werde ich am Tag vor der eigentlichen Konferenz (dem 09.05.2023) ein Tutorial halten. Dieses Mal geht es „back to the roots“, sprich wir werden eine Domäne komplett mit zwei Domaincontrollern und einem Fileserver einrichten. Wir werden dann auch einen Linux-Client mit GUI in die Domäne aufnehmen und sehen, wie die SMB-Shares des Fileserver genutzt werden können und welche Vorteile es bringt, wenn alle Clients SMB nutzen.

Das Tutorial wird in Englisch stattfinden. Wie schon bei den online-Tutorials bringt jeder Teilnehmer sein eigenes Notebook mit. Ich werde einen „Vagrantfile“ erstellen, der die gesamte Umgebung automatisch einrichtet. So hat am Ende jeder Teilnehmer seine komplette Umgebung, die dann zuhause noch weiter getestet werden kann.

Ich freue mich auf jeden Fall schon wieder auf ein live-Tutorial und eine live Konferenz 🙂

Posted in Allgemein | Leave a comment

Überprüfung der Replikation von OpenLDAP

Beim Einsatz von OpenLDAP, gerade ein einer multi Provider Umgebung, stellt sich immer wieder die Frage: Funktioniert meine Replikation? Wie ausgelastet sind meine Server? Die Nutzung des monitor-Backend beantwortet die Fragen schon sehr genau, gerade in eine multi Provider Umgebung, wenn dann auch noch die Konfiguration repliziert wird, sollten Sie auf gar keinen Fall auf den Einsatz von Monitoringsoftware verzichten. Alle aktuellen System zum Monitoring unterstützen das monitor-Backend vom OpenLDAP.

Mit der neuen Version (2.5.x und 2.6.x) des OpenLDAP ist aber auch ein kleines Kommandozeilenwerkzeug dazu gekommen, mit dem Sie, recht einfach, viele Informationen über den Zustand der OpenLDAP-Server und der Replikation erhalten können.  

Das Kommando heißt slapd-watcher und ist in allen aktuellen Versionen vorhanden. Als Parameter werden die zu überprüfenden Server angegeben und ein Benutzer mit Passwort der die Informationen auch auslesen kann: Das folgende Listing zeigt den Aufruf und die Informationen, die Sie erhalten:

slapd-watcher -b dc=example,dc=net ldaps://ldap-provider-01.example.net ldaps://ldap-provider-02.example.net ldaps://ldap-provider-03.example.net -x -D cn=admin,dc=example,dc=net -w geheim

ldaps://ldap-provider-01.example.net
  Entries Bind Unbind  Search  Compare  Modify  ModDN   Add  Delete    Abandon   Extended  
Num  6     84      77        359          0          5            0             10          0          0         72  
Num/s 0.00 0.00  0.00   0.30       0.00       0.00       0.00       0.00       0.00       0.00    0.00  
contextCSN: 20221103122011.866810Z#000000#001#000000 idle
contextCSN: 20221103125320.893807Z#000000#002#000000 idle, sync’d 

ldaps://ldap-provider-02.example.net
  Entries  Bind  Unbind  Search  Compare  Modify  ModDN   Add     Delete    Abandon   Extended  
Num  6     19         11        288          0          5          0                7          0           0                  7  
Num/s 0.00  0.00 0.00      0.20       0.00       0.00     0.00       0.00       0.00       0.00             0.00  
contextCSN: 20221103122011.866810Z#000000#001#000000 idle, sync’d
contextCSN: 20221103125320.893807Z#000000#002#000000 idle

ldaps://ldap-provider-03.example.net
 Entries  Bind  Unbind  Search  Compare Modify  ModDN  Add     Delete    Abandon   Extended  
Num  6     17        9        288          0          5           0              5          0           0                7  
Num/s 0.00 0.00  0.00   0.20       0.00       0.00       0.00       0.00       0.00      0.00        0.00  
contextCSN: 20221103122011.866810Z#000000#001#000000 idle, sync’d
contextCSN: 20221103125320.893807Z#000000#002#000000 idle, sync’d

Über die verschieden Werte können Sie so sehr schnell sehen, ob die Replikation funktioniert (Die Anzahl der Entries sollte bei einer multi Provider Umgebung auf allen Servern identisch sein) und wie stark die Server ausgelastet sind. Sollte z.B bei einem der Server die Anzahl der „Search“ Einträge erheblich von den anderen abweichen, kann das daran liegen, dass bestimmte Clients immer nur einen der Server abfragen. 

Der Einsatz von slapd-watch, kann aber kein Monitoring ersetzten sonder dient dazu schnell Informationen des Zustands Ihrer Server zu bekommen. 

Posted in Allgemein | Leave a comment

Fehlender NS-Record in reverse-zone

Wenn Sie in Ihrem Samba-AD den Bind9 einsetzen und eine oder mehrere reverse-Zonen verwalten, kann es bei zwei Gelegenheiten dazu kommen, dass der NS-Record der reverse-Zonen nicht mehr vorhanden ist und dann der Bind9 nicht mehr startet. 

Der erste Fall ist der, dass Sie den DC auf dem Sie die reverse-Zone angelegt haben demoten dann werden auch alle DNS-Einträge des DCs gelöscht, also auch alle NS-Records. Bei den Forward-Zone gibt es dann keine Problem, da alle DCs diese Rolle übernehmen. Bei den reverse-Zonen fehlt dann aber der NS-Record. Umgehen können Sie das Problem in dem Sie immer mindestens zwei DCs als NS-Record in die Zone eintragen, entweder über den Windows DNS-Manager oder auf einem DC über das Kommando:

samba-tool dns add dc1 56.168.192.in-addr.arpa @ NS
recover-dc2.example.net -U administrator

Der zweite Fall in dem Ihnen der NS-Record fehlt, ist nach einem eventuellen Recovery der gesamten Domäne aus dem Backup, dann haben alle reverse-Zonen keine NS-Record mehr. Der dann erstellte neu DC wird zwar in die forward-Zonen eingetragen, nicht aber in die reverse-Zonen. Sie haben jetzt die Möglichkeit alle reverse-Zonen mit dem samba-tool zu löschen und neu anzulegen, oder Sie gehen wie folgt vor:

  • Stoppen Sie den Samba-Dienst
  • Stellen Sie mit samba_upgradedns auf den internen DNS-Server um
  • Erweitern die Zeile server services in der smb.conf um den Parameter dns
  • Starten den Samba-Dienst neu
  • Erzeugen den NS-Record wie oben beschrieben
  • Schalten dann wieder mit samba_upgradedns –dns-backend=BIND9_DLZ  auf den Bind um
  • Entfernen den Parameter dns aus der smb.conf
  • Starten den Samba-Dienst neu
  • Dann können Sie den Bind9 wieder starten und alle NS-Record sind wieder vorhanden.

So bekommen Sie auch nach einem Recover der Domäne alle Zonen wieder funktionsfähig.

Posted in Allgemein | Leave a comment