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 exemple mydomain.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 exemple ifcfg-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

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
  • 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.