Samba

Samba ist ein freies Programmpaket, mit dem es seit Version 4 u. a. möglich ist, einen Domänen-Controller zu betreiben. Das Schulnetzkonzept nutzt davon nur einen sehr kleinen Teil, um eine einfache Benutzerverwaltung bzw. -schnittstelle zu realisieren.

Zur Realisierung des Schulnetzes werden zusätzlich zu Samba folgende Tools verwendet:

FreeRADIUS

Der FreeRADIUS-Server stellt verschiedenen Varianten zur Anmeldung von Benutzern bereit. Das Schulnetzkonzept nutzt ihn für die personalisierte Anmeldung von Benutzern an WLAN-Access-Points.

LDAP Account Manager

Mit dem LDAP Account Manager (LAM) können LDAP-Einträge (Benutzer, Gruppen etc.) benutzerfreundlich über eine Webschnittstelle verwaltet werden. Das Tool erlaubt im Besonderen den Import zahlreicher Benutzer mithilfe einer CSV-Datei.

Self Service Password

Self Service Password ist eine PHP-Anwendung, die es Benutzern ermöglicht, ihr Passwort über das LDAP-Protokoll zu ändern.

Erfüllte Anforderungen

Diese Anforderungen erfüllt das Schulnetzkonzept:

  • Benutzer- und Gruppenverwaltung über Web-Oberfläche (LDAP-Account-Manager)
  • Möglichkeit des CSV-Imports
  • Zentrale Benutzerbasis für Nextcloud und WLAN:
    • Synchronisation der Benutzer und Gruppen via LDAP in die Nextcloud
    • Personalisierte Anmeldung im WPA2-Enterprise-WLAN mit FreeRADIUS

Installation Samba

Virtuelle Maschine erzeugen

Verwenden Sie hierzu die Beschreibung zur Installation eines virtuellen Linux-Debians.

Dimensionierungsbeispiel der virtuellen Maschine:

  • 1 CPU
  • 16 GB Festplattenspeicher
  • 4 GB Arbeitsspeicher
  • 1 Netzwerkkarte mit Zugriff auf das Netzwerk "intern"

Notwendige Pakete installieren

# Notwendige Tools
apt install pwgen sshpass samba krb5-config winbind smbclient -y
# Während Installationsprozess folgende Angaben
# - Ihren Gegebenheiten angepasst - tätigen:
# Kerberos realm: schulnetz.intra
# Kerberos server: samba.schulnetz.intra
# Kerberos Administrative server: samba.schulnetz.intra

Originale Samba-Konfiguration sichern

mv /etc/samba/smb.conf /etc/samba/smb.conf.org

Samba Domänen-Setup ausführen

samba-tool domain provision --use-rfc2307 --interactive
# Alle während des Installationsprozesse abgefragen Einstellungen
# können bei den vorgeschlagenen Default-Werten belassen werden,
# außer natürlich das neu zu vergebende Samba-Administrator-Passwort.

Domänen-Setup abschließen

# Kerberos-Konfiguration an die richtige Stelle kopieren:
cp /var/lib/samba/private/krb5.conf /etc/

# Domänen-Controller-Dienste für den 
# automatischen Systemstart konfigurieren:
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc

reboot

Falls gewünscht: Passwortkomplexität verringern

# Folgende Befehle deaktivieren die Passwortkomplexität 
# bis auf eine minimale Passwortlänge von 7 Zeichen:
samba-tool domain passwordsettings set --complexity=off
samba-tool domain passwordsettings set --history-length=0
samba-tool domain passwordsettings set --min-pwd-age=0
samba-tool domain passwordsettings set --max-pwd-age=0

Nützliche Befehle zur Überprüfung des Domänen-Controllers

# Samba Status anzeigen:
smbclient -L localhost -U%

# Domain-Level anzeigen:
samba-tool domain level show

# Passwortrichtlinien anzeigen:
samba-tool domain passwordsettings show

SSH-Kommunikation zwischen Samba-Server und OPNsense vorbereiten

Da LDAP-Verbindungen zum Samba-Server verschlüsselt erfolgen sollen und der OPNsense-Reverse-Proxy keine LDAP-Anfragen entgegen nehmen kann, muss das Zertifikat für die Verschlüsselung direkt auf dem Samba-Server hinterlegt werden.

