Étiquette : Samba

  • Transformer un ubuntu en contrôleur de domaine avec Samba

    Par défaut les contrôleurs de domaines se font avec un windows server mais il est aussi possible d’en créer avec linux notamment avec Samba4

    1 – Prérequis

    • Mettre une ip fixe sur son linux

    Dans notre exemple nous avons mis 192.168.0.10

    • Vérifier le nom du linux / serveur
    hostname

    Dans notre exemple le serveur s’appele ADDC

    • Éditer le fichier hosts
    nano /etc/hosts

    Ajouter la ligne

    IP nom.nomdudomaine nom

    • Si on as fait notre serveur en tant que conteneur proxmox il faut que unprivileged container soit à false. En effet le conteneur doit être un conteneur privilégié pour pouvoir gérer lui même les ip et que ce ne soit pas proxmox qui gere sont ip
    • Si on as fait notre serveur en tant que conteneur proxmox il faut que le nesting soit à true. En effet, le conteneur doit pouvoir gérer lui même ses namespaces et que ce ne soit pas proxmox qui gère ça

    2 – Installation Samba4

    • On mets à jour le serveur
    apt -y update && apt -y upgrade
    • On installe tous les paquets nécessaires
    export DEBIAN_FRONTEND=noninteractive
     
    apt -y install acl apt-utils attr autoconf bind9utils binutils \
        bison build-essential chrpath curl debhelper dnsutils \
        docbook-xml docbook-xsl flex gcc gdb git glusterfs-common gzip \
        heimdal-multidev hostname htop krb5-config krb5-user krb5-kdc \
        lcov libacl1-dev libarchive-dev libattr1-dev \
        libavahi-common-dev libblkid-dev libbsd-dev libcap-dev libcephfs-dev \
        libcups2-dev libdbus-1-dev libglib2.0-dev libgnutls28-dev libgpgme11-dev \
        libicu-dev libjansson-dev libjs-jquery libjson-perl libkrb5-dev libldap2-dev \
        liblmdb-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpcap-dev \
        libpopt-dev libreadline-dev libsystemd-dev libtasn1-bin libtasn1-dev \
        libunwind-dev lmdb-utils locales lsb-release make mawk mingw-w64 patch \
        perl perl-modules pkg-config procps psmisc \
        python3 python3-dbg python3-dev python3-dnspython python3-gpg \
        python3-iso8601 python3-markdown python3-matplotlib python3-pexpect \
        rng-tools rsync sed sudo tar tree uuid-dev xfslibs-dev xsltproc zlib1g-dev \
        ccache python3-cryptography python3-pyasn1 python3-setproctitle wget \
        libaio-dev libgpgme-dev nettle-dev python3-all-dev python3-dbg \
        python3-dev python3-dnspython

    Ne surtout pas oublier export DEBIAN_FRONTEND=noninteractive . ça permet à samba de se faire une première configuration basique sans devoir poser des questions qui sont un peu prématurées dans l’état actuel des choses

    • Pour ubuntu uniquement, on installe le pack de langue
    apt -y install language-pack-en checkinstall
    • On fait le ménage dans toutes les installations
    apt -y autoremove
    apt -y autoclean
    apt -y clean
    • On télécharge le code source de la dernière version de samba
    wget -O samba-latest.tar.gz https://download.samba.org/pub/samba/samba-latest.tar.gz
    tar zxvf samba-latest.tar.gz
    • On a un dossier samba-4.24.0, on va dedans
    • On configure le compilateur
    ./configure \
    --prefix=/usr --exec-prefix=/usr --enable-fhs \
    --libdir=/usr/lib/x86_64-linux-gnu \
    --sysconfdir=/etc --localstatedir=/var \
    --with-systemd --systemd-install-services --with-systemddir=/etc/systemd/system \
    --systemd-smb-extra=NotifyAccess=all --systemd-nmb-extra=NotifyAccess=all \
    --systemd-winbind-extra=NotifyAccess=all --systemd-samba-extra=NotifyAccess=all \
    --with-lockdir=/var/run/samba \
    --enable-selftest
    • On compile Samba (préparez un café ou autre, ça peux prendre plusieurs minutes)
    make -j && make -j install
    • On va verrouiller l’installation pour etre sûr de ne pas récuperer les paquets des dépots ubuntu qui sont plus anciens
    apt-mark hold samba
    apt-mark showhold

    3 – Création du domaine

    • On va nettoyer s’il y a des anciennes installations
    mv --backup=t /etc/samba/smb.conf /etc/samba/smb.conf.backup
    mv --backup=t /etc/krb5.conf /etc/krb5.conf.backup
    rm -rf /var/lib/samba/private/*

    Rien à nettoyer et c’est normal puisque l’on part, dans notre exemple, d’une installation vierge

    • Création du domaine
    samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL \
    	--realm=HOKUTOTOKISAMA.LAN --domain=HOKUTOTOKISAMA --option="dns forwarder=192.168.0.103"

    Realm = nom du domaine complet

    Domain = nom du domaine sans extension

    dns forwarder = ip du serveur dns (la plupart du temps sa box)

    • On modifie le mot de passe de l’utilisateur Administrator qui a été généré par le domaine
    samba-tool user setpassword administrator
    • On désactive l’expiration du mot de passe de l’utilisateur Administrator
    samba-tool user setexpiry administrator --noexpiry
    • On crée un utilisateur qui va nous servir pour entrer les machines dans le domaine – Dans notre exemple on va l’appeler hokuto
    samba-tool user create hokuto
    • On désactive l’expiration du mot de passe de notre utilisateur
    samba-tool user setexpiry hokuto --noexpiry
    • On rajoute notre utilisateur dans le groupe des administrateurs du domaine
    samba-tool group addmembers "Domain Admins" hokuto
    • On récupère la configuration par défaut de kerberos
    cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
    • On configure notre serveur en tant que serveur dns. En effet, les machines du domaine vont demander au contrôleur de domaine comment résoudre les ip
    nano /etc/resolv.conf

    Mettre les informations suivantes dans le fichier

    nameserver ipduserveur
    search domaineavecextension
    domain domaineavecextension
    • Vérification d’utilisation du port 53. Port utilisé par le dns de Samba
    ss -tunpel | grep ":53 "

    Si on a des choses comme dans l’image suivante alors il faut suivre les étapes suivantes sinon passer à l’étape Démarrage de Samba

    • Désactivation du listener de systemd-resolve
    nano /etc/systemd/resolved.conf

    Décommenter la ligne DNSStubListener et mettre la valeur à no

    • Arrêt et désactivation du service listener
    systemctl stop systemd-resolved
    systemctl disable systemd-resolved.service
    • Vérification
    ss -tunpel | grep ":53 "

    On est tout bon

    4 – Démarrage de Samba

    • Arrêt et désactivation des anciens services
    systemctl stop smbd nmbd winbindd smb nmb winbind
    systemctl disable smbd nmbd winbindd smb nmb winbind

    Si certains services sont en failed c’est normal, cela veux dire qu’ils ne sont pas présents sur le serveur

    • Activation et démarrage de samba
    systemctl unmask samba
    systemctl enable samba
    systemctl start samba
    sleep 5
    samba-tool processes

    Tout les services sont correctement démarrés

    • Création d’une zone de recherche inversée de façon à ce que notre contrôleur de domaine puisse faire la résolution dns des appareils du domaine
    samba-tool dns zonecreate nomserveur ip.in-addr.arpa --username=nomadministrator

    Exemple

    samba-tool dns zonecreate ADDC 0.168.192.in-addr.arpa --username=administrator

    Notre serveur s’appelle ADDC

    On est sur la plage d’ip 192.168.0….

    5 – Test

    Pour tester, on peux essayer de rentrer un appareil sur le domaine

    Le tuto pour rentrer un appareil windows sur le domaine est ici

    Le tuto pour rentrer un appareil linux sur le domaine est ici