Initialer Import der Synology Scripts

This commit is contained in:
root
2026-08-05 08:43:57 +02:00
commit 5e32a7c411
404 changed files with 79932 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
#!/bin/bash
# Globale Variablen
#HOSTNAME=$(hostname -f | tr '[:lower:]' '[:upper:]') # FQDN in Großbuchstaben
HOSTNAME=$(hostname -f)
NETBIOS=$(hostname)
DOMAIN=$(hostname -d | cut -d'.' -f1 | tr '[:lower:]' '[:upper:]') # Kurze Domain in Großbuchstaben
REALM="${DOMAIN^^}.HEIM.LAN" # Realm in Großbuchstaben, muss die gesamte Domain sein
IP_ADDRESS=$(hostname -I | awk '{print $1}')
PASSWORD="P@ssw0rd" # Globale Variable für das Administrator-Passwort
ERROR_LOG="/var/log/samba_install_error.log"
# Zertifikat-Pfade
tls_keyfile="/etc/samba/tls/private/KEY_${HOSTNAME}.pem"
tls_certfile="/etc/samba/tls/certs/fullchain_${HOSTNAME}.crt"
tls_cafile="/etc/samba/tls/certs/CERT_HEIMLAN_SubCA.crt"
# ROOT and SubCa
ROOT_CRT="CERT_HEIMLAN_RootCA.crt"
SUBCA_CRT="CERT_HEIMLAN_SubCA.crt"
# Funktion zum Beenden des Skripts bei einem Fehler
error_exit() {
echo "$1" | tee -a $ERROR_LOG
exit 1
}
# Funktion zum Kopieren der Zertifikate und Schlüssel in das entsprechende Verzeichnis
copy_certs_key() {
mkdir -p /etc/samba/tls/certs /etc/samba/tls/private || error_exit "Fehler beim Erstellen der Verzeichnisse für Zertifikate und Schlüssel"
# Kopieren der Zertifikate und Schlüssel
cp /tmp/$ROOT_CRT /etc/samba/tls/certs || error_exit "Fehler beim Kopieren des Zertifikats"
cp /tmp/$SUBCA_CRT /etc/samba/tls/certs || error_exit "Fehler beim Kopieren des Zertifikats"
cp /tmp/CERT_${HOSTNAME}.crt /etc/samba/tls/certs || error_exit "Fehler beim Kopieren des Zertifikats"
cp /tmp/fullchain_${HOSTNAME}.crt /etc/samba/tls/certs || error_exit "Fehler beim Kopieren des Fullchain-Zertifikats"
cp /tmp/KEY_${HOSTNAME}.pem /etc/samba/tls/private || error_exit "Fehler beim Kopieren des Schlüssels"
# Setzen der Berechtigungen
chmod 644 /etc/samba/tls/certs/* || error_exit "Fehler beim Setzen der Berechtigungen für Zertifikate"
chmod 600 /etc/samba/tls/private/* || error_exit "Fehler beim Setzen der Berechtigungen für Schlüssel"
}
# Funktion zum Aktualisieren und Installieren von Paketen
install_packages() {
apt-get update || error_exit "Fehler beim Ausführen von apt-get update"
apt-get upgrade -y || error_exit "Fehler beim Ausführen von apt-get upgrade"
apt-get install -y samba samba-common-bin krb5-user krb5-config winbind libnss-winbind libpam-winbind dnsutils bind9 bind9utils bind9-doc || error_exit "Fehler beim Installieren der Pakete"
}
# Funktion zum Sichern von Konfigurationsdateien
backup_configs() {
[ -f /etc/samba/smb.conf ] && mv /etc/samba/smb.conf /etc/samba/smb.conf.orig || error_exit "Fehler beim Sichern der smb.conf"
[ -f /etc/krb5.conf ] && mv /etc/krb5.conf /etc/krb5.conf.orig || error_exit "Fehler beim Sichern der krb5.conf"
}
# Funktion zum Erstellen der Samba-Konfiguration
create_samba_config() {
cat <<EOL > /etc/samba/smb.conf || error_exit "Fehler beim Schreiben der smb.conf"
[global]
workgroup = $DOMAIN
bind interfaces only = Yes
interfaces = $IP_ADDRESS
realm = $REALM
netbios name = $NETBIOS
server role = active directory domain controller
idmap_ldb:use rfc2307 = yes
server services = -dns
# TLS SETTING
tls enabled = yes
tls keyfile = $tls_keyfile
tls certfile = $tls_certfile
tls cafile = $tls_cafile
# LOGGING SETTING
log level = 1
log file = /var/log/samba/log.%m
max log size = 1000
# UNIX PASSWORD SETTING
unix password sync = yes
[sysvol]
path = /var/lib/samba/sysvol
read only = no
[netlogon]
path = /var/lib/samba/sysvol/${DOMAIN}/scripts
read only = no
EOL
}
# Funktion zum Erstellen der Kerberos-Konfiguration
create_kerberos_config() {
cat <<EOL > /etc/krb5.conf || error_exit "Fehler beim Schreiben der krb5.conf"
[libdefaults]
default_realm = $REALM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
$REALM = {
default_domain = $(hostname -d)
# pkinit_anchors = /etc/samba/tls/certs/CERT_HEIMLAN_Root.crt
kdc = $(hostname -f)
admin_server = $(hostname -f)
}
[domain_realm]
.$(hostname -d) = $REALM
$(hostname -d) = $REALM
EOL
}
# Funktion zum Provisionieren von Samba
provision_samba() {
samba-tool domain provision --use-rfc2307 --realm=$REALM --domain=${DOMAIN} --server-role=dc --adminpass=$PASSWORD --dns-backend=BIND9_DLZ || error_exit "Fehler beim Provisionieren der Samba-Domäne"
}
# Funktion zum Konfigurieren von Bind9 für DLZ
configure_bind9() {
cp /etc/bind/named.conf.options /etc/bind/named.conf.options.orig || error_exit "Fehler beim Sichern der named.conf.options"
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.orig || error_exit "Fehler beim Sichern der named.conf.local"
cat <<EOL > /etc/bind/named.conf.options || error_exit "Fehler beim Schreiben der named.conf.options"
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8; # Google DNS
};
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
EOL
cat <<EOL > /etc/bind/named.conf.local || error_exit "Fehler beim Schreiben der named.conf.local"
include "/var/lib/samba/bind-dns/named.conf";
EOL
}
# Funktion zum Setzen der Berechtigungen für Bind9 DLZ
set_bind9_permissions() {
mkdir /var/lib/samba/private/dns
chown bind:bind /var/lib/samba/bind-dns/named.conf || error_exit "Fehler beim Setzen der Berechtigungen für named.conf"
chown -R bind:bind /var/lib/samba/private/dns || error_exit "Fehler beim Setzen der Berechtigungen für das DNS-Verzeichnis"
}
# Funktion zum Neustarten der Dienste
restart_services() {
systemctl restart smbd nmbd winbind bind9 || error_exit "Fehler beim Neustarten der Dienste"
systemctl enable smbd nmbd winbind bind9 || error_exit "Fehler beim Aktivieren der Dienste"
}
# Hauptfunktion zum Ausführen aller Schritte
main() {
copy_certs_key
install_packages
backup_configs
create_samba_config
create_kerberos_config
provision_samba
configure_bind9
set_bind9_permissions
restart_services
echo "Samba AD DC mit Bind9-DLZ Installation abgeschlossen."
}
# Ausführen der Hauptfunktion
main