Installer et configurer un Samba-AD RODC sur RedHat et 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.

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 l’adresse IP 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 CentOS7 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.19 validés par l’équipe de Tranquil IT peuvent être téléchargés à partir de l’url https://samba.tranquil.it/redhat8/samba-4.19/. Lorsqu’il sera nécessaire de mettre à niveau vers Samba-4.19, il suffira de changer l’url du dépôt à https://samba.tranquil.it/redhat8/samba-4.19/ et de suivre les notes de mise à niveau.

  • 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.19/
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 RedHat8 et ses distributions dérivées :

    yum install -y samba samba-dc samba-winbind samba-winbind-clients krb5-workstation ldb-tools bind chrony bind-utils samba-client
    

Attention

Le support RODC, il est impératif d’utiliser une version de Samba supérieure à 4.9. Le support RODC est globalement fonctionnel mais il n’est pas complet, il manque notamment le forwarding d’authentification NTLM quand le hash de mot de passe n’a pas été synchronisé.

Mettre en place le service RODC

  • Modifier /etc/resolv.conf pour qu’il pointe sur lui-même.

  • Joindre la machine au domaine :

    samba-tool domain join mydomain.lan RODC -U MYDOMAIN\\Administrator
    
  • Dans le fichier /etc/samba/smb.conf, rajouter le forwarder DNS :

    dns forwarder = 8.8.8.8
    
  • Lancer le service Samba avec systemctl start samba.

  • Modifier /etc/resolv.conf pour qu’il pointe sur lui-même :

    search mydomain.lan
    nameserver 127.0.0.1
    

Tester la réplication des mots de passe utilisateur sur le serveur RODC

  • Sur srvads, ajouter un utilisateur en tant que membre du groupe Allowed RODC Password Replication Group.

  • Sur srvrodc :

    samba-tool rodc preload myuser --server=srvads.mydomain.lan
    
  • Si tout c’est bien passé :

    Replicating DN CN=myuser,CN=Users,DC=mondomaine,DC=lan
    Exop on[CN=myuser,CN=Users,DC=mondomaine,DC=lan] objects[1] linked_values[0]