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

Overlay memberof hat den Status „deprecated“ in OpenLDAP 2.6

In der neuen Version 2.6 vom OpenLDAP hat das Overlay memberof den Status „deprecated“ bekommen und wird wohl, über kurz oder lang, ganz aus dem OpenLDAP entfernt werden. Dazu ein Auszug aus der manpage zum slapo-memberof:

Note that this overlay is deprecated and support will be 
dropped in future OpenLDAP releases. Installations should use the 
dynlist overlay instead. Using this overlay in a replicated 
environment is especially discouraged.

Wer zusätzlich die, nun funktionierende, Technik der Replikation des cn=config nutzen will, sollte schon jetzt auf den Einsatz des Overlays memberof verzichten. Hat eh nicht immer das gemacht was es sollte.

Die Einrichtung des Overlays dynlist ist auch kein Hexenwerk. Ich werde hier beschreiben wie eine einfach Einrichtung im cn=config durchgeführt werden kann.

Im ersten Schritt benötigen Sie das Schema dyngroup. Da es zur Zeit nur die Möglichkeit gibt den OpenLDAP 2.6 selber zu bauen oder die Symas-Pakete zu nutzen, gebe ich hier die Pfade für die Symas-Pakete an: 

ldapadd -Y EXTERNAL -H ldapi:/// -f \
/opt/symas/etc/openldap/schema/dyngroup.ldif

Wenn Sie schon die dynamische Konfiguration vom cn=config eingerichtet haben, werden gleich alle LDAP-Server mit dem neuen Schema ausgestattet.

Im nächsten Schritt laden Sie das Modul dynlist und fügen Sie das Overlay in Ihre Objekt-Datenbank ein. Dafür können Sie eine LDIF-Datei mit dem folgenden Inhalt erstellen:

dn: cn=module{0},cn=config 
changetype: modify
add: olcModuleLoad
olcModuleLoad: dynlist.la

dn: olcOverlay=dynlist,olcDatabase={2}mdb,cn=config
changetype: add
objectClass: olcDynamicList
objectClass: olcOverlayConfig
olcOverlay: dynlist
olcDlAttrSet: groupOfURLs memberURL member

Achten Sie darauf, dass Sie die für Ihren LDAP-Server passende Nummer der Datenbank angeben!

Die Attributliste hinter dem Attribut olcDlAttrSet haben dabei die folgende Bedeutung

  • groupOfURLs ist der Gruppentyp der hier verwendet wird
  • memberURL ist das Attribut das aus dem Objekt der dynamischen Gruppe ausgewertet wird
  • member sorgt dafür, dass der vollständige DN in die Gruppe eingetragen wird

Nach dem Sie Ihren LDAP-Server soweit vorbereitet haben, können Sie jetzt die erste dynamische Gruppe anlegen. Im folgenden Listing sehen Sie eine LDIF-Datei für das Anlegen einer dynamischen Gruppe

dn: cn=adminuser,ou=groups,dc=example,dc=net 
objectClass: groupOfURLs
cn: adminuser
memberURL: ldap:///dc=example,dc=net??sub?(employeeType=IT)

Hier wird eine Gruppe cn=adminuser angelegt und jeder Benutzer der jetzt bei dem Attribut employeeType den Eintrag IT besitzt, wird automatisch Mitglied der Gruppe. Wird der Benutzer gelöscht oder sein Attribut employeeType wird verändert, wird er automatisch aus der Gruppe entfernt. Das funktioniert auch bei der Replikation von cn=config

Natürlich können Sie hier beliebig viele Gruppen anlegen und der Filter für die Mitgliedschaft kann auch komplex aufgebaut werden, denn Sie können hier alle möglichen logischen Verknüpfungen der OpenLDAP-Filter nutzen.

Posted in Allgemein | Leave a comment

Ubuntu pam-mount Active Directory

Wenn Sie versuchen auf einem Ubuntu 20.04 System pam-mount zusammen mit einem Share und  Active Directory  zu nutzen, und sich nach der Konfiguration das Mounten fehlschlägt, dann liegt es daran, dass es bei Ubuntu Abhängigkeitsprobleme gibt. Wenn Sie auf dem Client das Paket  libpam-mount installieren und anschließen auf ein Share im Aktive Directory via Kerberos-Authentifizierung zugreifen, wird das nicht funktionieren. Erst wenn Sie das Paket ktutils installieren wird das Mounten funktionieren. 

Hier auch noch einmal der Hinweis: Pam-mount verwendet immer noch SMBv1 als Standardprotokoll. Sowohl aktuelle Windows-Server als auch Samba verlangen aber mindestens SMBv2 besser wäre 3.1.1. Vergessen Sie daher nicht in den Optionen des zu moutenende Shares den Parameter ver=3.1.1 zu setzen.

Posted in Allgemein | Leave a comment

Fehlermeldung NT_STATUS_INVALID_TOKEN nach Update