Zur Zertifikatsgenerierung wird aber genau wie für alle anderen Zertifikate das OPNsense-Let's-Encrypt-Plugin verwendet. Nachdem dieses ein Zertifikat für z. B. ldap.ihre-schule.de generiert hat, kopiert es entsprechende Zertifikatsdateien auf den Samba-Server. Für das automatisierte Kopieren benötigt OPNsense Konsolenzugriff auf den Samba-Server. Hierfür müssen entsprechende Schlüssel generiert und zwischen beiden Systemen ausgetauscht werden:

# Auf Samba-Server-Konsole:

# Erzeugung von privatem (id_rsa) und öffentlichem (id_rsa.pub) Schlüssel
# im Ordner /root/.ssh
ssh-keygen

# Fall 1: die Datei /root/.ssh/authorized_keys existiert noch nicht
# -> Die Datei /root/.ssh/id_rsa.pub wird umbenannt in authorized_keys:
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys

# Fall 2: die Datei /root/.ssh/authorized_keys existiert bereits
# -> Der Inhalt der Datei /root/.ssh/id_rsa.pub wird kopiert
# und in die Datei /root/.ssh/authorized_keys eingefügt

# Berechtigung setzen:
chmod -R 0600 /root/.ssh
# Auf OPNsense-Konsole:

mkdir /root/.ssh
# Den auf Samba-Server erzeugten privaten Schlüssel (id_rsa) 
# per sftp in den Ordner /root/.ssh kopieren

# Die Datei id_rsa umbennennen in id_rsa_samba
mv /root/.ssh/id_rsa /root/.ssh/id_rsa_samba

# Berechtigung setzen:
chmod -R 0600 /root/.ssh

# Einmal von OPNsense-Konsole bei Samba-Server anmelden,
# damit der Samba-Server der Liste der vertrauten Computer hinzugefügt wird:
ssh -i /root/.ssh/id_rsa_samba root@10.1.100.7

Das Generieren des Zertifikats mit dem OPNsense-Let's-Encrypt-Plugin sowie das Kopieren der Dateien auf den Samba-Server wird in der OPNsense-Anleitung im Abschnitt Let's Encrypt erklärt.

Samba-Konfiguration anpassen

vim /etc/samba/smb.conf
Datei /etc/samba/smb.conf
# Ändern Sie die bestehende Datei gemäß der folgenden Vorlage ab.
# Verwenden Sie den von Ihnen verwendeten Domänen-Namen 
# an den entsprechenden Stellen.

# Global parameters
[global]
	netbios name = SAMBA
	realm = SCHULNETZ.INTRA
	server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
	workgroup = SCHULNETZ
	server role = active directory domain controller
	server role check:inhibit=yes
	#verstärkte Sicherheit für LDAP deaktivieren (Port 389 möglich)
	ldap server require strong auth = no
	# notwendig für FreeRADIUS mit ntlm-V1
	ntlm auth = yes
###neu: ntlm auth = mschapv2-and-ntlmv2-only
	# Enable ldaps
	# Achtung: Verwenden Sie die folgenden vier Zeilen erst dann, wenn die oben
	# beschriebene Zertifikatsgenerierung funktioniert hat!
	tls enabled  = yes
		tls keyfile  = /etc/samba/tls/ldap.ihre-schule.de.key
		tls certfile = /etc/samba/tls/fullchain.cer
		tls cafile   = 

[netlogon]
	path = /var/lib/samba/sysvol/schulnetz.intra/scripts
	read only = No

[sysvol]
	path = /var/lib/samba/sysvol
	read only = No

Installation und Verwendung des LDAP-Account-Managers

Installation/Update des LDAP-Account-Managers

Laden Sie zunächst die aktuelle .deb-Installationsdatei von der Herstellerseite herunter:
https://www.ldap-account-manager.org/lamcms/releases

Kopieren Sie die Datei z. B. mit WinSCP ins Verzeichnis /root des Samba-Servers.

dpkg -i /root/<Dateiname der heruntergeladenen Datei>.deb

# Ggf. fehlende Abhängigkeiten nachinstallieren:
apt -f install

