[Partage] Script d'automatisation (Débutant)

Venez ici partager vos astuces et aides autour de Samba4
Drthrax74
Messages : 2
Inscription : 12 août 2020 - 15:08

01 oct. 2023 - 22:24

Bonjour,

Je vous partages mon script d'installation complet d'installation d'un environnement Debian 11 .



Fonctionnement:
- [GENERIQUE] Création d'un fichier de configuration (Variable=valeur)

- [GENERIQUE] Configuration de la carte-réseau (/etc/network/interfaces)
- [GENERIQUE] Définir le nom de la machine (/etc/hostname et /etc/hosts)
- [GENERIQUE] Définir la langue du systèmes (locale, keymap)
- [GENERIQUE] Définir le Fuseau Horaire (Europe/Paris, NTP True)
- [GENERIQUE] Définir un serveur de Temps (NTP)
- [GENERIQUE] Définir les dépôts Debian de base (Main contrib non-free)
- [GENERIQUE] Mise à jour du Systèmes
- [GENERIQUE] Ajout de package utilitaires (curl, htop, sudo, wget)
- [GENERIQUE] Sudoers (Apprentissage exclusivement)
- [GENERIQUE] Remise à zéro de la Bannières de connexion
- [GENERIQUE] Installation du package resolvconf

- [DHCP] Installation et configuration d'un Serveur DHCP (/etc/default/isc-dhcp-server, /etc/dhcp/dhcpd.conf)
- [DHCP] Réservation IP dans le DHCP

- [Samba-AD-DC] Désactivation Avahi
- [Samba-AD-DC] Installation des packages pré-requis (CF. DOC)
- [Samba-AD-DC] Ajout du dépôt Samba avec sa clé GPG
- [Samba-AD-DC] Installation de Samba-AD
- [Samba-AD-DC] Configuration d'un Nom de domaine (/etc/krb5.conf)
- [Samba-AD-DC] Samba en Contrôleur de domaine (samba-tool domain provision)
- [Samba-AD-DC] Définir le mot de passe du compte administrator
- [Samba-AD-DC] Désactivation de l'expiration du compte administrator (Commenté)
- [Samba-AD-DC] Configuration Resolvconf
- [Samba-AD-DC] Création d'un liens symbolique
- [Samba-AD-DC] Gestions des services
- [Samba-AD-DC] Vérification de fonctionnement Active Directory
- [Samba-AD-DC] Vérification de fonctionnement DNS
- [Samba-AD-DC] Création de la Zone indirecte (Expérimental)
- [Samba-AD-DC] Ajout d'un utilisateur
- [Samba-AD-DC] Modification de l'utilisateur en tant qu'administrateur
- [Samba-AD-DC] Activation du compte
- [Samba-AD-DC] Déblocage du compte (Optionnel)
- [Samba-AD-DC] Vérification que le compte fonctionne

Code : Tout sélectionner

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;
Configuration de la carte-réseau

Code : Tout sélectionner

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;
Définir un nom de machine:

Code : Tout sélectionner

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;
Définir la langue du système
Je met la langue en Français.

Code : Tout sélectionner

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;
Fuseau Horaire et synchronisation
Je sais pas si c'est la meilleur méthode, je fais comme ceci.

Code : Tout sélectionner

clear;
timedatectl set-timezone Europe/Paris;
timedatectl set-ntp true;
timedatectl set-local-rtc false;
Serveur de Temps NTP

Code : Tout sélectionner

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;
Dépôt Debian 11

Code : Tout sélectionner

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;
Mise à jour du Système

Code : Tout sélectionner

clear;
apt update     1>/dev/null;
apt upgrade -y 1>/dev/null;
Installation de quelque utilitaires

Code : Tout sélectionner

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;
Sudoers
Mauvaise pratique dans un environnement de production, apprentissage uniquement

Code : Tout sélectionner

clear;
source /etc/os-ad;
echo "$SUDOERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/admin;
Bannière de connexion

Code : Tout sélectionner

clear;
echo "" > /etc/motd;
Paquet Réseau

Code : Tout sélectionner

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

Code : Tout sélectionner

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 d'un serveur Active Directory

Désactivation du service Avahi[/CODE]

Code : Tout sélectionner

clear;
systemctl disable --now avahi-daemon.service 2>/dev/null;
systemctl disable --now avahi-daemon.socket  2>/dev/null;
Installation des packages requis

Code : Tout sélectionner

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;

Dépôts Samba

Code : Tout sélectionner

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 de Samba-AD-DC

Code : Tout sélectionner

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

Configuration du Domaine

Code : Tout sélectionner

clear;
source /etc/os-ad;
echo "[libdefaults]
  default_realm = $DOMAINE3.$DOMAINE4
  dns_lookup_kdc = true
  dns_lookup_realm = false" > /etc/krb5.conf;
Samba en Contrôleur de Domaine

Code : Tout sélectionner

clear;
source /etc/os-ad;
rm -f /etc/samba/smb.conf;
samba-tool domain provision --realm=$DOMAINE3.$DOMAINE4 --domain $DOMAINE3 --server-role=dc;
Définir le mot de passe du compte Administrator

Code : Tout sélectionner

clear;
source /etc/os-ad;
samba-tool user setpassword --newpassword=$PASSWORD_ADMIN administrator;
# samba-tool user setexpiry administrator --noexpiry;
Vérficiation du DNS sur le serveur SAMBA-AD-DC

Code : Tout sélectionner

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

Resolvconf

Code : Tout sélectionner

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

Liens Symbolique Kerberos

Code : Tout sélectionner

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

Gestions des services

Code : Tout sélectionner

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;

Tester l'active Directory

Code : Tout sélectionner

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

Tester la résolution DNS

Code : Tout sélectionner

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

Création de la Zone Inversée (Expérimental)
La création de la zone Inversée à pas été vérifier pour le moment .

Code : Tout sélectionner

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;
Répondre