Seite 1 von 1

[Teilen] Automatisierungsskript (Anfänger)

Veröffentlicht: 1. Oktober 2023 - 22:24 Uhr
von Drthrax74
Guten Morgen,

Ich teile mit Ihnen mein vollständiges Installationsskript zum Einrichten einer Debian 11-Umgebung.



Funktion:
- [GENERIC] Erstellen einer Konfigurationsdatei (Variable=Wert)

- [GENERIC] Konfigurieren der Netzwerkkarte (/etc/network/interfaces)
- [GENERIC] Festlegen des Hostnamens (/etc/hostname und /etc/hosts)
- [GENERIC] Festlegen der Systemsprache (Locale, Keymap)
- [GENERIC] Festlegen der Zeitzone (Europe/Paris, NTP True)
- [GENERIC] Festlegen eines Zeitservers (NTP)
- [GENERIC] Festlegen der Basis-Debian-Repositories (Main contrib non-free)
- [GENERIC] Aktualisieren des Systems
- [GENERIC] Hinzufügen von Hilfsprogrammen (curl, htop, sudo, wget)
- [GENERIC] Sudoers (nur zu Lernzwecken)
- [GENERIC] Zurücksetzen der Anmeldebanner
- [GENERIC] Installieren des resolvconf-Pakets

- [DHCP] Installieren und Konfigurieren eines DHCP-Servers (/etc/default/isc-dhcp-server, /etc/dhcp/dhcpd.conf)
- [DHCP] IP-Reservierung in DHCP

- [Samba-AD-DC] Avahi deaktivieren
- [Samba-AD-DC] Erforderliche Pakete installieren (siehe Dokumentation)
- [Samba-AD-DC] Samba-Repository mit GPG-Schlüssel hinzufügen
- [Samba-AD-DC] Samba-AD installieren
- [Samba-AD-DC] Domänennamen konfigurieren (/etc/krb5.conf)
- [Samba-AD-DC] Samba als Domänencontroller einrichten (samba-tool domain provision)
- [Samba-AD-DC] Administratorkennwort festlegen
- [Samba-AD-DC] Ablauf des Administratorkontos deaktivieren (auskommentiert)
- [Samba-AD-DC] Resolvconf konfigurieren
- [Samba-AD-DC] Symbolischen Link erstellen
- [Samba-AD-DC] Dienste verwalten
- [Samba-AD-DC] Active Directory-Funktionalität prüfen
- [Samba-AD-DC] DNS-Funktionalität
prüfen [Samba-AD-DC] Indirekte Zone erstellen (Experimentell)
– [Samba-AD-DC] Benutzer hinzufügen
– [Samba-AD-DC] Benutzer zum Administrator machen
– [Samba-AD-DC] Konto aktivieren
– [Samba-AD-DC] Konto entsperren (Optional)
– [Samba-AD-DC] Kontofunktionalität überprüfen

Code: Alle auswählen

clear;
echo "#####################################
# Fichier de configuration #
############################

# Machine
NOM=sldebian

# Adresse de Bouclage
BOUCLAGE=127.0.0.1

# Interface Physique
NET=ens18

# IPV4
IP=192.168.10.5
BR=192.168.10.255
MASK=255.255.255.0
GW=192.168.10.1
DNS1=192.168.10.1

# DHCP
RESEAU=192.168.10.0
ZONE_INVERSE=10.168.192.in-addr.arpa
DHCP_DEBUT='192.168.10.20'
DHCP_FIN='192.168.10.30'
MAC=$(ip add show $NET | grep ff:ff | cut -d "r" -f 2 | cut -c 2-18)

# AD-DC
DOMAINE1=lan
DOMAINE2=local
DOMAINE3=LAN
DOMAINE4=LOCAL
PASSWORD_ADMIN=admin

# LINUX
SUDOERS=marc


#####################################" > /etc/os-ad;
Netzwerkkartenkonfiguration

Code: Alle auswählen