Konfiguration des LDAP-Account-Managers

  • Aufruf der Weboberfläche des LDAP-Account-Managers: http://10.1.100.7/lam (bzw. verschlüsselt: https://usermanagement.ihre-schule.de)
  • Hauptpasswort setzen: LAM-Einstellungen → Allgemeine Einstellungen → Neues Hauptpasswort (Standard: lam)
  • Profilpasswort setzen: LAM-Einstellungen → Serverprofile ändern → Serverprofile verwalten → lam → Neues Profilpasswort
  • Serverprofile "lam" ändern
    • Allgemeine Einstellungen
      • Server-Adresse: ldaps://ldap.ihre-schule.de:636
      • TLS aktivieren: nein
      • Baumansicht: DC=schulnetz,DC=intra
      • Login-Methode: feste Liste
      • Liste der berechtigten Benutzer: CN=Administrator,CN=Users,DC=schulnetz,DC=intra
    • Accounttypen
      • Benutzer:
        LDAP-Suffix: ou=Users,ou=School,dc=schulnetz,dc=intra
        Attribute der Listen: #userPrincipalName;#givenName;#sn;#mail
      • Gruppen:
        LDAP-Suffix: ou=Groups,ou=School,dc=schulnetz,dc=intra
        Attribute der Listen: #cn;#gidNumber;#memberUID;#description
        Hosts und Samba-Domänen löschen
    • Module
      • Benutzer: Windows (windowsUser)(*)
        restliche Module entfernen
      • Gruppen
        Windows (windowsGroup)(*)
        restliche Module entfernen

Verwendung des LDAP-Account-Managers

  • Aufruf der Weboberfläche: http://10.1.100.7/lam (bzw. verschlüsselt: https://usermanagement.ihre-schule.de)

Verzeichnisstruktur anlegen

  • Mit dem OU-Editor folgende OU-Struktur im Users-Verzeichnis anlegen:
    • Users
      • students
        • 5a
        • 10x
      • teachers
      • ggf. guests

Gruppen erzeugen und Benutzer zuordnen

  • Unter dem Reiter "Gruppen" folgende Gruppen (Domänenlokal) erzeugen und entsprechend User zuordnen:
    • schueler (→ alle Schüler-User)
    • lehrer (→ alle Lehrer-User)
    • ggf. schulleitung
    • ggf. erweiterte-schulleitung
    • wifi (→ alle User, die Zugriff zum WLAN erhalten sollen)
    • 5a (→ alle Schüler der 5a) … bis 10x

Benutzer importieren

  • Libre-Office-Calc-Vorlage "csv-generator-schueler" bzw. "csv-generator-lehrer" verwenden und nach eigenen Gegebenheiten anpassen
  • Tabellenblatt Eingabe: Daten eingeben
  • Tabellenblatt PW-Generator: Gewünschte Anzahl an Passwörtern durch kopieren der Formel eingeben → Passwörter in Zwischenablage kopieren
  • Tabellenblatt Eingabe: Passwörter einfügen über: Bearbeiten → Inhalte einfügen (Haken bei Formeln entfernen)
  • Tabellenblatt CSV-LAM → Datei → Speichern unter
    → Dateityp: Text CSV > Haken bei Filtereinstellungen bearbeiten
    → Zeichensatz: Unicode (UTF-8) > OK

Installation des FreeRadius-Servers

Der FreeRADIUS-Server wird aktuell auf jenem Computer installiert auf dem auch der Samba-Domänen-Controller läuft. Soll der Radius-Server auf einem anderem System installiert werden, muss dieser der Domäne hinzugefügt werden.

Installation notwendiger Pakete

apt install freeradius freeradius-utils -y

Autostart des FreeRADIUS-Servers aktivieren

update-rc.d freeradius enable

Datei mschap anpassen

vim /etc/freeradius/3.0/mods-enabled/mschap
Datei /etc/freeradius/3.0/mods-available/mschap
# Passus ntlm_auth abändern:
# - als Domain SCHULNETZ eintragen 
# - als erforderliche Gruppe SCHULNETZ\wifi festlegen

mschap {

# ...

ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 --request-nt-key 
--username=%{mschap:User-Name} --domain=SCHULNETZ 
--challenge=%{%{mschap:Challenge}:-00} 
--nt-response=%{%{mschap:NT-Response}:-00} 
--require-membership-of=SCHULNETZ\wifi"

# ...

}

Neustart und Test des FreeRADIUS-Servers

service freeradius restart

# radtest mit bestehenden Benutzern der Gruppe wifi durchführen
# (Ergebnis muss “Access-Accepted" sein)
radtest -t mschap username password localhost 0 testing123

# Debug bei Fehlern:
## FreeRADIUS-Service stoppen:
service freeradius stop
## FreeRADIUS-Server mit Konsolenausgabe starten
/usr/sbin/freeradius -X
## Authentifizierungsversuch unternehmen und Fehlermeldungen auswerten

