scripte/ldap.sh

108 lines
4.1 KiB
Bash

#!/bin/bash
# --------------------------------------------------------------
# Betriebsanleitung für das LDAP-Integrations-Skript
# --------------------------------------------------------------
# Dieses Skript richtet die LDAP-Integration auf einem Debian 12 System ein.
# Es stellt sicher, dass sowohl lokale als auch LDAP-Benutzer korrekt abgerufen werden können.
# Folgende Schritte werden durchgeführt:
# 1. Überprüfung, ob das Skript mit Root-Rechten ausgeführt wird.
# 2. Installation der notwendigen Pakete für LDAP-Integration und `nslcd`.
# 3. Konfiguration der Datei `/etc/nsswitch.conf`, um sowohl lokale als auch LDAP-Benutzer zu verwenden.
# 4. Konfiguration der Datei `/etc/nslcd.conf`, um die Verbindung zum LDAP-Server herzustellen.
# 5. Neustart des `nslcd`-Dienstes und Überprüfung der LDAP-Integration.
# 6. Überprüfung der Benutzer und Gruppen, um sicherzustellen, dass sie korrekt angezeigt werden.
#
# Wichtige Hinweise:
# - Das Skript muss mit Root-Rechten ausgeführt werden. Falls dies nicht der Fall ist, wird es automatisch beendet.
# - Die Konfiguration von `nslcd.conf` und `nsswitch.conf` muss korrekt sein, damit die LDAP-Integration funktioniert.
# - Prüfen Sie die Systemprotokolle, falls es beim Start von `nslcd` Fehler gibt.
# --------------------------------------------------------------
# Überprüfen, ob das Skript als root ausgeführt wird
if [ "$(id -u)" -ne 0 ]; then
echo "Dieses Skript muss mit Root-Rechten ausgeführt werden!"
exit 1
fi
# LDAP-Server-Konfiguration
LDAP_URI="ldap://192.168.174.101:7389"
LDAP_BASE="dc=zell-aufmass,dc=de"
LDAP_BINDDN="uid=Administrator,cn=users,dc=zell-aufmass,dc=de"
LDAP_BINDPW="6%&6DdWMLzjS^i"
# Installiere die benötigten Pakete für LDAP und nslcd
echo "Installiere notwendige Pakete..."
apt update
apt install -y libnss-ldapd libpam-ldapd ldap-utils nslcd
# Konfiguriere /etc/nsswitch.conf
echo "Konfiguriere /etc/nsswitch.conf..."
sed -i 's/^passwd:.*/passwd: compat ldap/' /etc/nsswitch.conf
sed -i 's/^group:.*/group: compat ldap/' /etc/nsswitch.conf
sed -i 's/^shadow:.*/shadow: compat ldap/' /etc/nsswitch.conf
# Konfiguriere /etc/nslcd.conf
echo "Konfiguriere /etc/nslcd.conf..."
cat > /etc/nslcd.conf <<EOF
# URI des LDAP-Servers
uri $LDAP_URI
# Basis-DN für die Suche
base $LDAP_BASE
# Bind-DN und Passwort für die Authentifizierung
binddn $LDAP_BINDDN
bindpw $LDAP_BINDPW
# Verhindere DNS-Auflösung für LDAP-Anfragen, da dies manchmal zu Problemen führen kann
# nsswitch_use_dns no
EOF
# Starte den nslcd-Dienst neu
echo "Starte den nslcd-Dienst neu..."
systemctl restart nslcd
# Überprüfe, ob der nslcd-Dienst läuft
echo "Überprüfe den Status von nslcd..."
systemctl status nslcd
# Überprüfen der LDAP-Integration
echo "Überprüfe, ob Benutzer und Gruppen aus LDAP korrekt angezeigt werden..."
getent passwd
getent group
# Überprüfen, ob lokale Benutzer angezeigt werden
echo "Überprüfe, ob lokale Benutzer korrekt angezeigt werden..."
getent passwd | grep -i 'debian' # Beispiel: Filtern nach einem lokalen Benutzer
# LDAP-Gruppe für Sudo-Rechte und SSH-Zugriff konfigurieren
# LDAP-Gruppe für Sudo-Rechte hinzufügen (Ändere 'Administrators' auf die gewünschte Gruppe)
GRUPPE="Administrators"
echo "Füge Gruppe $GRUPPE zu Sudo-Rechten hinzu..."
# Sicherstellen, dass die Gruppe existiert
getent group $GRUPPE
# Benutzer zur Sudo-Gruppe hinzufügen
usermod -aG sudo $GRUPPE
# Überprüfen, ob der SSH-Daemon installiert ist
if ! dpkg -l | grep -q openssh-server; then
echo "OpenSSH-Server ist nicht installiert. Installiere es jetzt..."
apt update && apt install -y openssh-server
fi
# SSH-Zugriff für diese Gruppe aktivieren
echo "SSH-Zugriff für Gruppe $GRUPPE erlauben..."
echo "AllowGroups root $GRUPPE" >> /etc/ssh/sshd_config
# SSH-Dienst neu starten
systemctl restart ssh
# Root-Rechte der Gruppe zuweisen (sudo erlauben)
echo "Root-Rechte für Gruppe $GRUPPE (über Sudo) zuweisen..."
echo "%$GRUPPE ALL=(ALL:ALL) ALL" >> /etc/sudoers
# Abschluss
echo "LDAP-Integration abgeschlossen. Teste die Anmeldung über SSH oder Konsole."