Installer et configurer Samba-AD sur RHEL et ses dérivées
Note
La distribution EnterpriseLinux8 et ses dérivés n’intègrent pas les paquets Samba-AD. En effet, Samba-AD s’appuie sur Heimdal Kerberos pour la prise en charge d’Active Directory alors que RedHat ne distribue et ne prend en charge que les produits basés sur Kerberos-MIT.
Note
Les RPMs de Tranquil IT sont actuellements validés pour Redhat7, Redhat8 et Redhat9 (et ses dérivés comme CentOS, AlmaLinux, OracleLinux, etc.).
Si vous souhaitez vous en tenir à un dérivé de Redhat soutenu par la communauté, nous vous recommandons d’utiliser AlmaLinux8.4 que nous utilisons actuellement pour la construction et les tests.
Choisir le suffixe DNS pour le domaine
Pour le choix du nom de domaine, il y a deux options :
Utiliser un suffixe DNS terminant en
.lan
, par exemplemydomain.lan
.Utiliser un sous domaine d’un domaine public que vous possédez, par exemple
ad.mycompany.com
.
Attention
Dans tous les cas il faut absolument éviter les suffixes en .local
car ce suffixe a été approprié par Apple pour son protocole Bonjour / mDNS.
Dans les instructions ci-dessous, on prendra pour nom de domaine mydomain.lan
que vous remplacerez avec le nom de domaine de votre choix.
Installer le serveur RedHat8 ou dérivé
Pour installer une RedHat8 neuve (machine physique ou virtuelle) sans interface graphique et uniquement avec le service SSH installé (installation de type minimale), utiliser cette procédure pour RedHat.
Cette documentation est également valable pour un hôte RedHat7.
Note
Nous recommandons l’installation de Samba-AD sur Linux (Debian / Redhat8 et dérivées), configuré selon les Recommandations de l’ANSSI pour configurer un système GNU / Linux.
Note
Assurez-vous que vous n’avez pas de dépendances à SSSD.
Configurer les fonctions réseau de votre serveur
Configurer le nom DNS
Indication
Le nom de de votre nouveau serveur Samba-AD ne doit pas dépasser 15 caractères (limite liée au sAMAccountName
dans Active Directory). Dans cette documentation nous allons utiliser le nom srvads.
Le nom du serveur doit être un nom FQDN, c’est à dire la concaténation du nom de machine et du suffixe DNS.
Modifier le fichier
/etc/hostname
et y renseigner le nom FQDN du serveur:srvads.mydomain.lan
Modifier
/etc/hosts
, renseigner le nom FQDN et le nom court du serveur.
Indication
Sur la ligne correspondant à l’adresse IP du serveur Samba-AD mettre d’abord le nom FQDN, puis ensuite le nom court.
Ne pas modifier la ou les lignes contenant le terme
localhost
:
# /etc/hosts of the Samba-AD server
10.0.0.10 srvads.mydomain.lan srvads
Configurer la sécurité de votre serveur
Modifier le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
et définir une adresse IP statique. Le fichier à modifier peut être différent, par exempleifcfg-ens0
:# /etc/sysconfig/network-scripts/ifcfg-eth0 du serveur Samba-AD TYPE="Ethernet" BOOTPROTO="static" NAME="eth0" ONBOOT="yes" IPADDR=10.0.0.10 NETMASK=255.255.255.0 GATEWAY=10.0.0.254 DNS1=10.0.0.1
Appliquer la configuration réseau en redémarrant la machine avec un reboot.
Indication
Si vous avez un proxy d’entreprise.
Pour rajouter le proxy pour installer des paquets Yum, rajouter les lignes suivantes à la fin de /etc/yum.conf
en les adaptant à votre contexte :
proxy=http://proxy.mydomain.lan:3128
#proxy_username=
#proxy_password=
Pour configurer le proxy pour les différentes commandes de l’utilisateur root, rajouter les lignes suivantes à la fin de /root/.bashrc
:
export http_proxy=http://proxy.mydomain.lan:3128
export https_proxy=http://proxy.mydomain.lan:3128
export ftp_proxy=http://proxy.mydomain.lan:3128
#export no_proxy=.lan,.local
Pour prendre en compte immédiatement cette modification, faites source /root/.bashrc.
Configurer la sécurité de votre serveur
Après le redémarrage, configurer la langue du système en anglais afin de faciliter la recherche de problèmes dans les logs :
localectl set-locale LANG=en_US.utf8 localectl status
Vérifier que SELinux est désactivé :
vi /etc/selinux/config
Puis dans le fichier, remplacer la valeur actuelle par (attention, il faut modifier la ligne SELINUX= et non la ligne SELINUXTYPE=!) :
SELINUX=disabled
Après reboot, vérifier que SELinux est bien désactivée, la commande sestatus doit renvoyer :
SELinux status: disabled
Configurer les règles de pare-feu pour ouvrir les ports nécessaires au fonctionnement de Samba-AD :
systemctl start firewalld systemctl enable firewalld firewall-cmd --zone=public --add-port=53/tcp --add-port=53/udp --permanent firewall-cmd --zone=public --add-port=88/tcp --add-port=88/udp --permanent firewall-cmd --zone=public --add-port=135/tcp --permanent firewall-cmd --zone=public --add-port=389/tcp --add-port=389/udp --permanent firewall-cmd --zone=public --add-port=445/tcp --permanent firewall-cmd --zone=public --add-port=464/tcp --add-port=464/udp --permanent firewall-cmd --zone=public --add-port=636/tcp --permanent firewall-cmd --zone=public --add-port=3268/tcp --permanent firewall-cmd --zone=public --add-port=3269/tcp --permanent firewall-cmd --zone=public --add-port=50000-51000/tcp --permanent firewall-cmd --zone=public --add-port=49152-65535/tcp --permanent systemctl restart firewalld
Désactiver avahi-daemon (protocole mDNS / bonjour):
systemctl stop avahi-daemon.service avahi-daemon.socket systemctl disable avahi-daemon.service avahi-daemon.socket
Ajouter des outils utiles pour votre serveur
Mettre à jour la distribution et installer le dépôt EPEL et quelques outils indispensables :
yum update -y
yum install -y epel-release
yum install -y wget sudo screen nmap telnet tcpdump rsync net-tools bind-utils htop
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
yum install -y wget sudo screen nmap telnet tcpdump rsync net-tools bind-utils htop
Vous pouvez maintenant passer à l’étape suivante et installer Samba-AD sur votre distribution RedHat8 ou dérivée.
Les paquets de la dernière version 4.20 validé par l’équipe Tranquil IT peuvent être téléchargés depuis l’url https://samba.tranquil.it/redhat9/samba-4.20/.
Quand il sera necessaire d’upgrader en Samba-4.21, juste changerl’url du repo vers https://samba.tranquil.it/redhat9/samba-4.21/ et suivre les notes de mises à jour sur la page de mises à jour.
Récupérer la clé de signature RPM et configurer un dépôt YUM :
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-7 https://samba.tranquil.it/RPM-GPG-KEY-TISSAMBA-7
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-7
echo "[tis-samba]
name=tis-samba
baseurl=https://samba.tranquil.it/redhat7/samba-4.20/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-8" > /etc/yum.repos.d/tissamba.repo
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-8 https://samba.tranquil.it/RPM-GPG-KEY-TISSAMBA-8
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-8
echo "[tis-samba]
name=tis-samba
baseurl=https://samba.tranquil.it/redhat8/samba-4.20/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-8" > /etc/yum.repos.d/tissamba.repo
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-9 https://samba.tranquil.it/RPM-GPG-KEY-TISSAMBA-9
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-9
echo "[tis-samba]
name=tis-samba
baseurl=https://samba.tranquil.it/redhat9/samba-4.20/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-9" > /etc/yum.repos.d/tissamba.repo
Vérifier l’empreinte de la clé avec sha256sum :
# For RHEL7 / RHEL8 : sha256sum /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-8 b3cd8395e3d211a8760e95b9bc239513e9384d6c954d17515ae29c18d32a4a11 /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-8 # For RHEL9 : sha256sum /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-9 05f21f368bdeb01453e37c3af2b8fcabba8986e2ce2b0d0298df6456a0bef60a /etc/pki/rpm-gpg/RPM-GPG-KEY-TISSAMBA-8
Installez les paquets Samba-AD pour RedHat9 et ses distributions dérivées :
yum --enablerepo=crb install -y samba samba-dc samba-winbind samba-winbind-clients krb5-workstation ldb-tools bind chrony bind-utils samba-client python3-markdown
Instancier le domaine Active Directory Samba
Configurer Kerberos
Modifier le fichier
/etc/krb5.conf
et remplacer tout son contenu par les 4 lignes suivantes en précisant le domaine Active Directory de votre organisation (ici MYDOMAIN.LAN) :
Attention
Le default_realm
doit absolument être écrit en LETTRES MAJUSCULES !!
[libdefaults]
default_realm = MYDOMAIN.LAN
dns_lookup_kdc = false
dns_lookup_realm = false
[realms]
MYDOMAIN.LAN = {
kdc = 127.0.0.1
}
Configurer Samba
Dffacer le fichier
/etc/smb/smb.conf
s’il a déjà été généré (il sera régénéré par la commande d’instanciation) :rm -f /etc/samba/smb.conf
Configurer Samba avec le rôle de contrôleur de domaine. Dans la ligne qui suit, vous penserez à changer à la fois le nom du royaume kerberos, et le nom court du domaine (nom netbios) :
samba-tool domain provision --realm=MYDOMAIN.LAN --domain MYDOMAIN --server-role=dc
Réinitialiser le mot de passe administrator :
samba-tool user setpassword administrator
Vérifier la ligne
dns forwarder = xxx.xxx.xxx.xxx
dans votre fichier/etc/samba/smb.conf
. Elle doit pointer vers un serveur DNS valide, par ex. :dns forwarder = 1.1.1.1
Reconfigurer la résolution DNS pour la machine locale. Dans le fichier
/etc/sysconfig/network-scripts/ifcfg-xxxx
de l’interface réseau, remplacer la ligne suivante :DNS1=127.0.0.1
Relancer NetworkManager pour prendre en compte les changements et vérifier que le resolver a bien été reporté dans
/etc/resolv.conf
:systemctl restart NetworkManager
Le script de création de domaine Samba crée un fichier
/var/lib/samba/private/krb5.conf
inutile. Il faut le supprimer et le remplacer par un lien symbolique vers le fichier/etc/krb5.conf
:rm -f /var/lib/samba/private/krb5.conf ln -s /etc/krb5.conf /var/lib/samba/private/krb5.conf
Activer Samba pour qu’il démarre automatiquement au prochain reboot :
systemctl enable samba systemctl start samba
Redémarrer la machine avec un reboot pour vérifier que Samba redémarre bien :
reboot
Après redémarrage, tester que le kerberos est bien configuré et que vous obtenez bien un TGT. Taper le mot de passe du compte administrator que vous avez défini ci-dessus avec la commande samba-tool setpassword. Si ça ne renvoie rien ou que vous obtenez un message concernant l’expiration du mot de passe, c’est que c’est bon).
kinit administrator klist
Attention
Samba-AD a fait le choix judicieux de ne pas implémenter la traduction des comptes système. L’Administrateur par défaut est donc administrator en anglais.
Tester les DNS :
dig @localhost google.fr dig @localhost srvads.mydomain.lan dig -t SRV @localhost _ldap._tcp.mydomain.lan
Valider la nouvelle installation avec un client Windows
Vous pouvez désormais joindre un poste client Windows dans votre nouveau domaine.
Pour gérer votre nouveau domaine, il faut installer les interfaces de management sur un poste Windows. La ligne de commande Samba est efficace pour de nombreuses tâches d’administration, et les interfaces graphiques RSAT sont un bon complément à la ligne de commande.
Pour l’installation des outils RSAT, suivre la page installer RSAT sur votre machine de management.
Une fois RSAT installé :
Créer et supprimer un enregistrement DNS à partir de la console DNS Active Directory.
Créer et supprimer un compte utilisateur ou un compte machine à partir de la console Utilisateurs et Ordinateurs Active Directory.
Créer une nouvelle GPO.
Super, si vous êtes parvenu jusqu’à cette étape, c’est que tout se passe bien et que vous avez un nouveau domaine Samba Active Directory opérationnel.
Maintenant, nous allons configurer le service DNS en mode BindDLZ pour améliorer les performances de votre Samba-AD.