# Eventuell für mschap notwendig: 
# den Benutzer freerad der Gruppe winbindd_priv hinzufügen:
adduser freerad winbindd_priv

Zugriffsberechtigte Clients (Access-Points) definieren

vim /etc/freeradius/3.0/clients.conf
Datei /etc/freeradius/3.0/clients.conf
# Beispiel für alle Clients (= Access-Points) aus dem Teilnetz 10.1.254.0/24

client 10.1.254.0/24 {
	secret = <Radius-Passwort des Access-Points>
	shortname = 10.1.254-netw
	nas_type = other
}
service freeradius restart

Festlegungen im Access-Point

  • Verschlüsselung: 802.11i (WPA)-802.1x (= WPA Enterprise)
  • Radius-Server: 10.1.100.7
  • Port: 1812
  • Secret: <Radius-Passwort vergeben>

Installation Self Service Password

Für die Installation benötigen Sie zunächst die aktuellste .deb-Datei, welche Sie unter ltb-project.org/download finden.

Kopieren Sie diese in das Verzeichnis root ihres Samba-Servers.

Installation des heruntergeladenen .deb-Pakets

dpkg -i /root/self-service-password_<heruntergeladene version>_all.deb

# Ggf. sind zusätzliche Pakete erforderlich.
# Diese können Sie mit folgendem Befehl nachinstallieren:
# apache2 php php-ldap php-mcrypt php-mbstring

Kopieren und Editieren der zugehörigen Apache-Konfigurationsdatei

cp /etc/apache2/sites-available/self-service-password.conf /etc/apache2/conf-available/
vim /etc/apache2/conf-available/self-service-password.conf
Datei /etc/apache2/conf-available/self-service-password.conf
Alias /selfservice /usr/share/self-service-password

    <Directory /usr/share/self-service-password>
        AllowOverride None
        <IfVersion >= 2.3>
            Require all granted
        </IfVersion>
        <IfVersion < 2.3>
            Order Deny,Allow
            Allow from all
        </IfVersion>
    </Directory>

    <Directory /usr/share/self-service-password/scripts>
        AllowOverride None
        <IfVersion >= 2.3>
            Require all denied
        </IfVersion>
        <IfVersion < 2.3>
            Order Deny,Allow
            Deny from all
        </IfVersion>
    </Directory>

Aktivieren der Apache-Konfiguration und Neustart des Apache-Servers

a2enconf self-service-password
service apache2 restart

Editieren der Self-Service-Password-Konfiguration

vim /usr/share/self-service-password/conf/config.inc.php
Datei /usr/share/self-service-password/conf/config.inc.php
# Nachfolgend sind nur jene Zeilen der Konfigurationsdatei dargestellt,
# in denen sich Änderungen ergeben. Passen Sie diese entsprechend an
# und ersetzen sie die Zeilen in der Konfigurationsdatei.

$ldap_url = "ldaps://ldap.ihre-schule.de:636";
$ldap_binddn = "CN=Administrator,CN=Users,DC=schulnetz,DC=intra";
$ldap_bindpw = "<LDAP-Administrator-Passwort>";
$ldap_base = "OU=School,DC=schulnetz,DC=intra";
$ldap_login_attribute = "sAMAccountName";
$ad_mode = true;
$samba_mode = true;
$pwd_min_length = 8;
$use_questions = false;
$mail_from = "<E-Mail-Adresse zum Versenden neuer Passwörter>";
$mail_smtp_host = '<SMTP-Server>';
$mail_smtp_auth = true;
$mail_smtp_user = '<SMTP-Benutzer>';
$mail_smtp_pass = '<SMTP-Passwort>';
$mail_smtp_port = 587;
$use_sms = false;
$keyphrase = "<langes Passwort für Verschlüsselung>";
$lang = "de";

Aufruf der Webschnittstelle

Benutzer können das Tool Self Service Password nun dazu verwenden, ihr Passwort zu ändern oder sich an die im LDAP-Verzeichnis hinterlegte E-Mail-Adresse einen Link zum zurücksetzen des Passworts zukommen zu lassen.

Je nachdem, ob und wie Sie den Reverse-Proxy konfiguriert haben, ist Self Service Password unter der IP oder dem FQDN des Samba-Servers erreichbar - z. B.:

  • 10.1.100.7/selfservice
  • usermanagement.ihre-schule.de/selfservice

Letzte Aktualisierung der Seite: 2020-07-16 13:39