Am 09.11.2021 wurde für alle aktuellen Samba-Versionen (4.13, 4.14, 4.15) ein Sicherheitsupdate bereitgestellt. Bei dem Update geht es, unter anderem, um die Sicherheit der Kerberos-Tickets. Wenn ein Domänenbenutzer auf einen lokalen Benutzer gemapped wird, kann das dazu führen, dass ein Angreifer zusätzliche Rechte bekommt. Mehr zu der Sicherheitslücke finden sie HIER. Einem gemapptem Domänenbenutzer wird durch das Update diese Möglichkeit genommen sich auf einen lokalen Benutzer zu mappen.

Jetzt ist es aber so, dass der Administrator der Domäne immer auf den root (also UID=0 und GID=0) gemapped wird. Durch das Update verliert der Administrator dadurch sein Rechte. Wenn Sie jetzt z.B. einen Windows-Client in die Domäne aufnehmen, mit dem Administrator, dann wird der join funktionieren, aber der DNS-Eintrag für den Client wird nicht erstellt und mit einer entsprechenden Fehlermeldung quittiert.

Der beste Weg diese Problem zu umgehen ist es, eine AD-Benutzer in die Gruppe „domain admins“ aufzunehmen und das Join nur noch mit diesem Benutzer durchzuführen. 

Sollte das aus irgend einem Grund nicht möglich sein, haben Sie immer noch die Möglichkeit den neuen smb.conf Parameter „min domain uid = 0“ zu setzen. Der Standardwert ist hier „1000“. Dann klappt es auch wieder mit dem Administrator. Besser ist aber auf jeden Fall der Weg über den Benutzer in der Gruppe „domain admins“ zu gehen.

Posted in Allgemein | Leave a comment

TOTP für die Benutzer einrichten

In diesem Teil zum Thema TOTP mit OpenLDAP soll es darum gehen, die Benutzerobjekte im LDAP um die TOTP-Attribute zu erweitern. Zwei Lösungsansätze werde ich hier beschrieben: Einmal die Zuweisung über ein Skript, das Sie als root ausführen und dann den Benutzern den QR-Code zukommen lassen. Die zweite Möglichkeit nutzt den LAM-Pro um den Benutzern über das SelfService-Module die Möglichkeit zu geben, sich den QR-Code selber zu generieren. Als root geben Sie den Benutzer lediglich das Initialpasswort für die Authentifizierung am SelfService-Modul.

Da ich für den Teil mit dem LAM einige Screenshots verwende, stelle ich den eigentlichen Artikel als PDF zum Download bereit.

Posted in Allgemein | Leave a comment

Neu Vagrant-Box für CTDB

Endlich habe ich es geschafft, ich habe eine neue Vagrant-Box mit Debian 11 erstellt. Diese neue Box enthält ein Grundsystem und eine zusätzliche Partition. Die zusätzliche Partition (2GB) ist mittels LVM2 und thin-provisioned eingerichtet, so dass auch GlusterFS-Snapshots ausprobiert werden können.

Die Box ist extra so gebaut, dass damit eine Samba-Umgebung mit Doamincontroller und beliebig vielen Gluster/CTDB -Knoten aufgebaut werden kann. Bei der Box handelt es sich um eine Box für VirtualBox als Virtualisierer. Daher sind die Voraussetzungen lediglich eine installierte VirtualBox in der aktuellen Version und eine aktuellen Version von Vagrant. 

Damit Sie die Umgebung einfach und schnell installieren können, lege ich hier noch einen Vagrantfile ab, in dem ein Domaincontroller mit Samba 4.14 (aus den Paketen von Louis van Belle) eingerichtet wird. Der DC nutzt dabei den Samba-internen DNS-Server. (entfernen Sie bei der Datei die Endung .txt)

Am 22.04.2022 habe ich eine neu Version des Vagrantfiles hinterlegt. Die virtuelle Platte ist etwas größer, da sich keine updates mehr eingespielt werden konnten. Die Versionsnummer ist angepasst und ein paar klein Änderungen am Skript selber habe ich vorgenommen. Unter anderem wird jetzt Samba 4.15 verwendet.

Durch eine Variabel können Sie festlegen, wie viele Gluster/CTDB-Knoten Sie auf einmal einrichten wollen. Bei der Einrichtung der Knoten werden die Samba 4.14 Pakte und GlusterFS 9 Pakte installiert. 

Auf allen Knoten werden zwei Netzwerkkarten in zwei verschiedenen Host-only-Netzwerken eingerichtet und konfiguriert. Als Resolver wird automatisch der DC auf allen Knoten eingetragen. Auch die Datei /etc/hosts wird durch das Skript angepasst. 

Durch die Vorkonfiguration können Sie sich ganz auf die Einrichtung von GlusterFS und CTDB konzentrieren. Alle benötigten Pakete sind installiert und es besteht sofort ein Produktivnetz in dem auch der DC eingerichtet ist und ein Heartbeat-Netz für die Kommunikation der Knoten untereinander. 

Ob Sie jetzt ein Gluster-Cluster mit zwei replicated-nodes oder mit 10 replicated-distributed-nodes einrichten wollen, passen Sie einfach die entsprechenden Variable an und das Skript erstellt die benötigten Hosts automatisch.

Viel Spaß bei Testen.

Posted in Allgemein | Leave a comment