clear;
source /etc/os-ad;
echo "##########################################
source /etc/network/interfaces.d/*
##########################################
# Adresse de bouclage
auto lo
iface lo inet loopback
##########################################
# Interface principale en Statique
auto ${NET}
allow-hotplug ${NET}
iface ${NET} inet static
 address         ${IP}
 netmask         ${MASK}
 gateway         ${GW}
 dns-nameservers ${DNS1}
 dns-search      $DOMAINE1.$DOMAINE2
 dns-domain      $DOMAINE1.$DOMAINE2
##########################################" > /etc/network/interfaces; 
systemctl restart networking;
Definiere einen Maschinennamen:

Code: Alle auswählen

clear;
source /etc/os-ad;
hostnamectl set-hostname $NOM;
echo "##############################################
127.0.0.1    localhost
127.0.0.1    localhost localhost.localdomain
$IP ${NOM}.${DOMAINE1}.${DOMAINE2} ${NOM}
##############################################" > /etc/hosts;
Systemsprache einstellen
Ich stelle die Sprache auf Französisch ein.

Code: Alle auswählen

clear;
apt install -y locales-all 1>/dev/null;
localectl set-locale "fr_FR.UTF-8";
localectl set-keymap "fr";
localectl set-x11-keymap "fr" "pc105" "latin9" "terminate:ctrl_alt_bksp";
systemctl restart console-setup.service;
Zeitzone und Synchronisierung
Ich weiß nicht, ob das die beste Methode ist, aber ich mache es so.

Code: Alle auswählen

clear;
timedatectl set-timezone Europe/Paris;
timedatectl set-ntp true;
timedatectl set-local-rtc false;
NTP-Zeitserver

Code: Alle auswählen

clear;
echo "[Time]
NTP=0.debian.pool.ntp.org
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org" > /etc/systemd/timesyncd.conf;
systemctl restart systemd-timesyncd.service;
Debian 11-Repository

Code: Alle auswählen

clear;
source /etc/os-release;
echo "deb http://ftp.fr.debian.org/debian/               $VERSION_CODENAME main contrib non-free
deb-src http://ftp.fr.debian.org/debian/           $VERSION_CODENAME main
deb http://security.debian.org/debian-security     $VERSION_CODENAME-security main contrib
deb-src http://security.debian.org/debian-security $VERSION_CODENAME-security main contrib
deb http://ftp.fr.debian.org/debian/               $VERSION_CODENAME-updates main contrib
deb-src http://ftp.fr.debian.org/debian/           $VERSION_CODENAME-updates main contrib" > /etc/apt/sources.list;
Systemaktualisierung

Code: Alle auswählen

clear;
apt update     1>/dev/null;
apt upgrade -y 1>/dev/null;
Installation einiger Hilfsdienste

Code: Alle auswählen

clear;
apt install -y curl                       1>/dev/null;
apt install -y htop                       1>/dev/null;
apt install -y software-properties-common 1>/dev/null;
apt install -y sudo                       1>/dev/null;
apt install -y wget                       1>/dev/null;
Sudors
Schlechte Praktiken in einer Produktionsumgebung, nur daraus lernen

Code: Alle auswählen

clear;
source /etc/os-ad;
echo "$SUDOERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/admin;
Anmeldebanner

Code: Alle auswählen

clear;
echo "" > /etc/motd;
Netzwerkpaket

Code: Alle auswählen

apt install -y resolvconf 1>/dev/null;
DHCP-Installation

Code: Alle auswählen

clear;
apt remove --purge ifupdown2   1>/dev/null 2>/dev/null;
apt install -y isc-dhcp-server 1>/dev/null;

source /etc/os-ad;
echo "#########################################
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
DHCPDv4_PID=/var/run/dhcpd.pid
INTERFACESv4=\"$NET\"
#########################################" > /etc/default/isc-dhcp-server;
echo "authoritative;
subnet $RESEAU netmask $MASK {
  range $DHCP_DEBUT $DHCP_FIN;
  default-lease-time 86400;
  max-lease-time 676800;
  option domain-name-servers $DNS1;
  option netbios-name-servers $DNS1;
  option routers $GW;
  option subnet-mask $MASK;
  option broadcast-address $BR;
  # Plantage
  #option domain-name "$DOMAINE1";
}
host $NOM {
    hardware ethernet $MAC;
    fixed-address $IP;
}" > /etc/dhcp/dhcpd.conf;
systemctl enable --now isc-dhcp-server;
Installation eines Active Directory-Servers

Avahi-Dienstdeaktivierung

Code: Alle auswählen

clear;
systemctl disable --now avahi-daemon.service 2>/dev/null;
systemctl disable --now avahi-daemon.socket  2>/dev/null;
Installation der erforderlichen Pakete

Code: Alle auswählen

clear;
apt install -y apt-transport-https 1>/dev/null;
apt install -y curl                1>/dev/null;
apt install -y dnsutils            1>/dev/null;
apt install -y gnupg               1>/dev/null;
apt install -y htop                1>/dev/null;
apt install -y lsb-release         1>/dev/null;
apt install -y net-tools           1>/dev/null;
apt install -y nmap                1>/dev/null;
apt install -y rsync               1>/dev/null;
apt install -y screen              1>/dev/null;
apt install -y sudo                1>/dev/null;
apt install -y tcpdump             1>/dev/null;
apt install -y telnet              1>/dev/null;
apt install -y vim                 1>/dev/null;
apt install -y wget                1>/dev/null;

Samba-Depots

Code: Alle auswählen

clear;
wget -qO-  https://samba.tranquil.it/tissamba-pubkey.gpg | tee /usr/share/keyrings/tissamba.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/tissamba.gpg] https://samba.tranquil.it/debian/samba-4.18/ $(lsb_release -c -s) main" > /etc/apt/sources.list.d/tissamba.list;
apt update 1>/dev/null;

Installation von Samba-AD-DC

Code: Alle auswählen

clear;
export DEBIAN_FRONTEND=noninteractive
apt install -y ldb-tools              1>/dev/null;
apt install -y libnss-winbind         1>/dev/null;
apt install -y krb5-user              1>/dev/null;
apt install -y python3-cryptography   1>/dev/null;
apt install -y samba                  1>/dev/null;
apt install -y smbclient              1>/dev/null;
apt install -y winbind                1>/dev/null;
unset DEBIAN_FRONTEND

Domänenkonfiguration

Code: Alle auswählen

clear;
source /etc/os-ad;
echo "[libdefaults]
  default_realm = $DOMAINE3.$DOMAINE4
  dns_lookup_kdc = true
  dns_lookup_realm = false" > /etc/krb5.conf;
Samba als Domänencontroller

Code: Alle auswählen

clear;
source /etc/os-ad;
rm -f /etc/samba/smb.conf;
samba-tool domain provision --realm=$DOMAINE3.$DOMAINE4 --domain $DOMAINE3 --server-role=dc;
Legen Sie das Passwort für das Administratorkonto fest

Code: Alle auswählen

clear;
source /etc/os-ad;
samba-tool user setpassword --newpassword=$PASSWORD_ADMIN administrator;
# samba-tool user setexpiry administrator --noexpiry;
DNS-Verifizierung auf dem SAMBA-AD-DC-Server

Code: Alle auswählen

clear;
grep  "dns forwarder" /etc/samba/smb.conf;

Resolvconf

Code: Alle auswählen

clear;
source /etc/os-ad;
sed -i -e "s/$DNS1/$BOUCLAGE/g" /etc/resolv.conf;

Symbolische Kerberos-Links

Code: Alle auswählen

clear;
rm -f /var/lib/samba/private/krb5.conf;
ln -s /etc/krb5.conf /var/lib/samba/private/krb5.conf;

Servicemanagement

Code: Alle auswählen

clear;
systemctl disable nmbd;
systemctl disable samba;
systemctl disable smbd;
systemctl disable winbind;
systemctl mask    samba;
systemctl mask    nmbd;
systemctl mask    smbd;
systemctl mask    winbind;
systemctl unmask samba-ad-dc;
systemctl enable samba-ad-dc;
reboot;

Testen von Active Directory

Code: Alle auswählen

clear;
source /etc/os-ad;
echo "$PASSWORD_ADMIN" | /usr/bin/kinit administrator;

DNS-Auflösung testen

Code: Alle auswählen

clear;
source /etc/os-ad;
dig @localhost google.fr;
dig @localhost $NAME.$DOMAINE1.$DOMAINE2;
dig -t SRV @localhost _ldap._tcp.$DOMAINE1.$DOMAINE2;

Entstehung der invertierten Zone (Experimental)
Die Entstehung der invertierten Zone wurde noch nicht verifiziert.

Code: Alle auswählen

clear;
source /etc/os-ad;
# Suppression
samba-tool dns zonedelete $NOM $ZONE_INVERSE --username=administrator --password=$PASSWORD_ADMIN 1>/dev/null;
# Creation
samba-tool dns zonecreate $NOM $ZONE_INVERSE --username=administrator --password=$PASSWORD_ADMIN 1>/dev/null;
samba-tool dns add $NOM.$DOMAINE1.$DOMAINE2 $ZONE_INVERSE 55 PTR $NOM.$DOMAINE1.$DOMAINE -U administrator;