{"id":136,"date":"2018-06-29T12:47:16","date_gmt":"2018-06-29T10:47:16","guid":{"rendered":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/?p=136"},"modified":"2022-05-27T08:19:53","modified_gmt":"2022-05-27T06:19:53","slug":"samba-deployer-une-infrastructure-active-directory","status":"publish","type":"post","link":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/samba-deployer-une-infrastructure-active-directory\/","title":{"rendered":"samba &#8211; d\u00e9ployer une infrastructure Active Directory avec Linux"},"content":{"rendered":"<p>Vous en avez toujours r\u00eav\u00e9 ! Aujourd\u2019hui, c\u2019est possible avec la solution alternative libre \u00ab SaMBa \u00bb.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Samba-Logo.png\" alt=\"Samba-Logo\" \/><\/p>\n<p>Disponible sur de nombreuses architectures Linux, SaMBa est le service indispensable de partage de fichiers et d&rsquo;imprimantes entre plateformes Windows et Unix. Depuis sa version 4, SaMBa est \u00e9galement contr\u00f4leur de domaine Active Directory et supporte les protocoles d&rsquo;authentification utilis\u00e9s par Windows 2000 et plus.<\/p>\n<p><!--more--><\/p>\n<p>La formation propos\u00e9e abordera \u00e0 travers des sessions interactives et des exercices d&rsquo;application pratique les th\u00e8mes suivants :<\/p>\n<h2>Plan de la formation<\/h2>\n<p><strong>JOUR1<\/strong><\/p>\n<ol>\n<li><a href=\"#chapitre1\">Comprendre un syst\u00e8me de type Active Directory et les diff\u00e9rents services associ\u00e9s (DNS, LDAP, Kerberos, NTP)<\/a>\n<ul>\n<li><a href=\"#chapitre1-1\">Historique de SaMBa<\/a><\/li>\n<li><a href=\"#chapitre1-2\">Concepts techniques de SaMBa et Active Directory<\/a>\n<ul>\n<li><a href=\"#chapitre1-2-1\">LDAP<\/a><\/li>\n<li><a href=\"#chapitre1-2-2\">DNS<\/a><\/li>\n<li><a href=\"#chapitre1-2-3\">LM, NTLM, NETNTLMV1, NETNTLMV2<\/a><\/li>\n<li><a href=\"#chapitre1-2-4\">Kerberos<\/a><\/li>\n<li><a href=\"#chapitre1-2-5\">WINBIND<\/a><\/li>\n<li><a href=\"#chapitre1-2-6\">DFS<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre2\">Installer et configurer SaMBa ; des outils d&rsquo;administration natifs aux outils d&rsquo;administration de serveur distant (RSAT)<\/a>\n<ul>\n<li><a href=\"#chapitre2-1\">L&rsquo;anc\u00eatre couple OpenLDAP\/SaMBaPDC &#8211; <strong>TP n\u00b01<\/strong><\/a>\n<ul>\n<li><a href=\"#chapitre2-1-1\">Installation du service OpenLDAP<\/a><\/li>\n<li><a href=\"#chapitre2-1-2\">Installation de phpldapadmin<\/a><\/li>\n<li><a href=\"#chapitre2-1-3\">Installation du service SaMBa<\/a><\/li>\n<li><a href=\"#chapitre2-1-4\">Interconnection SaMBa et OpenLDAP<\/a><\/li>\n<li><a href=\"#chapitre2-1-5\">Initialisation de la base de donn\u00e9es LDAP<\/a><\/li>\n<li><a href=\"#chapitre2-1-6\">Ajout des utilisateurs (en mode manuel ou migrationtool)<\/a><\/li>\n<li><a href=\"#chapitre2-1-7\">Authentification des utilisateurs sur linux (libnss-ldap et libpam-ldap)<\/a><\/li>\n<li><a href=\"#chapitre2-1-8\">Int\u00e9gration dans le domaine formation.fr d&rsquo;un poste client Windows 7<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre2-2\">Migration vers SaMBa4 \u00e0 partir de vos environnements &#8211; <strong>TP n\u00b02<\/strong><\/a>\n<ul>\n<li><a href=\"#chapitre2-2-1\">Mise en place des briques n\u00e9cessaire \u00e0 la migration vers SaMBa4<\/a><\/li>\n<li><a href=\"#chapitre2-2-2\">Param\u00e9trage du fuseau horaire et synchronisation du temps<\/a><\/li>\n<li><a href=\"#chapitre2-2-3\">Installation de SaMBa4 sur Debian 8 Jessie<\/a>\n<ul>\n<li><a href=\"#chapitre2-2-3-1\">Compilation de SaMBa4 depuis les sources officielles<\/a><\/li>\n<li><a href=\"#chapitre2-2-3-2\">Installation de SaMBa4 depuis le d\u00e9p\u00f4t officiel Debian<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre2-2-4\">Migration de votre vieux domaine SaMBa3 OpenLDAP vers SaMBa4<\/a><\/li>\n<li><a href=\"#chapitre2-2-5\">Cr\u00e9ation de votre domaine SaMBa4<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><strong>JOUR2<\/strong><\/p>\n<ol>\n<li><a href=\"#chapitre3\">Ma\u00eetriser les particularit\u00e9s d\u2019impl\u00e9mentation d\u2019un service SaMBa4<\/a>\n<ul>\n<li><a href=\"#chapitre3-1\">Les astuces d&rsquo;Active Directory<\/a>\n<ul>\n<li><a href=\"#chapitre3-1-1\">La commande miracle : samba-tool<\/a><\/li>\n<li><a href=\"#chapitre3-1-2\">Serveur NTP pour le temps Windows<\/a><\/li>\n<li><a href=\"#chapitre3-1-3\">Int\u00e9grer un second contr\u00f4leur au domaine formation.fr<\/a><\/li>\n<li><a href=\"#chapitre3-1-4\">Synchroniser le r\u00e9pertoire SYSVOL via RSYNC pour les GPO<\/a><\/li>\n<li><a href=\"#chapitre3-1-5\">DNS migrer de SaMBaDNS vers Bind9<\/a><\/li>\n<li><a href=\"#chapitre3-1-6\">Synchroniser un annuaire OpenLDAP depuis ActiveDirectory avec LSC<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre3-2\">Diagnostiquer et r\u00e9soudre les probl\u00e8mes les plus courants<\/a>\n<ul>\n<li><a href=\"\">Gestion des logs<\/a><\/li>\n<li><a href=\"#chapitre3-2-2\">Migration de SaMBa Debian stretch vers SaMBa Debian Buster \u2013 <strong>TP n\u00b03<\/strong><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre4\">D\u00e9couvrir les nouveaux usages rendus possibles avec SaMBa4<\/a>\n<ul>\n<li><a href=\"#chapitre4-1\">Maitriser les GPO et les ADMX<\/a>\n<ul>\n<li><a href=\"#chapitre4-1-1\">GPO suppression Onedrive avec les filtres WMI<\/a><\/li>\n<li><a href=\"#chapitre4-1-2\">GPO activer le chiffrement Bitlocker sur Windows 10<\/a><\/li>\n<li><a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/samba-mise-en-place-de-laps-local-administrator\/\">GPO activer une politique des mots de passe avec LAPS<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre4-2\">Int\u00e9grer des outils \u00e0 votre AD avec SSSD<\/a>\n<ul>\n<li><a href=\"#chapitre4-2-1\">Linux via SSSD<\/a><\/li>\n<li><a href=\"#chapitre4-2-2\">Service fichiers SaMBa4 en mode standalone<\/a><br \/>\n<strong>JOUR3<\/strong><\/li>\n<li><a href=\"#chapitre4-2-3\">Synchroniser un annuaire OpenLDAP depuis ActiveDirectory avec LSC<\/a><\/li>\n<li><a href=\"#chapitre4-2-4\">sshPublicKey &#8211; stocker vos cl\u00e9s publiques SSH dans AD<\/a><\/li>\n<li><a href=\"#chapitre4-2-5\">Dokuwiki<\/a><\/li>\n<li><a href=\"#chapitre4-2-6\">FreeRadius<\/a><\/li>\n<li><a href=\"#chapitre4-2-7\">CUPS<\/a><\/li>\n<li><a href=\"#chapitre4-2-8\">NFSv4<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre4-3\">Augmenter le niveau fonctionnel du domaine SaMBa4<\/a><\/li>\n<li><a href=\"#chapitre4-4\">Int\u00e9gration d&rsquo;un contr\u00f4leur Windows Server 2008 R2<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#chapitre5\">Appr\u00e9hender la m\u00e9thodologie pour r\u00e9ussir le d\u00e9ploiement ou la migration de SaMBa4 dans votre infrastructure : retour d&rsquo;exp\u00e9rience du CNRS \u2013 LCC<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#chapitre6\">R\u00e9f\u00e9rences<\/a><\/p>\n<\/li>\n<\/ol>\n<h2>Pr\u00e9-requis<\/h2>\n<ul>\n<li>\n<p>Installation de VirtualBox 6.0.12<\/p>\n<ul>\n<li><a href=\"https:\/\/download.virtualbox.org\/virtualbox\/6.0.12\/VirtualBox-6.0.12-133076-Win.exe\">Windows<\/a><\/li>\n<li><a href=\"https:\/\/download.virtualbox.org\/virtualbox\/6.0.12\/VirtualBox-6.0.12-133076-OSX.dmg\">MacOS<\/a><\/li>\n<li><a href=\"https:\/\/www.virtualbox.org\/wiki\/Linux_Downloads\">Linux<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Installation des VirtualBox Extension Pack\n<ul>\n<li><a href=\"https:\/\/download.virtualbox.org\/virtualbox\/6.0.12\/Oracle_VM_VirtualBox_Extension_Pack-6.0.12.vbox-extpack\">All supported platforms<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Configurer le r\u00e9seau NatNetwork dans les param\u00e8tres globaux de Virtualbox<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/2019-09-19-14.33.57.png\" alt=\"2019-09-19 14.33.57\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/2019-09-19-14.33.51.png\" alt=\"2019-09-19 14.33.51\" \/><br \/>\n&#8211; Configurer les redirections suivantes afin de pouvoir vous connecter en ssh depuis l&rsquo;h\u00f4te :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/2019-09-19-15.13.09.png\" alt=\"2019-09-19 15.13.09\" \/><\/p>\n<pre><code>more \/Users\/colombet\/Library\/VirtualBox\/NatNetwork-Dhcpd.leases\n&lt;?xml version=\"1.0\"?&gt;\n&lt;Leases version=\"1.0\"&gt;\n  &lt;Lease mac=\"08:00:27:7b:00:92\" network=\"0.0.0.0\" state=\"acked\"&gt;\n    &lt;Address value=\"10.0.2.6\"\/&gt;\n    &lt;Time issued=\"1569485906\" expiration=\"1200\"\/&gt;\n  &lt;\/Lease&gt;\n&lt;\/Leases&gt;\n<\/code><\/pre>\n<ul>\n<li>Nous utiliserons les identifiants suivants pour vos VM\n<ul>\n<li>root \/ Pa$$w0rd<\/li>\n<li>Administrator \/ Pa$$w0rd<\/li>\n<li>asr \/ Pa$$w0rd<\/li>\n<li>admin \/ Pa$$w0rd<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<blockquote><p>\n  <em>Remarque<\/em> : Privil\u00e9gier le compte <strong>asr<\/strong> afin d&rsquo;ex\u00e9cuter vos commandes avec <strong>sudo<\/strong> , pour faciliter le d\u00e9roulement du TP, activer l&rsquo;astuce suivante afin de lancer des commandes <strong>sudo<\/strong> sans demande de mot de passe :\n<\/p><\/blockquote>\n<pre><code>$ asr@dc1ad:~$ su -\ndc1ad:~# echo \"asr ALL=(ALL:ALL) NOPASSWD:ALL\" | sudo tee -a \/etc\/sudoers.d\/asr\ndc1ad:~# exit\n$ asr@dc1ad:~$ sudo ma_commande\n$ asr@dc1ad:~$ sudo -i\ndc1ad:~#\n<\/code><\/pre>\n<p>Toutes les VM et les outils sont disponibles \u00e0 cette adresse : <a href=\"https:\/\/mycore.core-cloud.net\/index.php\/s\/2gLOipJIY02iJIp\">https:\/\/mycore.core-cloud.net\/index.php\/s\/2gLOipJIY02iJIp<\/a><\/p>\n<p>Paquets n\u00e9cessaire \u00e0 l&rsquo;ensemble des TP Linux<\/p>\n<pre><code># apt-get install vim lwatch sudo tree net-tools locate dnsutils\n<\/code><\/pre>\n<p>Tuning de votre environnement bash en \u00e9ditant le fichier \u00ab <em>\/root\/.bashrc<\/em> \u00bb ou \u00ab <em>\/home\/users\/.bashrc<\/em> \u00bb<\/p>\n<pre><code>PS1='${debian_chroot:+($debian_chroot)}\\[\\033[01;31m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ '\nexport LS_OPTIONS='--color=auto'\nalias ls='ls $LS_OPTIONS'\nalias ll='ls -lh --color=auto'\nalias lh='ls -lat | head'\nalias df='df -h'\nalias du='du -hs'\nalias cd..=\"cd ..\"\nalias c=\"clear\"\nalias sys=\"tail -n 20 -f \/var\/log\/syslog|\/usr\/bin\/lwatch -i-\"\nalias egrep=\"egrep -v '(^#|^$)'\"\nalias apt-all=\"apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;amp;&amp;amp; apt-get autoremove &amp;amp;&amp;amp; apt-get autoclean &amp;amp;&amp;amp; apt-get clean all\"\n\nexport LANGUAGE=en_US.UTF-8\nexport LANG=en_US.UTF-8\nexport LC_ALL=en_US.UTF-8\n<\/code><\/pre>\n<p>Afficher l&rsquo;adresses IP directement au prompt login de la machine en reg\u00e9n\u00e9rant automatiquement le fichier \u00ab <em>\/etc\/issue<\/em> \u00bb<\/p>\n<pre><code># systemctl edit getty@\n[Service]\nExecStartPre=-\/bin\/bash -c '[ ! -f \/etc\/.issue.orig ] &amp;amp;&amp;amp; cp \/etc\/issue \/etc\/.issue.orig; int=`ls \/sys\/class\/net|grep enp|head -1`; sed -r \"s\/\\\\\\\\\\\\n\/[\\\\\\\\\\\\4\\{$$int\\}]\/\"  \/etc\/issue'\n<\/code><\/pre>\n<p>Red\u00e9marrer le service et rebooter la machine afin de voir le r\u00e9sultat :<\/p>\n<pre><code># systemctl daemon-reload &amp;amp;&amp;amp; systemctl restart getty@tty1\n<\/code><\/pre>\n<p>Apr\u00e8s clone d&rsquo;une VM il convient de faire une reset de la @MAC et de changer son hostname :<\/p>\n<pre><code># hostnamectl set-hostname 'mamachine'\n<\/code><\/pre>\n<p>pour v\u00e9rifier<\/p>\n<pre><code># hostnamectl\n<\/code><\/pre>\n<blockquote><p>\n  Attention, les d\u00e9p\u00f4ts \u00e9voluent avec les ann\u00e9es\n<\/p><\/blockquote>\n<pre><code># vi \/etc\/apt\/sources.list\n...\n# Debian Jessie, d\u00e9p\u00f4t principal\ndeb http:\/\/deb.debian.org\/debian\/ jessie main\n# Debian Jessie, mises \u00e0 jour de s\u00e9curit\u00e9\ndeb http:\/\/security.debian.org\/ jessie\/updates main\n...\n<\/code><\/pre>\n<h2>Comprendre un syst\u00e8me de type Active Directory : et les diff\u00e9rents services associ\u00e9s (DNS, LDAP, Kerberos, NTP) <a name=\"chapitre1\"><\/a><\/h2>\n<h3>Historique de SaMBa  <a name=\"chapitre1-1\"><\/a><\/h3>\n<p>SaMBa est un logiciel interope\u0301rable<sup id=\"fnref-136-note\"><a href=\"#fn-136-note\" class=\"jetpack-footnote\" title=\"Lisez la note de bas de page.\">1<\/a><\/sup> qui int\u00e8gre une dizaine de services et une douzaine de protocoles proprie\u0301taire dont le c\u00e9l\u00e8bre CIFS (syst\u00e8me de fichier au travers de SMB) de Microsoft. SaMBa op\u00e8re sur des ordinateurs tournant sous des syste\u0300mes d&rsquo;exploitation diff\u00e9rents comme Mac OS, Unix et ses de\u0301rive\u0301s de manie\u0300re a\u0300 partager des imprimantes et des fichiers au travers d&rsquo;un re\u0301seau informatique.<\/p>\n<p>SaMBa facilite les \u00e9changes entre syste\u0300mes d&rsquo;exploitation he\u0301te\u0301roge\u0300nes Apple, Windows et Unix en offrant un service pour acce\u0301der aux ressources des serveurs Unix. Il peut \u00e9galement se substituer a\u0300 des serveurs Windows dans le r\u00f4le de contr\u00f4leur de domaine. SaMBa est issue d&rsquo;une r\u00e9\u00e9criture par inge\u0301nierie inverse des protocoles SMB\/CIFS sous GNU\/Linux et cons\u0153urs.<\/p>\n<p>SaMBa a e\u0301te\u0301 initialement de\u0301veloppe\u0301e par l&rsquo;Australien Andrew Tridgell et distribue\u0301e sous licence libre GNU\/GPL. Son nom provient du nom du protocole standard de Microsoft, SMB (Server Message Block), auquel a e\u0301te\u0301 ajoute\u0301e deux fois la voyelle \u00ab A \u00bb pour donner \u00ab SaMBa \u00bb.<\/p>\n<p>A\u0300 partir de la version 3, SaMBa fournit les services partages r\u00e9seaux pour les r\u00e9pertoires (y compris tous les sous-r\u00e9pertoires) et d&rsquo;impression pour divers clients. Il s&rsquo;int\u00e8gre a\u0300 un domaine NT, soit en tant que contro\u0302leur de domaine principal (PDC) ou en tant que membre d&rsquo;un domaine. Il fonctionne sur la plupart des syste\u0300mes Unix, comme GNU\/Linux, Solaris, AIX et les variantes BSD, y compris Apple, Mac OS X Server (qui a e\u0301te\u0301 ajoute\u0301e au client Mac OS X en version 10.2).<\/p>\n<p>Le projet SaMBa4 a de\u0301marre\u0301 en 2003 ; apporte la fonctionnalite\u0301 supple\u0301mentaire d&rsquo;un contro\u0302leur de domaine Active Directory (Active Directory Domain Controller &#8211; AD DC) \u00e0 travers une version modifi\u00e9e de Kerberos et de LDAP. SaMBa4 prend en charge d&rsquo;une manie\u0300re transparente les domaines Active Directory en imple\u0301mentant en natif les protocoles proprie\u0301taires tels que NTLM, DNS, LDAP, Kerberos et RPC.<\/p>\n<p>Le 20 d\u00e9cembre 2007, dans le cadre d&rsquo;un jugement antitrust, Microsoft l&rsquo;e\u0301diteur de Windows signe un accord d&rsquo;information technique<sup id=\"fnref-136-othernote\"><a href=\"#fn-136-othernote\" class=\"jetpack-footnote\" title=\"Lisez la note de bas de page.\">2<\/a><\/sup> avec pour obligation de publier la documentation des protocoles cle\u0301s de l&rsquo;OS Windows. La SaMBa Team profite de cette opportunite\u0301 pour analyser les spe\u0301cifications techniques d&rsquo;AD et offrir SaMBa4 AD \u00e0 la communaut\u00e9.<\/p>\n<h3>Concepts techniques de SaMBa et Active Directory <a name=\"chapitre1-2\"><\/a><\/h3>\n<h4>LDAP <a name=\"chapitre1-2-1\"><\/a><\/h4>\n<p>Au sein d&rsquo;une structure (entreprise, universit\u00e9, &#8230;) , les services et les serveurs ont besoin des donn\u00e9es pour l&rsquo;authentification, des droits d&rsquo;acc\u00e8s. Ces informations sont difficiles \u00e0 ma\u00eetriser car tr\u00e8s volatiles et \u00e9parses.<\/p>\n<p>Les annuaires LDAP offrent une r\u00e9ponse \u00e0 ce probl\u00e8me en proposant de centraliser les informations et, par le biais d&rsquo;un protocole standardis\u00e9, d&rsquo;y connecter des applications clientes.<\/p>\n<p>Au commencement, l&rsquo;Union Internationale des T\u00e9l\u00e9communications (UIT) cr\u00e9a les <strong>annuaires X.500<\/strong>. Ce concept novateur uniformise l&rsquo;acc\u00e8s aux services, centralise les ressources et les prot\u00e8ge. Le protocole utilis\u00e9 pour y acc\u00e9der \u00e9tait le protocole DAP (Directory Access Protocol). Or il est complexe \u00e0 mettre en \u0153uvre. L&rsquo;Universit\u00e9 du Michigan r\u00e9fl\u00e9chit alors \u00e0 un moyen de pallier \u00e0 ces probl\u00e8mes, tout en reprenant les concepts. LDAP est n\u00e9. Il devient un protocole natif et utilisable ind\u00e9pendamment de X.500. D\u00e9but 1996 Netscape prend la t\u00eate d&rsquo;une coalition pour promouvoir l&rsquo;usage de LDAP.<\/p>\n<p>&gt; <em>Remarque<\/em> : Le protocole LDAP est un protocole de la couche Application (7) du mod\u00e8le OSI. Il est con\u00e7u pour fonctionner au-dessus de TCP, lui m\u00eame au-dessus d&rsquo;IP. Par cons\u00e9quent, les communications avec un annuaire LDAP sont en mode connect\u00e9, et les paquets \u00e9chang\u00e9s ont une garantie d&rsquo;int\u00e9grit\u00e9.<\/p>\n<p>LDAP est ainsi une version all\u00e9g\u00e9e du protocole DAP, d&rsquo;o\u00f9 son nom de Lightweight Directory Access Protocol. Sa version actuelle est la version 3 et propose les \u00e9volutions suivantes :<\/p>\n<ul>\n<li>L&rsquo;utilisation de l&rsquo;encodage UTF-8<\/li>\n<li>L&rsquo;authentification via Simple Authentication and Security Layer (SASL), et Transport Layer Security (TLS)<\/li>\n<li>Le support des Referrals (une branche pointe vers un autre annuaire)<\/li>\n<li>Le support d&rsquo;Unicode (internationalisation)<\/li>\n<li>La capacit\u00e9 d&rsquo;\u00e9tendre le protocole<\/li>\n<li>Le support des sch\u00e9mas dans l&rsquo;annuaire<\/li>\n<\/ul>\n<p>Devenue pierre angulaire du SI (syst\u00e8me d\u2019information), l\u2019annuaire d\u2019entreprise se complexifie proposant de plus en plus de donn\u00e9es et g\u00e9rant de plus en plus de services d\u2019infrastructure.<\/p>\n<p>Un annuaire d&rsquo;entreprise, c&rsquo;est comme l&rsquo;annuaire t\u00e9l\u00e9phonique mais pouvant g\u00e8rer plus de choses. Les caract\u00e9ristiques de l&rsquo;annuaire t\u00e9l\u00e9phonique pour mieux comprendre le concept sont les suivantes :<\/p>\n<ul>\n<li>Il liste des donn\u00e9es (nom, pr\u00e9nom, num\u00e9ro de t\u00e9l\u00e9phone, adresse)<\/li>\n<li>Il organise ces donn\u00e9es (\/d\u00e9partement\/villes\/nom)<\/li>\n<li>Il offre un moyen de consultation ( en ligne, appli smartphone, format papier)<\/li>\n<li>Il peut prot\u00e9ger les donn\u00e9es (liste rouge)<\/li>\n<li>Il est plus consult\u00e9 que mis \u00e0 jour<\/li>\n<li>Il est disponible de mani\u00e8re permanente<\/li>\n<\/ul>\n<p><strong>Vous allez me dire qu&rsquo;il est tout \u00e0 fait possible de stocker ces donn\u00e9es dans une base de donn\u00e9es !<\/strong><\/p>\n<ol>\n<li>On lit plus souvent un annuaire qu\u2019on ne le met \u00e0 jour. Contrairement \u00e0 un SGBD, un annuaire n\u2019est pas fait pour stocker des informations constamment en mouvement. Il est logique de le structurer diff\u00e9remment et d\u2019organiser les donn\u00e9es de mani\u00e8re arborescente (sur un SGBD, la structuration est relationnelle).<\/li>\n<li>Un annuaire fournit une m\u00e9thode de consultation standardis\u00e9e. Le SQL est, certes, standardis\u00e9, mais chaque SGBD (Oracle, SQLServer, MySQL, PostgreSQL &#8230;) a sa propre couche de connexion et ses propres fonctions.<\/li>\n<li>La norme LDAP d\u00e9finit le mod\u00e8le de donn\u00e9es, alors qu&rsquo;un SGBD varie ( quoi, o\u00f9 et comment). Avec les sch\u00e9mas, un annuaire fournit des mod\u00e8les de donn\u00e9es officialis\u00e9s , ce qui permet d&rsquo;\u00eatre interop\u00e9rable.<\/li>\n<\/ol>\n<h5>Principes et concepts<\/h5>\n<p>Un serveur LDAP agit en tant qu&rsquo;interm\u00e9diaire entre une source de donn\u00e9es et un client. Le client ne verra, ni ne conna\u00eetra l&rsquo;existence du stockage des donn\u00e9es. En effet elles peuvent \u00eatre dans un fichier plat ou dans une base de donn\u00e9es. De plus, d\u00e9coupler les messages du stockage permet d&rsquo;avoir plusieurs serveurs et un m\u00eame syst\u00e8me de stockage.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/serveur-LDAP1.png\" alt=\"serveur LDAP1\" \/><\/p>\n<p>LDAP est asynchrone, c&rsquo;est-\u00e0-dire que si le client \u00e9met plusieurs requ\u00eates successivement, elles peuvent arriver dans un ordre diff\u00e9rent.<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/protocole-asynchrone.png\" alt=\"protocole asynchrone\" \/><\/p>\n<p>Les mod\u00e8les LDAP repr\u00e9sentent les services que propose le serveur au client. Bien que la RFC 2251 s\u00e9pare l&rsquo;annuaire LDAP en 2 composants : le mod\u00e8le de donn\u00e9es et le mod\u00e8le de protocole, d\u00e9finissons le en 4 comme Timothy A. Howes, Mark C. Smith, et Gordon S. Good dans leur livre Understanding and Deploying LDAP Directory Services :<\/p>\n<ul>\n<li>Le mod\u00e8le de nommage d\u00e9finit comment l&rsquo;information est stock\u00e9e et organis\u00e9e<\/li>\n<li>Le mod\u00e8le fonctionnel d\u00e9finit les services fournis par l&rsquo;annuaire (recherche, ajout, &#8230;)<\/li>\n<li>Le mod\u00e8le d&rsquo;information d\u00e9finit le type d&rsquo;informations stock\u00e9es<\/li>\n<li>Le mod\u00e8le de s\u00e9curit\u00e9 d\u00e9finit les droits d&rsquo;acc\u00e8s aux ressources<\/li>\n<\/ul>\n<p>Un annuaire est un arbre d&rsquo;entr\u00e9es, il y a une repr\u00e9sentation hi\u00e9rarchique des donn\u00e9es et par cons\u00e9quence, toutes les informations d\u00e9coulent d&rsquo;une seule et m\u00eame \u00ab\u00a0racine\u00a0\u00bb.<\/p>\n<p>Dans l&rsquo;arborescence LDAP suivante, notre entit\u00e9 <strong><em>formation<\/em><\/strong>, a 2 utilisateurs et 2 groupes.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/arborescence10.png\" alt=\"arborescence10\" \/><\/p>\n<p>Cette arborescence est li\u00e9e au nommage de chaque \u00e9l\u00e9ment. Un \u00e9l\u00e9ment marque son appartenance \u00e0 l&rsquo;\u00e9l\u00e9ment sup\u00e9rieur en reprenant le nom, qu&rsquo;il compl\u00e8te par le sien.<\/p>\n<p>Par exemple, si on prend <strong>cn=info,ou=groups,dc=formation,dc=fr<\/strong>, on a info &gt; groups &gt; formation.fr.<\/p>\n<p>La racine choisie ici est compos\u00e9e du nom du domaine o\u00f9 est h\u00e9berg\u00e9 notre serveur LDAP, formation.fr, d\u00e9compos\u00e9 en \u00ab <strong>dc<\/strong> \u00bb (Domain Components) pour obtenir \u00ab dc=formation,dc=fr \u00bb. L&rsquo;arbre se d\u00e9coupe ensuite en deux \u00ab <strong>ou<\/strong> \u00bb (Organisational Units) qui constituent deux branches : \u00ab <strong>users<\/strong> \u00bb et \u00ab <strong>groups<\/strong> \u00bb, dans lesquels nous trouvons ensuite les entr\u00e9es feuilles de notre arbre, les utilisateurs et les groupes. Chacune des entr\u00e9es de notre arbre correspond \u00e0 un type de donn\u00e9e particulier, d\u00e9fini par une classe d&rsquo;objet.<\/p>\n<p>Chaque \u00e9l\u00e9ment est appel\u00e9 une <strong>entr\u00e9e<\/strong> (an entry). Une entr\u00e9e peut \u00eatre une <strong>branche<\/strong> (a node) ou un <strong>\u00e9l\u00e9ment terminal<\/strong> (a leaf). Chaque \u00e9l\u00e9ment poss\u00e8de un <strong>DN<\/strong> (Distinguished Name). Le <strong>DN<\/strong> est le nom complet de l&rsquo;\u00e9l\u00e9ment qui permet de le positionner dans l&rsquo;arborescence. Il est unique dans l&rsquo;annuaire : cn=info,ou=groups,dc=formation,dc=fr.<\/p>\n<p>Chaque \u00e9l\u00e9ment poss\u00e8de \u00e9galement un <strong>RDN<\/strong> (Relative Distinguished Name). Le RDN est la partie du DN de l&rsquo;\u00e9l\u00e9ment qui est relative au DN sup\u00e9rieur. Le <strong>RDN<\/strong> d&rsquo;un \u00e9l\u00e9ment ne permet pas de l&rsquo;identifier de mani\u00e8re unique dans l&rsquo;annuaire : cn=info.<\/p>\n<p>La <strong>racine<\/strong> est l&rsquo;\u00e9l\u00e9ment sup\u00e9rieur de tous les autres, c&rsquo;est la base de l&rsquo;arborescence : dc=formation,dc=fr.<\/p>\n<p>Une entr\u00e9e est constitu\u00e9e d&rsquo;un ensemble d&rsquo;attributs. Un attribut poss\u00e8de un nom, un type et une ou plusieurs valeurs. Les attributs sont d\u00e9finis dans des sch\u00e9mas et est l&rsquo;une des caract\u00e9ristiques de cet \u00e9l\u00e9ment. Dans notre exemple, l&rsquo;arbre se d\u00e9coupe ensuite en deux \u00ab <strong>ou<\/strong> \u00bb (Organisational Units) qui constituent deux branchements : \u00ab <strong>users<\/strong> \u00bb et \u00ab <strong>groups<\/strong> \u00bb, dans lesquels nous trouvons ensuite les entr\u00e9es : les utilisateurs et les groupes.<\/p>\n<blockquote><p>\n  <strong><em>Important<\/em><\/strong> : La RFC 2253 normalise l&rsquo;\u00e9criture des DN et conseille de ne pas ajouter d&rsquo;espaces autour du signe <strong>=<\/strong>, ni \u00e0 la fin du DN. Les espaces sont autoris\u00e9s par contre pour les valeurs des entr\u00e9es.\n<\/p><\/blockquote>\n<h5>Mod\u00e8le fonctionnel<\/h5>\n<p><strong>La base<\/strong> :<\/p>\n<p>La base est le DN \u00e0 partir duquel nous effectuons une recherche. Par exemple <strong>dc=formation,dc=fr<\/strong> effectuerait une recherche sur tout l&rsquo;arbre, puisqu&rsquo;il s&rsquo;agit de la racine. Le scope est le nombre de niveaux sur lesquels l&rsquo;action va \u00eatre effectu\u00e9e. Il existe 3 niveaux diff\u00e9rents :<\/p>\n<p><strong>La port\u00e9e<\/strong> :<\/p>\n<ol>\n<li><strong>sub<\/strong> : l&rsquo;action est effectu\u00e9e de mani\u00e8re recursive \u00e0 partir de la base sp\u00e9cifi\u00e9e sur toute l&rsquo;arborescence.<\/li>\n<li><strong>one<\/strong> : l&rsquo;action est effectu\u00e9e sur les fils directs, c&rsquo;est-\u00e0-dire un seul niveau inf\u00e9rieur par rapport \u00e0 la base sp\u00e9cifi\u00e9e. Pour notre arbre, au niveau le plus haut \u00ab dc=formation,dc=fr \u00bb, on aurait pour la port\u00e9e <strong>ONE<\/strong> \u00ab ou=users,dc=formation,dc=fr \u00bb et \u00ab ou=groups,dc=formation,dc=fr \u00bb.<\/li>\n<li><strong>base<\/strong> : l&rsquo;action est effectu\u00e9e uniquement sur la base sp\u00e9cifi\u00e9e. Une recherche sur \u00ab dc=formation,dc=fr \u00bb avec la port\u00e9e BASE renverrait cette entr\u00e9e uniquement.<\/li>\n<\/ol>\n<p><strong>Les filtres<\/strong> :<\/p>\n<p>Un filtre permet d&rsquo;avoir des crit\u00e8res sur la recherche. Il est constitu\u00e9 d&rsquo;un ensemble d&rsquo;op\u00e9rations, portant sur des attributs, combin\u00e9es avec les op\u00e9rateurs bool\u00e9ens classiques: ET, OU et NON.  La syntaxe est : attribut OPERATEUR valeur La forme g\u00e9n\u00e9rale d&rsquo;un filtre est une combinaison : (operator(search operation)(search operation)&#8230;)). Les op\u00e9rateurs de recherche peuvent \u00eatre combin\u00e9s.<\/p>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th align=\"center\"><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u00c9galit\u00e9<\/td>\n<td align=\"center\"><strong>:=<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Approximation<\/td>\n<td align=\"center\"><strong>~=<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Sup\u00e9rieur ou \u00e9gal<\/td>\n<td align=\"center\"><strong>&gt;=<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Inf\u00e9rieur ou \u00e9gal<\/td>\n<td align=\"center\">** <strong><em>Important<\/em><\/strong> : En cas de doute sur le type, le nom ou la syntaxe d&rsquo;un attribut, n&rsquo;h\u00e9sitez pas \u00e0 consulter le sch\u00e9ma. Si vous voulez cr\u00e9er un nouveau sch\u00e9ma, v\u00e9rifiez qu&rsquo;il n&rsquo;existe pas d\u00e9j\u00e0. Il se peut qu&rsquo;il suffise d&rsquo;\u00e9tendre un objectClass existant, et de cr\u00e9er seulement un ou plusieurs attributs suppl\u00e9mentaires.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Chaque type d&rsquo;attribut doit \u00eatre identifi\u00e9 par un OID :<\/p>\n<pre><code>attributetype ( 2.5.4.20 NAME 'telephoneNumber'\nDESC 'An integer uniquely identifying a user in a domain'\nEQUALITY telephoneNumberMatch\nSUBSTR telephoneNumberSubstringMatch\nSYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )\n<\/code><\/pre>\n<blockquote><p>\n  <em>L&rsquo;OID de telephoneNumber est 2.5.4.20. La valeur est \u00e9valu\u00e9e avec telephoneNumberMatch, et doit contenir ce que sp\u00e9cifi\u00e9 dans telephoneNumberSubstringMatch. 1.3.6.1.4.1.1466.115.121.1.50 correspond \u00e0 la syntaxe du n\u00b0 de t\u00e9l\u00e9phone, exemple: +1 234 567 8901.<\/em>\n<\/p><\/blockquote>\n<p>Comme les attributs, l&rsquo;objectClass est toujours identifi\u00e9 par un OID.<\/p>\n<pre><code>( 2.5.6.6 NAME 'person'\n SUP top\n STRUCTURAL\n MUST ( sn $ cn )\n MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )\n<\/code><\/pre>\n<blockquote><p>\n  <em>La classe person \u00e9tend la classe top et est une classe structurelle, c&rsquo;est-\u00e0-dire qu&rsquo;elle repr\u00e9sente un objet r\u00e9el. Les attributs sn et cn sont obligatoires; Les autres userPassword, telephoneNumber, seeAlso, description sont facultatifs.<\/em>\n<\/p><\/blockquote>\n<p><strong>Le format LDIF<\/strong><\/p>\n<p>Pour importer\/exporter les donn\u00e9es ainsi que la configuration du serveur, un format a \u00e9t\u00e9 d\u00e9fini (RFC 2849) : LDIF (LDAP Data Interchange Format).<\/p>\n<p>Prenons l&rsquo;exemple suivant pour faire une entr\u00e9e dans un fichier LDIF pour import.<\/p>\n<pre><code>dn: uid=colombet,ou=users,dc=formation,dc=fr\nobjectClass: top,person,organizationalPerson,posixAccount,shadowAccount,inetOrgPerson,sambaSamAccount\ncn: colombet\nsn: colombet\nuid: colombet\nuidNumber: 1000\ngidNumber: 513\nhomeDirectory: \/home\/colombet\nloginShell: \/bin\/bash\ngecos: System User\ngivenName: colombet\nsambaLogonTime: 0\nsambaLogoffTime: 2147483647\nsambaKickoffTime: 2147483647\nsambaPwdCanChange: 0\ndisplayName: colombet\nsambaSID: S-1-5-21-974850198-1505400730-1293609509-3000\nsambaPrimaryGroupSID: S-1-5-21-974850198-1505400730-1293609509-513\nsambaLogonScript: logon.bat\nsambaPwdMustChange: 1536311362\nsambaPwdLastSet: 1532423362\nsambaNTPassword: 92937945B518814341DE3F726500D4FF\nsambaLMPassword: 727E3576618FA1754A3B108F3FA6CB6D\nsambaAcctFlags: [U]\nuserPassword: {SSHA}iCSo\/PYs7avk0YhOuWuZZmiiAEdLVkRT\nshadowLastChange: 17736\nshadowMax: 45\n<\/code><\/pre>\n<h5>Conclusion<\/h5>\n<p>LDAP, du fait de sa standardisation, permet au annuaires d&rsquo;entit\u00e9s d&rsquo;\u00eatre interop\u00e9rables. Ils sont simples, fiables, p\u00e9rennes et centralisent l&rsquo;information au sein d&rsquo;une entreprise : Identifiant\/mot de passe, comptes POSIX, utilisateur&#8230;<\/p>\n<h5>R\u00e9f\u00e9rences<\/h5>\n<p><strong><a href=\"http:\/\/www.openldap.org\/\">OpenLDAP<\/a><\/strong> : l&rsquo;annuaire LDAP open-source de r\u00e9f\u00e9rence<br \/>\n<strong><a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/bb742424.aspx\">Active Directory<\/a><\/strong> : est une mise en \u0153uvre d&rsquo;un service d&rsquo;annuaire LDAP par Microsoft<\/p>\n<p><strong><a href=\"https:\/\/www.netiq.com\/communities\/cool-solutions\/cool_tools\/gawors-excellent-ldap-browsereditor-v282\/\">LDAP Browser\/Editor<\/a><\/strong> : client java multiplateforme<br \/>\n<strong><a href=\"http:\/\/phpldapadmin.sourceforge.net\/wiki\/index.php\/Main_Page\">phpLDAPadmin<\/a><\/strong> : client web d\u00e9velopp\u00e9 en PHP<\/p>\n<p>cf : https:\/\/openclassrooms.com\/fr\/courses\/2257706-presentation-du-concept-dannuaire-ldap\/2260116-quest-ce-quun-annuaire<\/p>\n<h4>DNS <a name=\"chapitre1-2-2\"><\/a><\/h4>\n<p>Le DNS (Domain Name System) est le protocole indispensable au fonctionnement d&rsquo;Internet. Pas d&rsquo;un point de vue technique, mais d&rsquo;un point de vue pratique. Il est inconcevable aujourd&rsquo;hui d&rsquo;utiliser des adresses IP en lieu et place des noms des sites web pour naviguer sur Internet.<\/p>\n<p>Le syst\u00e8me DNS se charge de convertir (on parle de r\u00e9solution) le nom du site web demand\u00e9 en adresse IP.<\/p>\n<p>Un nom de domaine se d\u00e9compose en plusieurs parties. Prenons l&rsquo;exemple de <strong>www.formation.fr<\/strong> :<\/p>\n<p>Chaque partie est s\u00e9par\u00e9e par un point. On trouve l&rsquo;extension en premier (en premier, mais en partant de la droite) ; on parle de Top Level Domain (TLD). Il existe des TLD nationaux (fr, it, de, es, etc.) et les TLD g\u00e9n\u00e9riques (com, org, net, biz, etc.).<\/p>\n<p>Il existe une infinit\u00e9 de possibilit\u00e9s pour la deuxi\u00e8me partie. Cela correspond \u00e0 tous les sites qui existent : formation.fr, etc.<br \/>\nComme vous le voyez, formation.fr est un sous-domaine de fr. Le domaine fr englobe tous les sous-domaines finissant par fr.<\/p>\n<p>La troisi\u00e8me partie est exactement comme la seconde. On y retrouve g\u00e9n\u00e9ralement le fameux \u00ab\u00a0www\u00a0\u00bb, ce qui nous donne des noms de domaine comme www.formation.fr. www peut soit \u00eatre un sous-domaine de formation.fr, mais dans ce cas il pourrait y avoir encore des machines ou des sous-domaines \u00e0 ce domaine, soit \u00eatre directement le nom d&rsquo;une machine.<\/p>\n<p>Ici, www est le nom d&rsquo;une machine dans le domaine formation.fr.<\/p>\n<p>On peut bien entendu ajouter autant de troisi\u00e8mes parties que n\u00e9cessaire, ce qui peut vous conduire \u00e0 avoir un nom de domaine comme : www.fr.1.new.super.formation.fr.<\/p>\n<p>Voici une toute petite partie de l&rsquo;arborescence des noms Internet :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/417424.png\" alt=\"417424\" \/><\/p>\n<p>Chaque \u00ab\u00a0partie\u00a0\u00bb est appel\u00e9e label et l&rsquo;ensemble des labels constitue un FQDN : Fully Qualified Domain Name. Ce FQDN est unique. Par convention, un FQDN se finit par un point, car au-dessus des TLD il y a la racine du DNS, tout en haut de l&rsquo;arbre. Ce point dispara\u00eet lorsque vous utilisez les noms de domaine avec votre navigateur.<\/p>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Au niveau DNS, www.formation.fr n&rsquo;est pas un FQDN, car il manque le point \u00e0 la fin. Tout FQDN sur Internet doit obligatoirement se finir par un point, comme www.formation.fr. qui est alors bien un FQDN, car on est s\u00fbr qu&rsquo;il n&rsquo;y a pas de domaine au-dessus.\n<\/p><\/blockquote>\n<h3>NTLM ou Kerberos<\/h3>\n<p>Deux principaux m\u00e9canismes d&rsquo;authentification existent sous Windows <strong>NTLM<\/strong> et <strong>Kerberos<\/strong>. De par leur conception, ces deux m\u00e9canismes sont sensiblement diff\u00e9rents et ne sont pas expos\u00e9s aux m\u00eames probl\u00e9matiques.<\/p>\n<h4>LM, NTLM, NETNTLMV1, NETNTLMV2 <a name=\"chapitre1-2-3\"> <\/a><\/h4>\n<p>Le NTLM (NT Lan Manager) est une m\u00e9thode d&rsquo;authentification utilis\u00e9e dans un r\u00e9seau Microsoft Active Directory propri\u00e9taire Microsoft.<\/p>\n<p>Au cours de la derni\u00e8re d\u00e9cennie, les termes utilises pour d\u00e9crire les concepts de relais NTLM ont suscite de nombreuses confusions. En effet, des termes tr\u00e8s proches ont souvent \u00e9t\u00e9 utilis\u00e9s a\ufb01n de faire allusion a des concepts diff\u00e9rents. A\ufb01n de partir sur de bonnes bases et d\u2019\u00e9viter tout malentendu, ce chapitre tentera de d\u00e9crire les diff\u00e9rents termes n\u00e9cessaires a la bonne comprehension du concept de relais NTLM.<\/p>\n<p><strong>Algorithmes de stockage des mots de passe<\/strong><\/p>\n<ul>\n<li>LM Hash (condensat LM alias Lan Manager Hash) : format de stockage des mots de passe utilise sur les anciens syst\u00e8mes Windows (anterieurs a Windows NT 4). ll est \u00e9galement present sur les nouveaux syst\u00e8mes Windows afin d\u2018assurer la retrocompatibilit\u00e9, mais est d\u00e9sactiv\u00e9 par d\u00e9faut depuis Windows Vista, car son niveau de s\u00e9curit\u00e9 est consid\u00e9r\u00e9 comme tr\u00e8s faible aujourd\u2019hui [1]. ll est pr\u00e9f\u00e9rable d\u2019utiliser le format NT Hash.<\/li>\n<li>NT Hash (commun\u00e9ment appel\u00e9 NTLM) : format de stockage des mots de passe utilise sur les syst\u00e8mes Windows modernes. Bien que vulnerable a certaines attaques, il est beaucoup plus robuste que son pr\u00e9d\u00e9cesseur.<br \/>\n    1. Ces condensats peuvent \u00eatre pr\u00e9sents :<br \/>\n        * dans la base SAM (Security Accounts Manager) pour le stockage des comptes locaux ;<br \/>\n        * dans la base <strong><em>ntds.dit<\/em><\/strong> de l\u2019Active Directory pour le stockage des comptes de domaine ;<br \/>\n        * dans la m\u00e9moire du processus <strong><em>1sass.exe<\/em><\/strong> (Local Security Authority Server Service) d&rsquo;une machine sur laquelle une ou plusieurs authentifications ont \u00e9t\u00e9 r\u00e9alis\u00e9es.<br \/>\n    2. Une fois en possession de ces condensats, il est possible de :<br \/>\n        * realiser des attaques par dictionnaire ou force brute afin de tenter de retrouver les mots de passe en clair ;<br \/>\n        * d\u2019effectuer des attaques de type pass-the-hash.<\/li>\n<\/ul>\n<p>Microsoft a con\u00e7u diff\u00e9rents protocoles d&rsquo;authentification NTLM au travers des ann\u00e9es. Ils permettent d&rsquo;authentifier les ressources a travers le r\u00e9seau. ll s\u2019agit de protocoles dits de type \u00ab d\u00e9fi-r\u00e9ponse \u00bb. (challenge\/response) :<\/p>\n<ul>\n<li>LM (alias LAN Manager ou LANMAN) : le protocole LM utilise le condensat LM comme secret de l&rsquo;algorithme de chiffrement DES afin de calculer la r\u00e9ponse d\u2018un client a un d\u00e9fi (challenge) transmis par un serveur. ll est totalement d\u00e9conseill\u00e9 d&rsquo;utiliser ce protocole aujourd\u2019hui en raison de la faiblesse du condensat LM et de l\u2019utilisation de l&rsquo;algorithme DES.<\/p>\n<\/li>\n<li>\n<p>NTLMv1 (alias NetNTLMv1) : le protocole NetNTLMv1 est similaire au protocole LM sauf que le secret utilise est a pr\u00e9sent le condensat NTLM d\u2018un utilisateur. ll est d\u00e9conseill\u00e9 d\u2019utiliser ce protocole aujourd\u2019hui, car il est facile de mener des attaques a\ufb01n de retrouver le mot de passe d\u2018un utilisateur.<\/p>\n<\/li>\n<li>\n<p>NTLMv2 (alias NetNTLMv2) : il s\u2019agit de la version la plus r\u00e9cente et la plus robuste du protocole NTLM. ll corrige certaines faiblesses du protocole NTLMv1 et remplace notamment l&rsquo;algorithme de chiffrement DES par un HMAC-DES. L&rsquo;\u00e9tablissement des protocoles LM, NetNTLMv1 et NetNTLMv2 est r\u00e9alis\u00e9 grace au protocole NTLMSSP (NTLM Security Support Provider). Voici les trois \u00e9tapes n\u00e9cessaires au processus d\u2019authentification<\/p>\n<ol>\n<li>NTLMSSP NEGOTIATE : la premiere \u00e9tape consiste a n\u00e9gocier le protocole qui sera utilis\u00e9. Pour cela, le client transmet au serveur une demande d\u2019authentification en pr\u00e9cisant les versions du protocole NTLM accept\u00e9es.<\/li>\n<li>NTLMSSP CHALLENGE : le serveur r\u00e9pond au client en pr\u00e9cisant les versions NTLM accept\u00e9es. Cette r\u00e9ponse contient \u00e9galement un \u00ab \u00ab challenge \u00bb a r\u00e9soudre.<\/li>\n<li>NTLMSSP AUTH : le client r\u00e9sout le challenge et le transmet au serveur (accompagn\u00e9 de diverses informations telles que le login, le domaine associ\u00e9 si applicable, etc.).<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/10\/2019-10-19-13.36.05.png\" alt=\"2019-10-19 13.36.05\" \/><\/p>\n<ul>\n<li><strong>\u00e9tape 1<\/strong> : Lors de la demande d&rsquo;authentification, le client transmet au serveur le nom de l\u2019utilisateur. <\/li>\n<li><strong>\u00e9tape 2<\/strong> : Le serveur lui transmet alors un challenge qui est compos\u00e9 de 16 octets al\u00e9atoires <\/li>\n<li><strong>\u00e9tape 3<\/strong> : Le client chiffre ensuite ce challenge avec le condensat du mot de passe de l&rsquo;utilisateur et le retourne au serveur. Dans le cas d\u2019une authentification locale, sur une machine ou un contr\u00f4leur de domaine, le serveur effectue l&rsquo;a m\u00eame operation avec les condensats presents dans la base SAM ou ntds . dit et indique au client un \u00e9chec ou un succ\u00e8s (ouverture de session).<\/li>\n<li><strong>\u00e9tape 4<\/strong> : S\u2019il s&rsquo;agit en revanche d\u2019une authentification avec un compte de domaine, le serveur transmettra alors au contr\u00f4leur de domaine des informations permettant de valider l&rsquo;authentification telles que le nom d\u2019utilisateur, le challenge envoy\u00e9 au client, la r\u00e9ponse du client. <\/li>\n<li><strong>\u00e9tape 5<\/strong> : Le contr\u00f4leur de domaine indique le r\u00e9sultat de l\u2019authentification. <\/li>\n<\/ul>\n<p>L&rsquo;authentification NTLM est support\u00e9e par de nombreux protocoles comme SMB, LDAP, HTTP(S), IMAP, SMTP, ou encore MS-SQL. Pour cela, l\u2019authentification NTLM est encapsul\u00e9 au sein du protocole concern\u00e9. La capture d\u2019un challenge (LM, NTLMv1, NTLMv2) sur un r\u00e9seau peut permettre d\u2019effectuer des attaques par dictionnaire ou force brute afin de retrouver les mots de passe en clair, mais \u00e9galement d\u2019effectuer du relai NTLM.<\/p>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Pour se pr\u00e9munir de ces attaques, des strat\u00e9gies de groupe (GPO \/ Group Policy Object) sont d\u00e9ploy\u00e9es sur les postes et serveurs afin d\u2019interdire la n\u00e9gociation de protocoles faibles. Par exemple, via la GPO suivante : Computer Configuration\\Windows Settings\\Security Settings\\Local Policies\\Security Options -&gt; Network security: LAN Manager authentication level = \u00ab Send NTLMv2 response only and refuse LM &amp; NTLM \u00bb.\n<\/p><\/blockquote>\n<p>Quelques commandes utilisant le NTLM :<\/p>\n<pre><code># wbinfo -t : V\u00e9rifie la bonne jonction au domaine\n# wbinfo -u : Remonte les utilisateurs du domaine\n# wbinfo -g : Remonte les groupes du domaine\n# wbinfo --trusted-domains : Remonte les serveurs avec les relations d'approbation\n# \/usr\/bin\/ntlm_auth --helper-protocol=helper\n<\/code><\/pre>\n<p>Les codes retours sont simples :<\/p>\n<pre><code>OK, lorsque le couple login\/mdp est valide.\nERR, lorsque le couple login\/mdp n'est pas valide.\n<\/code><\/pre>\n<p>cf : https:\/\/blog.netxp.fr\/fonctionnement-ntlm-comprendre-vols-identifiants-et-de-condensats-mot-de-passe-utilisateurs-par-simple-hameconnage\/<\/p>\n<p>cf : Extrait Misc Hors-Serie n\u00b020 (p51,p52 et p53)<\/p>\n<h4>Kerberos <a name=\"chapitre1-2-4\"><\/a><\/h4>\n<p>Kerberos est un protocole d\u2019authentification issu du projet \u00ab Athena \u00bb du MIT (Massachusetts Institute of Technology). Le nom \u00ab Kerberos \u00bb vient de la mythologie grecque et d\u00e9signe le nom du chien \u00e0 trois t\u00eates gardien des portes d\u2019Had\u00e8s. Il est charg\u00e9 d\u2019authentifier, d\u2019autoriser et de surveiller les utilisateurs voulant acc\u00e9der aux ressources et services d&rsquo;un r\u00e9seau informatique. Le protocole Kerberos a \u00e9t\u00e9 normalis\u00e9 dans sa version 5 par l\u2019IETF dans les RFC 1510 (en septembre 1993) et RFC 1964 (juin 1996).<\/p>\n<p>Kerberos se base sur une tierce partie de confiance pour g\u00e9rer l\u2019authentification, le KDC (Key Distribution Center). Tous les utilisateurs et services du r\u00e9seau font confiance \u00e0 cette tierce partie. Pour r\u00e9aliser la s\u00e9curit\u00e9 de l\u2019authentification, Kerberos utilise un m\u00e9canisme de chiffrement bas\u00e9 sur des algorithmes \u00e0 clef sym\u00e9trique. Tout objets connect\u00e9s au r\u00e9seau dispose d&rsquo;une cl\u00e9 secr\u00e8te partag\u00e9e avec le KDC.<\/p>\n<p>Kerberos utilise un syst\u00e8me de ticket pour r\u00e9aliser l\u2019authentification et introduit le principe de SSO (Single Sign On). L\u2019utilisateur s\u2019authentifie sur le KDC puis utilise un ticket pour s\u2019authentifier sur chaque service demand\u00e9. L\u2019utilisateur ne transmet jamais son mot de passe au service.<\/p>\n<p>Le protocole Kerberos s\u00e9pare le r\u00f4le du KDC en deux services :<\/p>\n<ul>\n<li><strong>AS (Authentication Service)<\/strong> : Service sur lequel l\u2019utilisateur s\u2019authentifie. Il d\u00e9livre un TGT (Ticket Granting Ticket) en cas d\u2019authentification r\u00e9ussie. Ce ticket est en fait une demande d\u2019acc\u00e8s au TGS.<\/li>\n<li><strong>TGS (Ticket Granting Service)<\/strong> : Service fournissant les tickets d\u2019acc\u00e8s aux diff\u00e9rents services du r\u00e9seau. On les appelle <strong>TS (Ticket Service)<\/strong>.<\/li>\n<\/ul>\n<p>En r\u00e9sum\u00e9, l\u2019utilisateur s\u2019authentifie aupr\u00e8s du service d\u2019authentification (<em>le vigile<\/em>). Celui-ci lui donne un ticket d\u2019acc\u00e8s prouvant qu\u2019il s\u2019est authentifi\u00e9 (<em>un badge<\/em>). L\u2019utilisateur se rend aupr\u00e8s du service de gestion des tickets. Il demande un acc\u00e8s au service de fichiers par exemple. Gr\u00e2ce au badge donn\u00e9 par le vigile le service de ticket sait que l\u2019utilisateur est bien authentifi\u00e9. Il va donc lui remettre un ticket d\u2019acc\u00e8s au service de fichier. L\u2019utilisateur peut maintenant aller voir le service de fichier avec son ticket. Le service lui donnera acc\u00e8s aux ressources correspondantes \u00e0 ses autorisations.<\/p>\n<p><strong>Fonctionnement d\u00e9taill\u00e9 de Kerberos<\/strong><\/p>\n<p><em>Notation<\/em><\/p>\n<p><strong>AS<\/strong>: Service d\u2019authentification.<br \/>\n<strong>TGS<\/strong>: Service d\u00e9livrant des tickets d\u2019acc\u00e8s aux services.<br \/>\n<strong>TGT<\/strong>: Ticket d\u2019acc\u00e8s au TGS.<br \/>\n<strong>TS<\/strong>: Ticket d\u2019acc\u00e8s au service demand\u00e9.<br \/>\n<strong>Kutilisateur<\/strong>: Cl\u00e9 secr\u00e8te de l\u2019utilisateur, connu de l\u2019utilisateur et du TGS.<br \/>\n<strong>Kservice<\/strong>: Cl\u00e9 secr\u00e8te du service demand\u00e9, connu du service et du TGS.<br \/>\n<strong>Ktgs<\/strong> : Cl\u00e9 secr\u00e8te du TGS connu du TGS et de l\u2019AS.<br \/>\n<strong>KsessionTGS<\/strong> : Cl\u00e9 de session entre l\u2019utilisateur et le TGS.<br \/>\n<strong>Ksession<\/strong>: Cl\u00e9 secr\u00e8te de session entre l\u2019utilisateur et le service demand\u00e9.<br \/>\n<strong>TicketService<\/strong> : Ticket d\u2019acc\u00e8s au service demand\u00e9.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Schema_kerberos_1_article_devensys.jpg\" alt=\"Schema_kerberos_1_article_devensys\" \/><\/p>\n<blockquote><p>\n  <strong><em>Fonctionnement<\/em><\/strong> : L\u2019utilisateur s\u2019authentifie en entrant un couple login\/password (g\u00e9n\u00e9ralement \u00e0 l\u2019ouverture de session sur la machine). Le client kerberos de la machine d\u00e9rive \u00e0 l\u2019aide d\u2019un algorithme de <strong>hash le mot de passe<\/strong> de l\u2019utilisateur en cl\u00e9 secr\u00e8te <strong>Kutilisateur<\/strong>. Le client kerberos va maintenant contacter l\u2019AS pour authentifier l\u2019utilisateur. Il envoie pour cela \u00e0 l\u2019AS l\u2019identit\u00e9 de l\u2019utilisateur (en clair) ainsi que Kutilisateur {message authentifiant d\u00e9finie dans le protocole kerberos, timestamp}. L\u2019utilisateur n\u2019aura pas \u00e0 renouveler son authentification durant plusieurs heures. <em>Le mot de passe n\u2019est pas transmis \u00e0 travers le r\u00e9seau. Il sert uniquement \u00e0 g\u00e9n\u00e9rer Kutilisateur. De m\u00eame, Kutilisateur servira \u00e0 chiffrer une partie du message et ne sera jamais transmise \u00e0 travers le r\u00e9seau. Il n\u2019y a donc pas de possibilit\u00e9 d\u2019interception. Seule une compromission de la machine cliente ou un brute force peut permettre \u00e0 une personne malveillante de r\u00e9cup\u00e9rer ces informations.<\/em>\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Schema_kerberos_2_article_devensys.jpg\" alt=\"Schema_kerberos_2_article_devensys\" \/><\/p>\n<blockquote><p>\n  <strong><em>Fonctionnement<\/em><\/strong> : L\u2019AS lit l\u2019identit\u00e9 de l\u2019utilisateur (envoy\u00e9 en clair). L\u2019AS connait le mot de passe de l\u2019utilisateur, car c\u2019est lui qui g\u00e8re la base de donn\u00e9es utilisateur. Il peut donc obtenir Kutilisateur. Gr\u00e2ce \u00e0 Kutilisateur il va d\u00e9chiffrer le message authentifiant envoy\u00e9 par l\u2019utilisateur. Si une fois celui-ci d\u00e9chiffr\u00e9 il correspond, c\u2019est qu\u2019il a bien \u00e9t\u00e9 chiffr\u00e9 avec Kutilisateur. L\u2019AS v\u00e9rifie ensuite le timestamp pour \u00e9viter tout rejeu de l\u2019authentification. L\u2019AS retourne maintenant au client Kutilisateur {TGT, KsessionTGS}. C\u2019est-\u00e0-dire un Ticket TGT et une cl\u00e9 de session entre l\u2019utilisateur et le TGS, le tout chiffr\u00e9 par la cl\u00e9 secr\u00e8te de l\u2019utilisateur pour que personne n\u2019ait acc\u00e8s \u00e0 ces informations. <em>Kutilisateur n\u2019est connu que du serveur et du client et n\u2019a jamais \u00e9t\u00e9 communiqu\u00e9 \u00e0 travers le r\u00e9seau. Cette communication ne peut donc \u00eatre lue par aucune tierce partie malveillante.<\/em>\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Schema_kerberos_3_article_devensys.jpg\" alt=\"Schema_kerberos_3_article_devensys\" \/><\/p>\n<blockquote><p>\n  <strong><em>Fonctionnement<\/em><\/strong> : L\u2019utilisateur d\u00e9chiffre la r\u00e9ponse de l\u2019AS. Il r\u00e9cup\u00e8re le TGT et la cl\u00e9 de session pour communiquer avec le TGS. Le TGT est un ticket contenant trois \u00e9l\u00e9ments chiffr\u00e9s avec Ktgs : une date d\u2019expiration, le nom de l\u2019utilisateur et KsessionTGS. Donc TGT = Ktgs {date d\u2019expiration, nom d\u2019utilisateur, KsessionTGS}. L\u2019utilisateur envoie au TGS : le TGT, un KsessionTGS {timestamp} (permet d\u2019assurer l\u2019unicit\u00e9 de la requ\u00eate, antirejeu) ainsi que le service auquel il souhaite acc\u00e9der. Cet envoi correspond \u00e0 une demande d\u2019acc\u00e8s \u00e0 un service donn\u00e9. <em>Le TGT n\u2019est pas lisible par l\u2019utilisateur puisqu\u2019il est chiffr\u00e9 avec la cl\u00e9 secr\u00e8te Ktgs connue uniquement de l\u2019AS et du TGS.<\/em>\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Schema_kerberos_4_article_devensys.jpg\" alt=\"Schema_kerberos_4_article_devensys\" \/><\/p>\n<blockquote><p>\n  <strong><em>Fonctionnement<\/em><\/strong> :Gr\u00e2ce au TGT, le TGS connait l\u2019identit\u00e9 du sujet et la cl\u00e9 de session \u00e0 utiliser pour chiffrer la communication avec l\u2019utilisateur. Il v\u00e9rifie gr\u00e2ce \u00e0 KsessionTGS la valeur du timestamp (permet d\u2019\u00e9viter le rejeu et de signer en quelque sorte la requ\u00eate de l\u2019utilisateur). En fonction des droits du sujet, il va accepter ou refuser la demande d\u2019acc\u00e8s au service. Dans le cas o\u00f9 le sujet poss\u00e8de les droits d\u2019acc\u00e8s au service, le TGS va lui envoyer KsessionTGS {timestamp, Ksession, service \u00e0 joindre, TicketService}. Le TicketService est un ticket \u00e0 transmettre au service pour assurer la connexion avec celui-ci. TicketService = Kservice {Ksession, identit\u00e9 sujet, date d\u2019expiration}. <em>KsessionTGS a \u00e9t\u00e9 transmise au TGS via le TGT, donc de mani\u00e8re s\u00e9curis\u00e9e. Ainsi, seuls le TGS, l\u2019utilisateur et l\u2019AS(fournis Ksession) connaissent la cl\u00e9. Cette communication ne pourra toujours pas \u00eatre lue par une personne externe au proc\u00e9d\u00e9.<\/em>\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Schema_kerberos_5_article_devensys.jpg\" alt=\"Schema_kerberos_5_article_devensys\" \/><\/p>\n<blockquote><p>\n  <strong><em>Fonctionnement<\/em><\/strong> :Le sujet d\u00e9chiffre la r\u00e9ponse du TGS. Il transmet ensuite TicketService au service pour initialiser la connexion. TicketService = Kservice {Ksession, identit\u00e9 sujet, date d\u2019expiration}. <em>TicketService est chiffr\u00e9 avec Kservice une cl\u00e9 secr\u00e8te connue uniquement du service et du TGS. L\u2019utilisateur ne peut donc pas lire ou modifier son contenue.<\/em>\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Schema_kerberos_6_article_devensys.jpg\" alt=\"Schema_kerberos_6_article_devensys\" \/><\/p>\n<blockquote><p>\n  <strong><em>Fonctionnement<\/em><\/strong> :Le service d\u00e9chiffre TicketService et r\u00e9cup\u00e8re Ksession. Il renvoie Ksession {timestamp}.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/Schema_kerberos_7_article_devensys.jpg\" alt=\"Schema_kerberos_7_article_devensys\" \/><\/p>\n<blockquote><p>\n  <strong><em>Fonctionnement<\/em><\/strong> :Le sujet d\u00e9chiffre le timestamp, v\u00e9rifie que le temps \u00e9coul\u00e9 entre l\u2019envoi et la r\u00e9ception de la r\u00e9ponse n\u2019est pas trop long. Ksession {timestamp}. <em>L\u2019utilisation de timestamp permet de s\u2019assurer que les parties connaissent la cl\u00e9 et d\u2019\u00e9viter qu\u2019une personne mal intentionn\u00e9e rejoue une s\u00e9quence d\u2019acc\u00e8s intercept\u00e9.<\/em>\n<\/p><\/blockquote>\n<p>*cf : Merci au <a href=\"https:\/\/blog.devensys.com\/kerberos-principe-de-fonctionnement\/\">blog devensys<\/a> d\u00e9taillant le fonctionnement de Kerberos :<\/p>\n<h4>WINBIND <a name=\"chapitre1-2-5\"><\/a><\/h4>\n<p>Winbind permet \u00e0 une machine linux o\u00f9 se situe SaMBa de faire un lien entre elle et un contr\u00f4leur Active directory. Les comptes cr\u00e9\u00e9s sur le contr\u00f4leur seront efficace imm\u00e9diatement sur la machine linux sans aucune autre intervention. Winbind est le composant effectuant le mapping entre les UID linux et les SID Windows.<\/p>\n<h4>DFS <a name=\"chapitre1-2-6\"><\/a><\/h4>\n<p>L&rsquo;acronyme <strong>DFS<\/strong> signifie Distributed File System pour syst\u00e8me de fichiers distribu\u00e9s. Ce syst\u00e8me de fichier hi\u00e9rarchis\u00e9 permet de structurer les fichiers partag\u00e9s sur diff\u00e9rents serveurs du r\u00e9seau de fa\u00e7on logique. Il permet de r\u00e9f\u00e9rencer un ensemble de partages qu&rsquo;il faudra rendre accessibles de mani\u00e8re uniforme puis, de centraliser l&rsquo;ensemble des espaces disponibles sur cet ensemble de partages.<\/p>\n<p>Avec le DFS, l&rsquo;utilisateur final ne visualise pas le nom du serveur sur lequel il acc\u00e8de pour lire les donn\u00e9es, cela est totalement transparent. <strong>L&rsquo;avantage<\/strong> c&rsquo;est que si le serveur vient \u00e0 changer \u00e0 cause d&rsquo;une panne ou pour cause d&rsquo;\u00e9volution, <strong>le chemin d&rsquo;acc\u00e8s restera le m\u00eame<\/strong>.<\/p>\n<p>Derri\u00e8re un m\u00eame chemin d&rsquo;acc\u00e8s DFS peuvent se cacher plusieurs serveurs, contenant les m\u00eames donn\u00e9es avec une synchronisation entre ces serveurs gr\u00e2ce \u00e0 <strong>DFS-R<\/strong> (DFS Replication). Cette approche est tr\u00e8s int\u00e9ressante pour de la haute disponibilit\u00e9 de donn\u00e9es et de la r\u00e9partition de charge.<\/p>\n<p>Sachez que le DFS \u00e9tant de plus en plus pr\u00e9sent, d\u00e9sormais il est m\u00eame utilis\u00e9 pour la r\u00e9plication SYSVOL sur un domaine Microsoft entre les contr\u00f4leurs de domaine.<\/p>\n<h5>Racine, dossier et cible<\/h5>\n<p>Lorsque l&rsquo;on parle de DFS, il y a 3 termes importants \u00e0 retenir : La <strong>racine DFS<\/strong>, le <strong>dossier<\/strong> et la <strong>cible<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dfs1.png\" alt=\"dfs1-w400\" \/><\/p>\n<ul>\n<li>La <strong>racine DFS<\/strong> est le point d&rsquo;entr\u00e9e principal du syst\u00e8me DFS. Elle contient le chemin d&rsquo;acc\u00e8s aux diff\u00e9rentes liaisons DFS qui lui sont associ\u00e9es.<\/p>\n<\/li>\n<li>\n<p>Le <strong>dossier<\/strong> sera le nom du partage affich\u00e9 c\u00f4t\u00e9 client et dans la configuration du serveur, une liaison sera effectu\u00e9e entre le dossier DFS et la cible DFS afin de faire un <strong>lien<\/strong> entre les <strong>deux \u00e9l\u00e9ments<\/strong>. Les dossiers sont \u00e9galement appel\u00e9s \u00ab Liaison DFS \u00bb.<\/p>\n<\/li>\n<li>\n<p>La <strong>cible<\/strong> sera le serveur sur lequel sont situ\u00e9es les donn\u00e9es, elle repr\u00e9sente le chemin d&rsquo;<strong>acc\u00e8s<\/strong> vers le <strong>dossier partag\u00e9<\/strong> situ\u00e9 sur ce serveur.<\/p>\n<\/li>\n<\/ul>\n<h5>Avantages<\/h5>\n<ol>\n<li>Simplifier l&rsquo;administration : Si une cible DFS tombe c&rsquo;est transparent pour l&rsquo;utilisateur, la liaison DFS peut \u00eatre d\u00e9plac\u00e9e vers un autre serveur contenant une copie des donn\u00e9es en changeant le dossier cible sur le serveur DFS.<\/li>\n<li>Un <strong>nom unique<\/strong> permet d&rsquo;acc\u00e9der \u00e0 toutes les ressources, il n&rsquo;est <strong>pas<\/strong> n\u00e9cessaire de mapper une <strong>lettre<\/strong> sur chaque ressource<\/li>\n<li>\u00c9quilibrage de charge et tol\u00e9rance aux pannes (si plusieurs cibles par dossier DFS)<\/li>\n<\/ol>\n<p>cf : Merci \u00e0 <a href=\"https:\/\/www.it-connect.fr\/cest-quoi-le-dfs-windows-server\/\">it-connect<\/a> d\u00e9taillant le fonctionnement de DFS.<\/p>\n<h2>Installer et configurer SaMBa ; des outils d&rsquo;administration natifs aux outils d&rsquo;administration de serveur distant (RSAT) <a name=\"chapitre2\"><\/a><\/h2>\n<p>A travers le TP suivant nous allons voir deux m\u00e9thodes pour administrer un serveur SaMBa. La premi\u00e8re se fera via CLI.<\/p>\n<h3>L&rsquo;anc\u00eatre couple OpenLDAP\/SaMBaPDC TP n\u00b01<a name=\"chapitre2-1\"><\/a><\/h3>\n<p>La mise en place <strong>d&rsquo;OpenLDAP<\/strong> et <strong>SaMBa<\/strong> ont de\u0301ja\u0300 fait ses preuves. L&rsquo;architecture est e\u0301volutive : l&rsquo;inte\u0301gration de services ne\u0301cessitant une base de donne\u0301es d&rsquo;authentification est optimise\u0301 gra\u0302ce aux standards employe\u0301s par les technologies. La gestion fine d&rsquo;un intranet\/extranet est par exemple supporte\u0301.<\/p>\n<p>OpenLdap offre une grande se\u0301curite\u0301 avec le chiffrement des connexions et une tole\u0301rance de panne avec la re\u0301plication. Un des grand avantage d&rsquo;OpenLDAP est sont interope\u0301rabilite\u0301 entre les diffe\u0301rent syste\u0300me, il cohabite tre\u0300s facilement avec une architecture windows comme Mac OSX.<\/p>\n<p>L&rsquo;avantage d&rsquo;utiliser des technologies ouvertes permet de be\u0301ne\u0301ficier du support technique offert par la communaute\u0301 du logiciel libre. Plusieurs socie\u0301te\u0301s de service proposent un support technique professionnel.<\/p>\n<h4>Installation d&rsquo;un service d&rsquo;annuaire (OpenLDAP) et des schemas SaMBa<\/h4>\n<p>Proc\u00e9der \u00e0 l&rsquo;installation du serveur contr\u00f4leur de domaine nomm\u00e9 \u00ab dc1old \u00bb en Debian Wheezy 7.11 depuis le logiciel Virtualbox en suivant pas \u00e0 pas les captures suivantes :<\/p>\n<p>Nommer la machine \u00ab <strong>dc1old<\/strong> \u00bb et choisissez le type \u00ab linux \u00bb et la version \u00ab <strong>debian x64<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_01.png\" alt=\"dc1_01-w400\" \/><\/p>\n<p>En fonction de votre machine de TP, allouer la m\u00e9moire ad\u00e9quat, ici \u00ab <strong>1Go<\/strong> \u00bb :<\/p>\n<blockquote><p>\n  &gt; <strong><em>Remarque<\/em><\/strong> : Pour un serveur en production 4Go sont recommand\u00e9s\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_02.png\" alt=\"dc1_02-w400\" \/><\/p>\n<p>Cr\u00e9er un disque virtuel :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_03.png\" alt=\"dc1_03-w400\" \/><\/p>\n<p>Au format \u00ab <strong>vmdk<\/strong> \u00bb, pour une meilleur compatibilit\u00e9 avec un cluster Proxmox<sup id=\"fnref2:136-othernote\"><a href=\"#fn-136-othernote\" class=\"jetpack-footnote\" title=\"Lisez la note de bas de page.\">2<\/a><\/sup> par exemple :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_04.png\" alt=\"dc1_04-w400\" \/><\/p>\n<p>En s\u00e9lectionnant \u00ab <strong>Dynamiquement allou\u00e9<\/strong> \u00bb votre image grossira en fonction du remplissage de la VM :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_05.png\" alt=\"dc1_05-w400\" \/><\/p>\n<p>Nommer le disque avec le m\u00eame nom que votre VM , ici \u00ab <strong>dc1<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_06.png\" alt=\"dc1_06-w400\" \/><\/p>\n<p>S\u00e9lectionner le \u00ab <strong>lecteur optique<\/strong> \u00bb et le \u00ab <strong>disque dur<\/strong> \u00bb en ordre d&rsquo;amorcage avec le chipset \u00ab <strong>ich9<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_07.png\" alt=\"dc1_07-w400\" \/><\/p>\n<p>Dans l&rsquo;onglet \u00ab <strong>stockage<\/strong> \u00bb, ajouter l&rsquo;ISO <a href=\"https:\/\/cdimage.debian.org\/cdimage\/archive\/8.11.1\/amd64\/iso-cd\/debian-8.11.1-amd64-netinst.iso\">debian jessie<\/a> au lecteur de CD :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_08.png\" alt=\"dc1_08-w400\" \/><br \/>\nDans les pr\u00e9-requis, vous avez d\u00fb cr\u00e9er un r\u00e9seau priv\u00e9 en NAT :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/10\/2019-09-26-10.38.25.png\" alt=\"2019-09-26 10.38.25-w400\" \/><\/p>\n<p><strong>Lancer la VM et choisir l\u2019installation par d\u00e9faut (mode texte)<\/strong><\/p>\n<p>Privil\u00e9gier la langue de shakespeare pour \u00e9viter les mauvaises traductions ou les probl\u00e8mes d&rsquo;accentuation dans vos consoles distantes :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_11.png\" alt=\"dc1_11-w400\" \/><\/p>\n<p>Pour la localisation choisir \u00ab <strong>other<\/strong> \u00bb dans le premier menu :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_12.png\" alt=\"dc1_12-w400\" \/><\/p>\n<p>Ensuite \u00ab <strong>Europe<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_13.png\" alt=\"dc1_13-w400\" \/><\/p>\n<p>Et enfin \u00ab <strong>France<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_14.png\" alt=\"dc1_14-w400\" \/><\/p>\n<p>On reste en \u00ab <strong>en_US.UTF-8<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_15.png\" alt=\"dc1_15-w400\" \/><\/p>\n<p>Avec un clavier \u00ab <strong>French<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_16.png\" alt=\"dc1_16-w400\" \/><\/p>\n<p>Attendre &#8230;<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_17.png\" alt=\"dc1_17-w400\" \/><\/p>\n<p>S\u00e9lectionner la seconde interface r\u00e9seau en mode \u00ab <strong>NAT<\/strong> \u00bb pour d\u00e9buter l&rsquo;installation via internet :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_18.png\" alt=\"dc1_18-w400\" \/><\/p>\n<p>Nommer votre machine \u00ab <strong>dc1old<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_19.png\" alt=\"dc1_19-w400\" \/><\/p>\n<p>Le nom de domaine pour la formation sera \u00ab <strong>formation.fr<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_20.png\" alt=\"dc1_20-w400\" \/><\/p>\n<p>Renseigner le mot de passe root ici \u00ab <strong>Pa$$w0rd<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_21.png\" alt=\"dc1_21-w400\" \/><\/p>\n<p>Cr\u00e9ation de l&rsquo;utilisateur \u00ab <strong>asr<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_22.png\" alt=\"dc1_22-w400\" \/><\/p>\n<p>avec le mot de \u00ab <strong>Pa$$w0rd<\/strong> \u00bb :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_23.png\" alt=\"dc1_23-w400\" \/><\/p>\n<p>Pour le partitionnement nous gardons le disque entier par d\u00e9faut<\/p>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : En production, par exemple, s\u00e9parer les homes de la VM sur un stockage externe ZFS\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_24.png\" alt=\"dc1_24-w400\" \/><\/p>\n<p>Sur l&rsquo;unique disque :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_25.png\" alt=\"dc1_25-w400\" \/><\/p>\n<p>Une seule partition :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_26.png\" alt=\"dc1_26-w400\" \/><\/p>\n<p>V\u00e9rifier les partitions :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_27.png\" alt=\"dc1_27-w400\" \/><\/p>\n<p>Et valider les changements :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_28.png\" alt=\"dc1_28-w400\" \/><\/p>\n<p>La pr\u00e9-installation d\u00e9bute :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/dc1_29.png\" alt=\"dc1_29-w400\" \/><\/p>\n<p>S\u00e9lectionner un d\u00e9p\u00f4t Debian :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_30.png\" alt=\"dc1_30-w400\" \/><\/p>\n<p>Sur ftp.fr.debian.org par exemple :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_31.png\" alt=\"dc1_31-w400\" \/><\/p>\n<p>Laisser le proxy vide si vous sortez directement :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_32.png\" alt=\"dc1_32-w400\" \/><\/p>\n<p>Vous avez acc\u00e8s \u00e0 internet si l&rsquo;\u00e9cran suivant apparait :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_34.png\" alt=\"dc1_34-w400\" \/><\/p>\n<p>Dans le taskselector, nous choisissons un installation minimale, \u00ab <em>SSH server<\/em> \u00bb et \u00ab <em>Standard System<\/em> \u00bb:<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_35.png\" alt=\"dc1_35-w400\" \/><\/p>\n<p>Installer le grub sur le master boot :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_37.png\" alt=\"dc1_37-w400\" \/><\/p>\n<p>Pour la VM s\u00e9lectionner \/dev\/sda :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_38.png\" alt=\"dc1_38-w400\" \/><\/p>\n<p>Installation termin\u00e9e, vous pouvez rebooter :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dc1_39.png\" alt=\"dc1_39-w400\" \/><\/p>\n<p>Une fois la machine virtuelle est red\u00e9marr\u00e9, connectez-vous sur la console VirtualBox via le compte \u00ab asr \u00bb<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/2018-07-23-10.54.18.png\" alt=\"2018-07-23 10.54.18-w400\" \/><br \/>\nV\u00e9rifier le fichier \u00ab <em>\/etc\/network\/interfaces<\/em> \u00bb avec les param\u00e8tres suivants :<\/p>\n<pre><code>$ sudo -i\ndc1old:~# more \/etc\/network\/interfaces\n...\nauto lo\niface lo inet loopback\n\nallow-hotplug enp0s3\niface enp0s3 inet dhcp\n...\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/2019-09-19-16.00.23.png\" alt=\"2019-09-19 16.00.23-w400\" \/><\/p>\n<p>Quitter la console Virtualbox, rebooter la VM et depuis votre poste client lancer votre logiciel ssh favoris (<a href=\"https:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/latest.html\">Putty<\/a>, <a href=\"https:\/\/mobaxterm.mobatek.net\/download-home-edition.html\">MobaXterm<\/a>, Client SSH Windows 10), connectez-vous \u00e0 l&rsquo;adresse @IP : 10.X.X.X avec le compte \u00ab asr \u00bb.<\/p>\n<pre><code>$ ssh -p 2221 asr@127.0.0.1\n$ sudo -i\ndc1old:~#\n<\/code><\/pre>\n<h4>Installation du service OpenLDAP <a name=\"chapitre2-1-1\"><\/a><\/h4>\n<pre><code>dc1old:~# apt-get install slapd ldap-utils samba-doc\n\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nThe following extra packages will be installed:\n  libltdl7 libodbc1 libperl5.20 libslp1\nSuggested packages:\n  libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal libmyodbc odbc-postgresql tdsodbc unixodbc-bin slpd openslp-doc\nThe following NEW packages will be installed:\n  ldap-utils libltdl7 libodbc1 libperl5.20 libslp1 samba-doc slapd\n0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 2,228 kB of archives.\nAfter this operation, 6,402 kB of additional disk space will be used.\nDo you want to continue ? [Y\/n]\n<\/code><\/pre>\n<p>Lors de l\u2019installation du paquet slapd, le mot de passe de l\u2019administrateur et le domaine \u00e0 g\u00e9rer (ex : formation.fr) sont demand\u00e9s. Ce dernier est stock\u00e9 directement dans la base LDAP.<\/p>\n<pre><code>| Questions | R\u00e9ponses |\n| --- | --- |\n| Mot de passe de l\u2019administrateur| Pa$$w0rd |\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : La base de donn\u00e9es est initialis\u00e9e dans \u00ab <em>\/var\/lib\/ldap<\/em> \u00bb. Si vous souhaitez changer la racine de votre arbre ldap, il faudra arr\u00eater le service ldap (service slapd stop), supprimer le dossier \u00ab <em>\/var\/lib\/ldap<\/em> \u00bb et de re-configurer le paquet avec la commande :\n<\/p><\/blockquote>\n<pre><code>dc1old:~# dpkg-reconfigure slapd\n<\/code><\/pre>\n<p>Par d\u00e9faut, la configuration du serveur LDAP est g\u00e9r\u00e9 par des injections LDIF stock\u00e9 dans le r\u00e9pertoire \u00ab <em>\/etc\/ldap\/slapd.d<\/em> \u00bb. LDAP fonctionne avec des sche\u0301mas, pre\u0301sents dans le r\u00e9pertoire \u00ab <em>\/etc\/ldap\/schema\/<\/em> \u00bb.<\/p>\n<p>Pour coupler SaMBa avec OpenLDAP il faut ajouter le sche\u0301ma approprie\u0301 avec les commandes suivantes :<\/p>\n<pre><code>dc1old:~# cp \/usr\/share\/doc\/samba-doc\/examples\/LDAP\/samba.schema.gz \/etc\/ldap\/schema\/\ndc1old:~# gunzip -d \/etc\/ldap\/schema\/samba.schema.gz\n<\/code><\/pre>\n<p>Pour des questions de facilit\u00e9 de compr\u00e9hension et de gestion de l&rsquo;annuaire nous allons garder l&rsquo;ancien mode de configuration d&rsquo;un annuaire LDAP. Nous allons d\u00e9placer le r\u00e9pertoire \u00ab <em>\/etc\/ldap\/slapd.d\/<\/em> \u00bb et le remplacer par un unique fichier \u00ab <em>\/etc\/ldap\/slapd.conf<\/em> \u00bb :<\/p>\n<pre><code>dc1old:~# \/etc\/init.d\/slapd stop\n[ ok ] Stopping slapd (via systemctl): slapd.service.\n\ndc1old:~# cd \/etc\/ldap\ndc1old:~# mv \/etc\/ldap\/slapd.d\/ \/etc\/ldap\/slapd.d.ori\/\ndc1old:~# touch \/etc\/ldap\/slapd.conf\ndc1old:~# chown openldap:openldap \/etc\/ldap\/slapd.conf\n<\/code><\/pre>\n<p>Configurer le fichier \u00ab <em>\/etc\/ldap\/slapd.conf<\/em> \u00bb avec la configuration suivante compl\u00e8te :<\/p>\n<pre><code>dc1old:~# vi \/etc\/ldap\/slapd.conf\n\n#######################################################################\n# Global Directives:\n\n# TLS\n#TLSCACertificateFile \/etc\/ssl\/certs\/ca-terena.pem\n#TLSCertificateFile \/etc\/ssl\/certs\/moncerts.pem\n#TLSCertificateKeyFile \/etc\/ssl\/private\/maclef.key\n\n# Definition des schemas\ninclude         \/etc\/ldap\/schema\/core.schema\ninclude         \/etc\/ldap\/schema\/cosine.schema\ninclude         \/etc\/ldap\/schema\/nis.schema\ninclude         \/etc\/ldap\/schema\/inetorgperson.schema\ninclude        \/etc\/ldap\/schema\/samba.schema\n\n# Fichier PID\npidfile         \/var\/run\/slapd\/slapd.pid\n\n# List of arguments that were passed to the server\nargsfile        \/var\/run\/slapd\/slapd.args\n\n# Read slapd.conf(5) for possible values\n#  -1  enable all debugging\n#  0   no debugging\n#  1   trace function calls\n#  2   debug packet handling\n#  4   heavy trace debugging\n#  8   connection management\n#  16  print out packets sent and received\n#  32  search filter processing\n#  64  configuration file processing\n#  128 access control list processing\n#  256 stats log connections\/operations\/results\n#  512 stats log entries sent\n#  1024    print communication with shell backends\n#  2048    print entry parsing debugging\n#  4096    caching (unused)\n#  8192    data indexing (unused)\n#  16384   LDAPSync replication\nloglevel    0\n\n# Where the dynamically loaded modules are stored\nmodulepath      \/usr\/lib\/ldap\nmoduleload      back_hdb\n\n# The maximum number of entries that is returned for a search operation\nsizelimit 1000\nidletimeout 3600\n\n# The tool-threads parameter sets the actual amount of cpu's that is used\n# for indexing.\ntool-threads 1\n\n#######################################################################\n# Specific Backend Directives for hdb:\n# Backend specific directives apply to this backend until another\n# 'backend' directive occurs\nbackend         hdb\n\n#######################################################################\n# Specific Directives for database #1, of type hdb:\n# Database specific directives apply to this databasse until another\n# 'database' directive occurs\ndatabase        hdb\nsuffix          \"dc=formation,dc=fr\"\nrootdn          \"cn=admin,dc=formation,dc=fr\"\nrootpw      {SSHA}lDTQ09puaOA\/rrul2igmGfI+lswd+EI1\n\n# Where the database file are physically stored for database #1\ndirectory       \"\/var\/lib\/ldap\"\n\n# The dbconfig settings are used to generate a DB_CONFIG file the first\n# time slapd starts.  They do NOT override existing an existing DB_CONFIG\n# file.  You should therefore change these settings in DB_CONFIG directly\n# or remove DB_CONFIG and restart slapd for changes to take effect.\n\n# For the Debian package we use 2MB as default but be sure to update this\n# value if you have plenty of RAM\ndbconfig set_cachesize 0 2097152 0\n\n# Sven Hartge reported that he had to set this value incredibly high\n# to get slapd running at all. See http:\/\/bugs.debian.org\/303057 for more\n# information.\n\n# Number of objects that can be locked at the same time.\ndbconfig set_lk_max_objects 1500\n# Number of locks (both requested and granted)\ndbconfig set_lk_max_locks 1500\n# Number of lockers\ndbconfig set_lk_max_lockers 1500\n\n# Indexing options for database #1\nindex   objectClass             eq\nindex   uidNumber,gidNumber     eq\nindex   loginShell      eq\nindex   uid,cn                  pres,sub,eq\nindex   sn                      pres,sub,eq\nindex   mail                    pres,eq\nindex   memberUID               eq,sub\nindex   member,uniqueMember     eq\n\n# SaMBa\nindex   sambaSID                eq\nindex   sambaPrimaryGroupSID    eq\nindex   sambaGroupType      eq\nindex   sambaSIDList        eq\nindex   sambaDomainName         eq\nindex   default         sub,eq\n\n# Save the time that the entry gets modified, for database #1\nlastmod         on\n\n# Checkpoint the BerkeleyDB database periodically in case of system\n# failure and to speed slapd shutdown.\ncheckpoint      512 30\n\n# ACL\n# The userPassword by default can be changed by the entry owning it if they are authenticated.\n# Others should not be able to see it, except the admin entry below\n# These access lines apply to database #1 only\naccess to attrs=userPassword,shadowLastChange,SambaLMPassword,SambaNTPassword\n        by dn=\"cn=admin,dc=formation,dc=fr\" write\n        by anonymous auth\n        by self write\n        by * none\n\naccess to dn.base=\"\" by * read\n\n# The admin dn has full write access, everyone else can read everything.\naccess to *\n        by dn=\"cn=admin,dc=formation,dc=fr\" write\n        by * read\n<\/code><\/pre>\n<p>Relancer le service OpenLDAP et v\u00e9rifier qu&rsquo;il soit d\u00e9marr\u00e9 :<\/p>\n<pre><code>dc1old:~# \/etc\/init.d\/slapd start\n[ ok ] Starting slapd (via systemctl): slapd.service.\n\ndc1old:~# ps -ef | grep ldap\nopenldap  2273     1  0 07:41 ?        00:00:00 \/usr\/sbin\/slapd -h ldap:\/\/\/ ldapi:\/\/\/ -g openldap -u openldap -f \/etc\/ldap\/slapd.conf\n\ndc1old:~# netstat -tupln | grep slapd\ntcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      2273\/slapd\ntcp6       0      0 :::389                  :::*                    LISTEN      2273\/slapd\n\ndc1old:~# \/etc\/init.d\/slapd status\n\u25cf slapd.service - LSB: OpenLDAP standalone server (Lightweight Directory Access Protocol)\n   Loaded: loaded (\/etc\/init.d\/slapd)\n   Active: active (running) since Thu 2019-09-19 17:13:12 CEST; 12s ago\n  Process: 1723 ExecStop=\/etc\/init.d\/slapd stop (code=exited, status=0\/SUCCESS)\n  Process: 1800 ExecStart=\/etc\/init.d\/slapd start (code=exited, status=0\/SUCCESS)\n   CGroup: \/system.slice\/slapd.service\n           \u2514\u25001805 \/usr\/sbin\/slapd -h ldap:\/\/\/ ldapi:\/\/\/ -g openldap -u openldap -f \/etc\/ldap\/slapd.conf\n\nSep 19 17:13:12 debian8 systemd[1]: Starting LSB: OpenLDAP standalone server (Lightweight Directory Access Protocol)...\nSep 19 17:13:12 debian8 slapd[1804]: @(#) $OpenLDAP: slapd  (Aug 18 2019 18:52:35) $\n                                             pbuilder@spike:\/build\/openldap-2.4.40+dfsg\/debian\/build\/servers\/slapd\nSep 19 17:13:12 debian8 slapd[1800]: Starting OpenLDAP: slapd.\nSep 19 17:13:12 debian8 systemd[1]: Started LSB: OpenLDAP standalone server (Lightweight Directory Access Protocol).\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Si vous souhaitez ajouter des index au fichier \u00ab <em>\/etc\/ldap\/slapd.conf<\/em> \u00bb il vous faudra penser \u00e0 r\u00e9indexer le service :<\/p>\n<pre><code>dc1old:~# \/etc\/init.d\/slapd stop\ndc1old:~# slapindex -v\nWARNING!\nRunnig as root!\nThere's a fair chance slapd will fail to start.\nCheck file permissions!\nindexing id=00000001\nindexing id=00000007\nindexing id=00000008\nindexing id=00000009\ndc1old:~# chown -R openldap:openldap \/var\/lib\/ldap\/\ndc1old:~# \/etc\/init.d\/slapd start\n<\/code><\/pre>\n<\/blockquote>\n<p>Une fois le serveur ldap d\u00e9marr\u00e9, il faut initialiser la base afin de contenir les informations n\u00e9cessaire \u00e0 la poursuite du TP :<\/p>\n<p>Cr\u00e9er le fichier \u00ab <em>\/root\/import_racine.ldif<\/em> \u00bb :<\/p>\n<blockquote><p>\n  <strong>Attention<\/strong> : il faut deux retours chariots \u00e0 la fin des valeurs coll\u00e9es dans le fichier.\n<\/p><\/blockquote>\n<pre><code>dc1old:~# vi \/root\/import_racine.ldif\ndn: dc=formation,dc=fr\nobjectclass: dcObject\nobjectclass: organization\no: formation\ndc: formation\n\ndn: ou=users,dc=formation,dc=fr\nobjectclass: top\nobjectclass: organizationalUnit\nou: users\n\ndn: ou=groups,dc=formation,dc=fr\nobjectclass: top\nobjectclass: organizationalUnit\nou: groups\n\ndn: uid=jbrown,ou=users,dc=formation,dc=fr\nobjectclass: top\nobjectclass: person\nobjectclass: organizationalPerson\nobjectclass: inetOrgPerson\nuid: jbrown\ncn: James\nsn: Brown\nmail: &#106;&#x62;&#114;&#x6f;w&#x6e;&#64;&#102;&#x6f;&#114;&#x6d;&#97;&#x74;i&#x6f;n&#46;&#x66;&#114;\npostalCode: 88441\nuserPassword: password\n\ndn: uid=bwilson,ou=users,dc=formation,dc=fr\nobjectclass: top\nobjectclass: person\nobjectclass: organizationalPerson\nobjectclass: inetOrgPerson\nuid: bwilson\ncn: Bruce\nsn: Wilson\nmail: &#98;&#x77;&#x69;l&#115;&#x6f;n&#64;&#x66;o&#114;&#x6d;a&#116;&#x69;&#x6f;&#110;&#x2e;&#x66;r\npostalCode: 66221\nstreet: Elm 5\nuserPassword: password\njpegPhoto:: \/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wCEAAMDAwMDAwQEBAQFBQUFBQcHBgYHBwsICQgJCAsRCwwLCwwLEQ8SDw4PEg8bFRMTFRsfGhkaHyYiIiYwLTA+PlQBAwMDAwMDBAQEBAUFBQUFBwcGBgcHCwgJCAkICxELDAsLDAsRDxIPDg8SDxsVExMVGx8aGRofJiIiJjAtMD4+VP\/CABEIAFIAWAMBIgACEQEDEQH\/xAAdAAACAgMBAQEAAAAAAAAAAAAGCAUHAwQJAgAB\/9oACAEBAAAAAElmzK1aOaraUmpiktrD10DayAIMkKunPQdk+hrZwkUNkMrM88VDtt7r7C1KCJtprbSBP2J6K+VDqUlwErkDnOm\/HF9IPDaWQ+cP85sXS7OCj1Iybjj2zVvJA0b91BqJ1JuQDYfkuSWrGdFzsMsWkaIUGHh4IuY1glqtWrK8G89YeJk+ldfT1pHz9\/\/EABoBAAIDAQEAAAAAAAAAAAAAAAUHAwYIBAD\/2gAIAQIQAAAApKICefJOj5haleI6vyhC1+FEa9UydaFaD7hDLtU9jttBsCJni6f\/xAAaAQADAQEBAQAAAAAAAAAAAAAFBgcDBAII\/9oACAEDEAAAAF5+Mdc4X6LUuz2kyGquiYYI\/PzvUctR8d5289ghjS48fuOK\/wD\/xAA5EAABAwIEBAMGAwcFAAAAAAABAgMEABEFBhIhEzFBURQiMgdCYXGBwSOhsRUkM3KCkdFSU2J04f\/aAAgBAQABPwGHLbkIVbmjmPhSF60BSL2VUPDhLYLjL4KuotyP0NQPZq5iWBmUiWPGFarIV\/DIHS\/MGpeC4lhrnh5MdxLgJBuna\/wPWsFyW2\/kVaH2\/wB7dK5LSyPMDbb6KtWD+zqBKypKTIZQJ89q4dPNG10f+1GydizuAPSSgstwlHiawQVnVby\/LrTrfBOkqF6gyWmEJQSoKvfVYUiawVbrubc6bQEr4qSkKpDj\/iEMKSdLoDYSm\/XkRWSco+Bg4dORxo8lCyJcd1NgqxI68tjSG2Wm\/wAFKUi97DYVi2GRcZh8F+9goLSR0IpC02TakqA2rE4acSgPw9WgPJ0qPYE71mL2fQJLanYiOGmJh5DKEep125IualtvxJDrDo0OtLKFjsQd6U8tJ2686deDa\/Ii1\/STvWU8KwDOOVoaZ8VPioV2VLQdC0WNwQRSU2QEk3sNyetPExzq9zr8KEwpulXTrTWJx0OLQp5IOskC\/Sm5iFpSpCr3A\/S9IeF9zQJPI2r2g5Tw3AWFS0uPOPzpay3q9KE8zc9Tvzpxv6HrWUcCh5hnmC\/iQiv6bskp18XvbcVlXJE3K0xbrOJJfadFnGi2U\/UG5peocqxPEmYrCtak3I2FTcckBwp1q9PIck87Hbn3oLllYWTvzvUbFpkE7XIv1+FYFizOIM60W18inqmmeIrnXtTaxmW82p2I61CYFkL2Ui6upI5XrhKS0nWL6VadQ95J7VkzKcZzEor4lsHgkL4KwSrWO1ulJdWbeUHbcjaluqAPkX+VZjxMLkur07Nk7cjYdjyvTSzJcceWLFe4+9Mt6x5eQNOBCiR8enSsqylxcSLSdR1g7X273pmVYedJT9Kx7L+G5mjBp911sp9KkqOx+KTsazDl+Rl3EBHcktvNKuptSFbEfEdCKyEGHNi+OKhZUGFNg\/1JJ3BoSU99\/lTuzZUs2FutZhaSZT5SggJVcG29r9bU1p8OhQuRalyHgBa4TyriWTfqayjEck4kp1CiA0j63VyplTqPKtQV89qnfsl5jhzyzw1\/7igP7XrPOF4fgmMNrg4ozIjSFH8BCwtbI7E9u1ZCwvCpjrcyRKQHW3PLG1WJ+N\/8U65o3sBSWCs8R3c9B2rN2BGWy7ISQDpsRb86SuRC1IlNLQb9ep+B60ZUbYnaokOXijwaYQdJ5q90bd6wDBF4JESlJC7+Zdhvc00W3htWbZmHYVhi3J8PxUVR0rb06t+l+3zrFXMLU6VQUvJJcWVBQ0pSOiUi6jt3Jpryea52r2c+KxKap9995TEVvyjWbFajtfvWsL+VKW1iBJQoKZbV03uof4qThEWWyriNJWee++9R8uYTH06YrYIH+kU9BaCNKU2t6aw93iJ0KO6axfFIOFSW1OSEsFwn1GwJHOsdbYzhlybEgy21ugC4QoG+nfSfnU6MAtY9JR7vfferqPQmsOzTOw9bDMdTLZTfhtcklZFrnufnWLe0HM+JLMbi+FSfIpDW3zuedZXQzGyxh\/IDw4Wf6\/Mo1h8pqbCaktnyOi6T8L1PxlqFj0OE5sJLK7fzDkKOlbYVWM4yzl7FY63dmJKTqI90o62r2pQXnDExpg8aK4gNmytkHoR8DTMx6MVLYdW2u1uo\/NNL1JSt3UFq08qCVN+pR2pS9SiR32oyPElp824iLIc\/5dlUjOstvLyMKCAAEFBdJ9y\/Kms2QMNyvBjofC3ww2opQb8\/MAfvWPY\/IxzFvFqUW9B\/BsfSByFSfaGpzAm+E4WZrTyF2725\/Q9qx7NT+ZHY7i20t8JrTpBvc33NSJkzgmKH3THJ1cLUdN\/lQTtvUSO2664FXA0LWr6C9KJJNConrP8AIaRzXTPo\/t+tO\/f71J9X0H6U1T1L+1QNncQ\/6n3Ff\/\/EACQQAQEAAgICAQQDAQAAAAAAAAERACExQVGBYXGRobEQwfDR\/9oACAEBAAE\/EFxCJHa+QcvGUwhESkN9fiYHv0VpOm0o9OFKc\/OP0nyMqyNS7O0x2FTnAH6HHF+oMkQP6cPbVCpqdHusdzBsTjjKJKrAZwN411hOmhN3Q+OdYFicQWN6QTJzrwEHC7aJwbcdwysS\/AW7GNhVpxF5hwesFHQhHh77IyY3UAIHQHgwuHXP36x4apQUBQcWcXJmcwJakbelduaVYQKsBS3eAVJyB+cQnvn1w6o9ZDI6pnUIiPfdxG9iCBQRXreNy18f2PjFCeB0fH3MMVGwtGz1hMB2JKPunWGBO9cLh1omlDTJZj6GlAPSm3RMCgLAgSfWedY3okyFyEYQWneraZLkQPZNfjHeyDpVdBP7dYuNwjIibANNDHmgaDAeXRptkBMDpGVE6Hqjvltx4aCVkJq9o4gOA4y6pRz7bXiMrUKoBArI5ZdacH0tDvKBFDsjg3oRL8G\/tceEiW1Y6UAXW0jxK47AXAL0gOg3HkF1MeStC2JfnHWoCStw\/wDe804AlIhCOmmMAu7jZ+Fw0B2U6H2hTGAuDJHQLuYV1xK4W0jhBExMKEcCV+5m01yqkMRn8VrZVUN24oNBOeYF1eI6cEGRpvfJrB+GQLVd9ZIRJROhHod4eCYNA8PTGhag8kNPJivYOADUtVxNVsC44dbHxjhJe2AYOXuc16+cQODu1ej3TF3gwCyreivI5JUksX4fesSG1rUxOwRWcCuJY2pBRrL0AQyrY62UfZjjgyEKuhQpIYLK9dtHzfVC4V2Gib2vOsI+EqqQI4gFwY1Py185FplUDmj8LU84jKWQGhYb+GYoKQdBVa8fLgkXPHI8s+uWSNh+pzh6\/EJ6CF0MduPBMS2w88OjhgEW0VUC+Ht6xbrYBeevOWtwmrpdV6RSGDx83G9WqMDRe3oFCj2uUoN4FoGLoFWobz7guMGnj2W4jCzVWD1RwXq8VTsWxxafUEV2R2WOBoHSEnGyczAFEcmv43hrndLdMA4GT4cJ8xi4mEFtpKDrTMB0WxjaWEKwJpfaeX95xkQjKxHJ5FgWWx4WjvAwAztJmx6tsUyaoEOUrgVl3jsSC8V1lgV0fwbzc\/pzg9R17zkOp+jGh6Z5\/wDGuf2M4nvOf+9ZxOos\/wD\/xAAvEQABAwMCBQMDAwUAAAAAAAACAQMEAAUREiEGBxMxQSJRcSMzYRQygRUXQpGy\/9oACAECAQE\/AHIDLhl0i0+VQvHvXF3MCTaZ7kW0voatv+o1FP8ABcKBfhavPM+dcbZESOCsSQki49pzj0dk+Fqy81r3FkSBkfUbkzAdQjVS6I9lQUqw8SWzi6GRRjVSHTrBdiHPaisAEuUNa5mXmBDgLFC4lBubGHmCRDFT8YQsYwtQmHpkpBFOorpepPfPmoPAIq0RPvCCGKYRKv3B71pZV8fqte6ePmuVEmaxxMLDUkWmDTL45RNenslA5lNiT\/aVzPmzJt7EHzJ1GQwKKONOd65cxYz9wdUw3ANqfaOQaiC6UHbHxVxYaGzTlfX6aNL37ZqG49CurT0UnWzE8obKay\/hPNWtXpdqhSFdV7qsoqmrStqq+cj4WuYPB5SVfu7twJWmAXDKhnT7COKslxnW6cMtvIg0qIW22Pav7i2hwOq7EdF3VujZJiuI+MnrzDVuO30owEmtvuq\/lVrh+2G1dbZLfbkDBceDW4iEmlM99SVFVhY7e6l6e5KhLTtmjXAFafQTbwuyjsua454JC4223QLXHajNhJQnhBNO2MZ\/NWLl0\/Luk39Q2rcQeu2Cki6s9gJK4e5ZXNqUSzxT9KXWbcHOC2T0qlcPWz+k2dmC+YPi1kQXTjLefShJ7pTUiO2pAaIqpjG2MJQft\/irl+9Ka+4XwtJ9qmu4\/NF99z4D\/mv\/xAAsEQACAQMCBAUDBQAAAAAAAAABAgMABBEFEgYhMUETFCIycVFSYRUzNGJy\/9oACAEDAQE\/AE09bmQ+F8kNWhcIsrs9wAYmHp+vMVYcIx291cO+JInQqoPXJ61c8MWzW6Rx5HhoQP7HHKtZ0W5tMJMMhjkN8V5B\/uFcM2EodZDAjxMNpY9qtoRyIxtHUVLNawYyBQEM6+nGcVxVFB5F96bmHsI7ZokZ61wdEP0pJcDdJzPqzSnZESprWricTAktWgtNtBfJJ7GtRtYZonWRAQQeXatdsXtr90VNoxyAbIrhDXbaJYrKO1IZurA5yfqajYk7GwAwqWxikOSVNJFHbx5BBP4q9uikEojdC\/hnCEg1LNHM5Zwuc9xWnRywSq8UrJjmDitP4ha2neS6kYnwiFB+7NXvFFtawxEOrTPtJUdgetapxVBDZFrdwZPSy5\/PUGtS1iO7n8xEGQuPUuT1qEhgx25yerVb9Kv\/AHU\/8l\/8VcftrSe5fmovYK\/\/2Q==\n\ndn: cn=ldap-user,ou=groups,dc=formation,dc=fr\nobjectclass: top\nobjectclass: groupOfNames\ncn: ldap-user\nmember: uid=jbrown,ou=users,dc=formation,dc=fr\nmember: uid=bwilson,ou=users,dc=formation,dc=fr\n\ndn: cn=ldap-admin,ou=groups,dc=formation,dc=fr\nobjectclass: top\nobjectclass: groupOfNames\ncn: ldap-admin\nmember: uid=jbrown,ou=users,dc=formation,dc=fr\n\n\n<\/code><\/pre>\n<p>Ajouter votre fichier \u00ab <em>\/root\/import.ldif<\/em> \u00bb \u00e0 l&rsquo;annuaire OpenLDAP :<\/p>\n<pre><code>dc1old:~# ldapadd -x -D \"cn=admin,dc=formation,dc=fr\" -w 'Pa$$w0rd' -f \/root\/import_racine.ldif\nadding new entry \"ou=users,dc=formation,dc=fr\"\n\nadding new entry \"ou=groups,dc=formation,dc=fr\"\n\nadding new entry \"uid=jbrown,ou=users,dc=formation,dc=fr\"\n\nadding new entry \"uid=bwilson,ou=users,dc=formation,dc=fr\"\n\nadding new entry \"cn=ldap-user,ou=groups,dc=formation,dc=fr\"\n\nadding new entry \"cn=ldap-admin,ou=groups,dc=formation,dc=fr\"\n<\/code><\/pre>\n<p>V\u00e9rifier la bonne int\u00e9gration des donn\u00e9es import\u00e9s :<\/p>\n<pre><code>dc1old:~# ldapsearch -x -b \"dc=formation,dc=fr\"\n# extended LDIF\n#\n# LDAPv3\n# base  with scope subtree\n# filter: (objectclass=*)\n# requesting: ALL\n#\n\n....\n....\n\n# search result\nsearch: 2\nresult: 0 Success\n\n# numResponses: 8\n# numEntries: 7\n<\/code><\/pre>\n<blockquote><p>\n  <strong>Attention<\/strong> : si vous avez des erreurs, il faut recommencer l\u2019installation en purgeant la base avant de continuer la suite du TP. Vous pouvez \u00e9galement v\u00e9rifier avec l&rsquo;outil web phpldapadmin que nous installons par la suite.\n<\/p><\/blockquote>\n<h4>Installation de phpldapadmin <a name=\"chapitre2-1-2\"><\/a><\/h4>\n<p>Pour consulter et modifier l\u2019annuaire LDAP depuis un navigateur. Le paquet phpldapadmin permet de consulter et de modifier la base de donn\u00e9es LDAP en mode Web. Ce logiciel n\u2019est pas obligatoire mais peut faciliter la gestion de votre annuaire.<\/p>\n<p>Pour l&rsquo;installer executer la commande suivante :<\/p>\n<pre><code>dc1old:~# apt-get install phpldapadmin\n\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nThe following extra packages will be installed:\n  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libonig2 libqdbm14 php5-cli php5-common\n  php5-json php5-ldap php5-readline ssl-cert\nSuggested packages:\n  apache2-doc apache2-suexec-pristine apache2-suexec-custom php-pear php5-user-cache openssl-blacklist\nThe following NEW packages will be installed:\n  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libonig2 libqdbm14 php5-cli php5-common\n  php5-json php5-ldap php5-readline phpldapadmin ssl-cert\n0 upgraded, 19 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 8,162 kB of archives.\nAfter this operation, 33.2 MB of additional disk space will be used.\nDo you want to continue? [Y\/n]\n<\/code><\/pre>\n<p>Apr\u00e8s l&rsquo;installation, \u00e9diter les lignes 293,300 et 326 du fichier de configuration \u00ab <em>\/etc\/phpldapadmin\/config.php<\/em> \u00bb.<\/p>\n<pre><code>dc1old:~# vi \/etc\/phpldapadmin\/config.php\n\n293 $servers-&amp;gt;setValue('server','host','127.0.0.1');\n300 $servers-&amp;gt;setValue('server','base',array('dc=formation,dc=fr'));\n326 $servers-&amp;gt;setValue('login','bind_id','cn=admin,dc=formation,dc=fr');\n<\/code><\/pre>\n<p>Acc\u00e9der \u00e0 l&rsquo;interface web depuis votre navigateur : <a href=\"http:\/\/127.0.0.1:8082\/phpldapadmin\/\">http:\/\/127.0.0.1:8082\/phpldapadmin<\/a><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/2019-09-19-17.45.07.png\" alt=\"2019-09-19 17.45.07-w400\" \/><\/p>\n<h4>Installation du service SaMBa <a name=\"chapitre2-1-3\"><\/a><\/h4>\n<p>Installer SaMBa mode V3 depuis debian est un jeu d&rsquo;enfant, il vous suffit de saisir la commande suivante :<\/p>\n<pre><code>dc1old:~# apt-get install samba smbldap-tools smbclient samba-common-bin\n0 upgraded, 44 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 12.9 MB of archives.\nAfter this operation, 59.7 MB of additional disk space will be used.\nDo you want to continue? [Y\/n]\n<\/code><\/pre>\n<p>Arr\u00eater le service afin de pouvoir la param\u00e9trer correctement<\/p>\n<pre><code>dc1old:~# \/etc\/init.d\/samba stop\n<\/code><\/pre>\n<p>Editer fichier de configuration SaMBa \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb avec l\u2019authentification LDAP et le partage du r\u00e9pertoire personnel de l&rsquo;utilisateur :<\/p>\n<pre><code>dc1old:~# mv \/etc\/samba\/smb.conf \/etc\/samba\/smb.conf.ori\ndc1old:~# vi \/etc\/samba\/smb.conf\n\n#======================= Global Definitions =======================\n[global]\n    workgroup = formation.fr\n    netbios name = dc1\n    server string = Samba-LDAP DC1 Server\n    domain master = Yes\n    local master = Yes\n    domain logons = Yes\n    winbind use default domain = Yes\n    dns proxy = No\n    wins support = Yes\n    log file = \/var\/log\/samba\/log.%m\n    max log size = 1000\n    syslog = 0\n    panic action = \/usr\/share\/samba\/panic-action %d\n    security = user\n    logon path =\n    logon home =\n\n    # Desactivation du partage imprimante\n    printing = bsd\n    printcap name = \/dev\/null\n#======================= Share Definitions =======================\n[homes]\n    path = \/home\/%u\n    comment = Home Directories\n    valid users = %S\n    guest ok = no\n    browseable = no\n    writable = yes\n    create mask = 0700\n    directory mask = 2700\n\n[netlogon]\n    comment = The domain logon service\n    path = \/home\/netlogon\n    public = no\n    writeable = no\n    browsable = no    \n\n<\/code><\/pre>\n<p>Tester les param\u00e8tres du fichier \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb et v\u00e9rifier la pr\u00e9sence de la ligne <strong>Server role: ROLE_DOMAIN_PDC<\/strong> :<\/p>\n<pre><code>dc1old:~# testparm -s\nLoad smb config files from \/etc\/samba\/smb.conf\nProcessing section \"[homes]\"\nLoaded services file OK.\nServer role: **ROLE_DOMAIN_PDC**\n...\n...\n<\/code><\/pre>\n<h4>Interconnection SaMBa et OpenLDAP <a name=\"chapitre2-1-4\"><\/a><\/h4>\n<p>R\u00e9cup\u00e9ration du SID du serveur SaMBa actif afin de pouvoir le renseigner dans les prochains fichiers de configuration.<\/p>\n<pre><code>dc1old:~# net getlocalsid\nSID for domain DC1 is: S-1-5-21-2419060621-4054198091-1795147476\n<\/code><\/pre>\n<p>Ajouter les param\u00e8tres LDAP suivant au fichier de configuration \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb dans la section <strong>[GLOBAL]<\/strong> :<\/p>\n<pre><code>    # LDAP\n    ldap passwd sync = Yes\n    ldap ssl = off\n    passdb backend = ldapsam:ldap:\/\/127.0.0.1\/\n    ldap admin dn = cn=admin,dc=formation,dc=fr\n    ldap suffix = dc=formation,dc=fr\n    ldap group suffix = ou=groups\n    ldap user suffix = ou=users\n    ldap machine suffix = ou=computers\n    add user script = \/usr\/sbin\/smbldap-useradd -m \"%u\"\n    ldap delete dn = Yes\n    delete user script = \/usr\/sbin\/smbldap-userdel \"%u\"\n    add machine script = \/usr\/sbin\/smbldap-useradd -w \"%u\"\n    add group script = \/usr\/sbin\/smbldap-groupadd -p \"%g\"\n    add user to group script = \/usr\/sbin\/smbldap-groupmod -m \"%u\" \"%g\"\n    delete user from group script = \/usr\/sbin\/smbldap-groupmod -x \"%u\" \"%g\"\n    set primary group script = \/usr\/sbin\/smbldap-usermod -g \"%g\" \"%u\"\n<\/code><\/pre>\n<p>Suite \u00e0 l&rsquo;installation de SaMBa il faut lui renseigner le mot de passe admin de l&rsquo;annuaire. La commande suivante permet d\u2019indiquer ce mot de passe :<\/p>\n<pre><code>dc1old:~# smbpasswd -w 'Pa$$w0rd'\nSetting stored password for \"cn=admin,dc=formation,dc=fr\" in secrets.tdb\n<\/code><\/pre>\n<blockquote><p>\n  <strong>Attention<\/strong> : si votre mot de passe poss\u00e8de des caract\u00e8res sp\u00e9ciaux, il vous faudra les \u00e9chapper avec des simples quotes.\n<\/p><\/blockquote>\n<p>D\u00e9marrage des services SaMBa et LDAP<\/p>\n<pre><code>dc1old:~# \/etc\/init.d\/slapd restart &amp;amp;&amp;amp; \/etc\/init.d\/samba start\n<\/code><\/pre>\n<p>Le paquet \u00ab <em>smbldap-tools<\/em> \u00bb pr\u00e9c\u00e9demment install\u00e9 n&rsquo;est pas directement op\u00e9rationnel, il faut le configurer comme indiqu\u00e9 dans le \u00ab README.Debian \u00bb :<\/p>\n<pre><code>dc1old:~# zless \/usr\/share\/doc\/smbldap-tools\/README.Debian.gz\n<\/code><\/pre>\n<p>Ce document demande de mettre en place deux fichiers de configuration dans \u00ab <em>\/etc\/smbldap-tools<\/em> \u00bb :<\/p>\n<pre><code>dc1old:~# zcat \/usr\/share\/doc\/smbldap-tools\/examples\/smbldap.conf.gz &amp;gt; \/etc\/smbldap-tools\/smbldap.conf\ndc1old:~# cp \/usr\/share\/doc\/smbldap-tools\/examples\/smbldap_bind.conf \/etc\/smbldap-tools\/smbldap_bind.conf\n<\/code><\/pre>\n<p>Enfin, \u00e9diter les fichiers pr\u00e9c\u00e9demment copi\u00e9s dans \u00ab \/etc\/smbldap-tools \u00bb avec les exemples suivants ;<\/p>\n<p>Dans le fichier \u00ab <em>\/etc\/smbldap-tools\/smbldap_bind.conf<\/em> \u00bb renseigner, le nom et le mot de passe de l\u2019administrateur LDAP.<\/p>\n<pre><code>dc1old:~# vi \/etc\/smbldap-tools\/smbldap_bind.conf\nslaveDN=\"cn=admin,dc=formation,dc=fr\"\nslavePw=\"Pa$$w0rd\"\nmasterDN=\"cn=admin,dc=formation,dc=fr\"\nmasterPw=\"Pa$$w0rd\"\n<\/code><\/pre>\n<p>Dans le fichier \u00ab <em>\/etc\/smbldap-tools\/smbldap.conf<\/em> \u00bb, indiquer le bon domaine sur les lignes concern\u00e9es et il faut \u00e9galement indiquer le SID trouv\u00e9 pr\u00e9c\u00e9demment :<\/p>\n<blockquote><p>\n  <strong>Attention<\/strong> : chaque VM a son propre identifiant !\n<\/p><\/blockquote>\n<pre><code>dc1old:~# mv \/etc\/smbldap-tools\/smbldap.conf \/etc\/smbldap-tools\/smbldap.conf.ori\ndc1old:~# vi \/etc\/smbldap-tools\/smbldap.conf\nSID=\"S-1-5-21-2419060621-4054198091-1795147476\"\nsambaDomain=\"formation.fr\"\n#slaveLDAP=\"ldap:\/\/ldap.example.com\/\"\n#masterLDAP=\"ldap:\/\/ldap.example.com\/\"\n#ldapTLS=\"1\"\n#verify=\"require\"\n#cafile=\"\/etc\/smbldap-tools\/ca.pem\"\n#clientcert=\"\/etc\/smbldap-tools\/smbldap-tools.example.com.pem\"\n#clientkey=\"\/etc\/smbldap-tools\/smbldap-tools.example.com.key\"\nsuffix=\"dc=formation,dc=fr\"\nusersdn=\"ou=users,${suffix}\"\ncomputersdn=\"ou=computers,${suffix}\"\ngroupsdn=\"ou=groups,${suffix}\"\nidmapdn=\"ou=idmap,${suffix}\"\nsambaUnixIdPooldn=\"sambaDomainName=${sambaDomain},${suffix}\"\nscope=\"sub\"\npassword_hash=\"SSHA\"\npassword_crypt_salt_format=\"%s\"\nuserLoginShell=\"\/bin\/bash\"\nuserHome=\"\/home\/%U\"\nuserHomeDirectoryMode=\"700\"\nuserGecos=\"System User\"\ndefaultUserGid=\"513\"\ndefaultComputerGid=\"515\"\nskeletonDir=\"\/etc\/skel\"\nshadowAccount=\"1\"\ndefaultMaxPasswordAge=\"45\"\n#userSmbHome=\"\\\\PDC-SRV\\%U\"\n#userProfile=\"\\\\PDC-SRV\\profiles\\%U\"\n#userHomeDrive=\"H:\"\nuserScript=\"logon.bat\"\nmailDomain=\"formation.fr\"\nwith_smbpasswd=\"0\"\nsmbpasswd=\"\/usr\/bin\/smbpasswd\"\nwith_slappasswd=\"0\"\nslappasswd=\"\/usr\/sbin\/slappasswd\"\n<\/code><\/pre>\n<h4>Initialisation de la base de donn\u00e9es LDAP <a name=\"chapitre2-1-5\"><\/a><\/h4>\n<p>La commande suivante va permettre de cr\u00e9er l&rsquo;architecture de l&rsquo;annuaire LDAP avec les informations de votre structure renseign\u00e9es dans le fichier \u00ab <em>\/etc\/smbldap-tools\/smbldap.conf<\/em> \u00bb<\/p>\n<pre><code>dc1old:~# smbldap-populate\nPopulating LDAP directory for domain formation.fr (S-1-5-21-3234176791-4107811042-2478210050)\n(using builtin directory structure)\n\nadding new entry: dc=formation,dc=fr\nadding new entry: ou=users,dc=formation,dc=fr\nadding new entry: ou=groups,dc=formation,dc=fr\nadding new entry: ou=computers,dc=formation,dc=fr\nadding new entry: ou=idmap,dc=formation,dc=fr\nadding new entry: sambaDomainName=cnrs,dc=formation,dc=fr\nadding new entry: uid=root,ou=users,dc=formation,dc=fr\nadding new entry: uid=nobody,ou=users,dc=formation,dc=fr\nadding new entry: cn=Domain Admins,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Domain Users,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Domain Guests,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Domain Computers,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Administrators,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Account Operators,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Print Operators,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Backup Operators,ou=groups,dc=formation,dc=fr\nadding new entry: cn=Replicators,ou=groups,dc=formation,dc=fr\n\nPlease provide a password for the domain root:\nChanging UNIX and samba passwords for root\nNew password: Pa$$w0rd\nRetype new password: Pa$$w0rd\n<\/code><\/pre>\n<p>Si tout se passe bien, vous devez normalement saisir deux fois le mot de passe root \u00e0 la fin. Pour r\u00e9sumer, cette commande cr\u00e9e :<\/p>\n<ul>\n<li>Les diff\u00e9rentes OU (Organisation Unit) qui contiendront les Computers, Users et Groups<\/li>\n<li>Deux UID : root et nobody qui seront dans OU = Users<\/li>\n<li>Plusieurs CN (Common Name): Les groupes qui seront dans OU = Groups<\/li>\n<\/ul>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Si par hasard vous avez mal configur\u00e9 l&rsquo;outil smbldap-tools et donc mal peupl\u00e9 votre base, executer les commandes suivantes afin de relancer la proc\u00e9dure pr\u00e9c\u00e9dente;<\/p>\n<pre><code># \/etc\/init.d\/slapd stop &amp;amp;&amp;amp; \/etc\/init.d\/samba stop\n# rm -rf \/var\/lib\/slapd\/*\n# rm -rf \/var\/lib\/ldap\/*\n# rm \/var\/lib\/samba\/secrets.tdb\n# \/etc\/init.d\/slapd start &amp;amp;&amp;amp; \/etc\/init.d\/samba start\n<\/code><\/pre>\n<\/blockquote>\n<h4>Ajout des utilisateurs <a name=\"chapitre2-1-6\"><\/a><\/h4>\n<p>La base de donn\u00e9es vide n&rsquo;ayant pas grand int\u00e9r\u00eat, il s&rsquo;agit maintenant d&rsquo;y importer des utilisateurs, des groupes, des services et des h\u00f4tes. Vous avez 2 possibilit\u00e9s afin d&rsquo;y parvenir :<br \/>\n* Manuellement en utilisant la commande \u00ab smbldap-useradd \u00bb<br \/>\n* En r\u00e9cup\u00e9rant les informations depuis les fichiers (<em>\/etc\/passwd<\/em>, <em>\/etc\/group<\/em>, <em>\/etc\/services<\/em>, <em>\/etc\/hosts<\/em>, etc.)<\/p>\n<h5>Remplissage de l&rsquo;annuaire : en mode manuel<\/h5>\n<p>Nous pouvons tester l&rsquo;ajout d&rsquo;un utilisateur. Cela se fait gr\u00e2ce \u00e0 la commande \u00ab smbldap-useradd \u00bb :<\/p>\n<pre><code>dc1old:~# ln -s \/usr\/sbin\/smbldap-passwd \/usr\/sbin\/smbldap-passwd.cmd\ndc1old:~# smbldap-useradd -a -P colombet\n<\/code><\/pre>\n<p>Si vous avez loup\u00e9 la concordance des password :<\/p>\n<pre><code>dc1old:~# smbldap-passwd colombet\n<\/code><\/pre>\n<ul>\n<li>-a : d\u00e9signe un utilisateur<\/li>\n<li>-c : Information Gecos : Le nom entier<\/li>\n<li>-m : Cr\u00e9\u00e9 le r\u00e9pertoire personnel<\/li>\n<li>-P : cr\u00e9ation du mot de passe<\/li>\n<\/ul>\n<p>Apr\u00e8s la cr\u00e9ation du compte et pour \u00e9viter que le mot de passe expire au bout de 3 semaines, il faut supprimer l\u2019attribut \u00ab SambaPwdMustChange \u00bb avec par exemple l&rsquo;interface web \u00ab phpldapadmin \u00bb ou ajouter la lettre \u00ab <strong>X<\/strong> \u00bb \u00e0 l\u2019attribut \u00ab sambaAcctFlags \u00bb qui contient d\u00e9j\u00e0 \u00ab <strong>U<\/strong> \u00bb.<\/p>\n<ul>\n<li>D: Desactiv\u00e9<\/li>\n<li>U: Utilisateur<\/li>\n<li>W: Ordinateur<\/li>\n<li>X: Le mot de passe n&rsquo;expire pas<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/phpldapadmin2.png\" alt=\"phpldapadmin2\" \/><\/p>\n<p>Editer la fiche de l&rsquo;utilisateur pr\u00e9c\u00e9demment cr\u00e9\u00e9 :<br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/phpldapadmin3.png\" alt=\"phpldapadmin3\" \/><\/p>\n<p>Les commandes suivantes sont essentiels pour l&rsquo;administration d&rsquo;un utilisateur en CLI:<\/p>\n<p>Afficher la fiche compl\u00e8te d&rsquo;un utilisateur en ligne de commande<\/p>\n<pre><code>dc1old:~# smbldap-usershow colombet\n\ndn: uid=colombet,ou=users,dc=formation,dc=fr\nobjectClass: top,person,organizationalPerson,posixAccount,shadowAccount,inetOrgPerson,sambaSamAccount\ncn: colombet\nsn: colombet\nuid: colombet\nuidNumber: 1000\ngidNumber: 513\nhomeDirectory: \/home\/colombet\nloginShell: \/bin\/bash\ngecos: System User\ngivenName: colombet\nsambaLogonTime: 0\nsambaLogoffTime: 2147483647\nsambaKickoffTime: 2147483647\nsambaPwdCanChange: 0\ndisplayName: colombet\nsambaSID: S-1-5-21-974850198-1505400730-1293609509-3000\nsambaPrimaryGroupSID: S-1-5-21-974850198-1505400730-1293609509-513\nsambaLogonScript: logon.bat\nsambaPwdMustChange: 1536311362\nsambaPwdLastSet: 1532423362\nsambaNTPassword: 92937945B518814341DE3F726500D4FF\nsambaLMPassword: 727E3576618FA1754A3B108F3FA6CB6D\nsambaAcctFlags: [U]\nuserPassword: {SSHA}iCSo\/PYs7avk0YhOuWuZZmiiAEdLVkRT\nshadowLastChange: 17736\nshadowMax: 45\n<\/code><\/pre>\n<p>Changer le mot de passe de l&rsquo;utilisateur<\/p>\n<pre><code>dc1old:~# smbldap-passwd colombet\n<\/code><\/pre>\n<p>Supprimer l&rsquo;utilisateur (ne pas faire dans le TP)<\/p>\n<pre><code>dc1old:~# smbldap-userdel colombet\n<\/code><\/pre>\n<h5>Remplissage de l&rsquo;annuaire : en mode migrationtool<\/h5>\n<p>Le paquet Debian \u00ab <strong>migrationtools<\/strong> \u00bb offre un ensemble de scripts permettant de r\u00e9cup\u00e9rer les informations depuis les annuaires (<em>\/etc\/passwd<\/em>, <em>\/etc\/group<\/em>, <em>\/etc\/services<\/em>, <em>\/etc\/hosts<\/em>, etc.), afin de les int\u00e9grer dans l&rsquo;annuaire LDAP.<\/p>\n<pre><code>dc1old:~# apt-get install migrationtools\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nThe following NEW packages will be installed:\n  migrationtools\n0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.\n<\/code><\/pre>\n<p>Apr\u00e8s l&rsquo;installation du paquet, il faut \u00e9diter le fichier \u00ab <em>\/etc\/migrationtools\/migrate_common.ph<\/em> \u00bb aux lignes 50,58,61,71,74,86,96 et 97.<\/p>\n<p>Vous devez activer les options IGNORE_UID_BELOW et IGNORE_GID_BELOW (les d\u00e9commenter) et mettre \u00e0 jour les champs comme dans l&rsquo;exemple suivant. Penser \u00e0 faire une copie du fichier avant de le modifier.<\/p>\n<pre><code>dc1old:~# cp \/etc\/migrationtools\/migrate_common.ph \/etc\/migrationtools\/migrate_common.ph.orig\ndc1old:~# vi \/etc\/migrationtools\/migrate_common.ph\n...\n 50 $NAMINGCONTEXT{'hosts'} = \"ou=computers\";\n 58 $NAMINGCONTEXT{'passwd'} = \"ou=users\";\n 61 $NAMINGCONTEXT{'group'} = \"ou=groups\";\n 71 $DEFAULT_MAIL_DOMAIN = \"formation.fr\";\n 74 $DEFAULT_BASE = \"dc=formation,dc=fr\";\n 86 $DEFAULT_MAIL_HOST = \"formation.fr\";\n 96 $IGNORE_UID_BELOW = 1000;\n 97 $IGNORE_GID_BELOW = 100;\n...\n<\/code><\/pre>\n<p>Dans cet exemple, nous allons utiliser seulement un morceau des outils \u00ab <strong>migrationtools<\/strong> \u00bb en r\u00e9alisant un export en  ldif du fichier \u00ab <em>\/etc\/passwd<\/em> \u00bb. Si vous souhaitez exporter plus d&rsquo;information de vos anciennes bases, je vous invite \u00e0 lire la documentation suivant au paragraphe 11.7.2 : <a href=\"https:\/\/debian-handbook.info\/browse\/fr-FR\/stable\/sect.ldap-directory.html\">https:\/\/debian-handbook.info\/browse\/fr-FR\/stable\/sect.ldap-directory.html<\/a>.<\/p>\n<p>Nous proc\u00e9dons \u00e0 l&rsquo;export du fichier \u00ab <em>\/etc\/passwd<\/em> \u00bb avec le script perl \u00ab <strong>migrate_passwd.pl<\/strong> \u00bb disponible dans le r\u00e9pertoire \u00ab <em>\/usr\/share\/migrationtools<\/em> \u00bb :<\/p>\n<pre><code>dc1old:~# cd \/usr\/share\/migrationtools\ndc1old:~# .\/migrate_passwd.pl \/etc\/passwd \/root\/password.formation.fr.ldif\n<\/code><\/pre>\n<p>Voici un exemple de contenu suite \u00e0 l&rsquo;export pr\u00e9c\u00e9dent :<\/p>\n<pre><code>root@dc1:~# more \/root\/password.formation.fr.ldif\ndn: uid=asr,ou=users,dc=formation,dc=fr\nuid: asr\ncn: asr\nobjectClass: account\nobjectClass: posixAccount\nobjectClass: top\nobjectClass: shadowAccount\nuserPassword: {crypt}$6$ZkjEtQh1$8jja57HaSa0UacivoTPQWBn8NY\/pEjuFGzA2HBFeqV96\/kEiw2Uq6GSRJqSMQIPIW\/dN\/SVT6WpLPPyX4dX\/91\nshadowLastChange: 17735\nshadowMax: 99999\nshadowWarning: 7\nloginShell: \/bin\/bash\nuidNumber: 1000\ngidNumber: 1000\nhomeDirectory: \/home\/asr\n\n\n<\/code><\/pre>\n<p>A ce stade, il nous est maintenant possible d&rsquo;injecter directement le fichier ldif pr\u00e9c\u00e9demment g\u00e9n\u00e9r\u00e9 dans l&rsquo;annuaire LDAP avec la commande <strong>ldapadd<\/strong> :<\/p>\n<pre><code>dc1old:~# ldapadd -x -D \"cn=admin,dc=formation,dc=fr\" -f password.formation.fr.ldif -W\nEnter LDAP Password:\nadding new entry \"uid=asr,ou=users,dc=formation,dc=fr\"\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Pour ajouter les attributs type num\u00e9ro de bureau, adresse mail, num\u00e9ro de t\u00e9l\u00e9phone \u00e0 l\u2019utilisateur, il faudra passer par \u00ab <a href=\"http:\/\/127.0.0.1\/phpldapadmin\">phpldapadmin<\/a> \u00bb ou avec le logiciel \u00ab <a href=\"http:\/\/jxplorer.org\/\">jxplorer<\/a> \u00bb.\n<\/p><\/blockquote>\n<h4>Authentification des utilisateurs sur linux avec libnss-ldap et libpam-ldap <a name=\"chapitre2-1-7\"><\/a><\/h4>\n<p>Par d\u00e9faut, l&rsquo;authentification Unix se fait \u00e0 l&rsquo;aide du fichier \u00ab <em>\/etc\/passwd<\/em> \u00bb. Cependant, il est tout \u00e0 fait possible d&rsquo;indiquer au syst\u00e8me de choisir une autre base d&rsquo;authentification. Nous allons donc interfacer notre serveur \u00e0 la base LDAP fraichement install\u00e9. Pour cela, nous allons install\u00e9 un module NSS qui va permettre d&rsquo;aller chercher les informations n\u00e9cessaires \u00e0 l&rsquo;authentification dans le LDAP. Pour cela, nous avons besoin d&rsquo;installer deux paquets qui s&rsquo;interface avec PAM (Pluggable Authentication Modules) :<\/p>\n<pre><code>dc1old:~# apt-get install libnss-ldap libpam-ldap\n<\/code><\/pre>\n\n\n<div id=\"libnss\" class=\"gss-container no-captions\">\n\t<div class=\"cycle-slideshow\" \n\t\tdata-cycle-slides=\"> a\"\n\t\tdata-cycle-paused=\"true\"\n\t\tdata-cycle-prev=\"#libnss_prev\"\n\t\tdata-cycle-next=\"#libnss_next\"\n\t\tdata-cycle-pager=\"#libnss_pager\"\n\t\tdata-cycle-pager-template=\"<a href=#>&nbsp;<\/a>\"\n\t\tdata-cycle-speed=\"750\"\n\t\t>\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\n\t\t\t<a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/\" data-cycle-caption=\"\"><img decoding=\"async\" src=\"\" title=\"\" alt=\"\" \/><\/a>\n\t<\/div>\n\t<div class=\"gss-info\">\n\t\t<div class=\"gss-nav\"><div id=\"libnss_prev\" class=\"gss-prev\">&lt;<\/div><div id=\"libnss_play\" class=\"gss-play\">&#9658;<\/div><div id=\"libnss_next\" class=\"gss-next\">&gt;<\/div><\/div>\n\t\t\t<div id=\"libnss_pager\" class=\"gss-pager\"><\/div>\n\t<\/div>\n<\/div>\n\n\n<p>V\u00e9rifier le fichier \u00ab <em>\/etc\/libnss-ldap.conf<\/em> \u00bb afin d&rsquo;activer la directive \u00ab <strong>bind_policy soft<\/strong> \u00bb :<\/p>\n<pre><code>dc1old:~# egrep \/etc\/libnss-ldap.conf\nbase dc=formation,dc=fr\nuri ldap:\/\/127.0.0.1\/\nldap_version 3\nrootbinddn cn=admin,dc=formation,dc=fr\nbind_policy soft\n<\/code><\/pre>\n<p>V\u00e9rifier le fichier \u00ab <em>\/etc\/pam_ldap.conf<\/em> \u00bb :<\/p>\n<pre><code>dc1old:~# egrep \/etc\/pam_ldap.conf\nbase dc=formation,dc=fr\nuri ldap:\/\/127.0.0.1\/\nldap_version 3\nrootbinddn cn=admin,dc=formation,dc=fr\npam_password crypt\n<\/code><\/pre>\n<p>Modifier le fichier \u00ab <em>\/etc\/nsswitch.conf<\/em> \u00bb comme-ci dessous (ajout de l&rsquo;option ldap):<\/p>\n<pre><code>dc1old:~# egrep \/etc\/nsswitch.conf\npasswd:         compat ldap\ngroup:          compat ldap\nshadow:         compat ldap\n...\n<\/code><\/pre>\n<p>Apr\u00e8s avoir configur\u00e9 l&rsquo;ensemble des fichiers pr\u00e9c\u00e9dents et reboot\u00e9 la VM, la liaison entre les utilisateurs LDAP et UNIX est effective. Vous pouvez v\u00e9rifier le bon fonctionnement avec la commande suivante :<\/p>\n<pre><code>dc1old:~# getent passwd\ncolombet:x:1000:513:System User:\/home\/colombet:\/bin\/bash\n\ndc1old:~# id colombet\nuid=1000(colombet) gid=513(Domain Users) groups=513(Domain Users)\n<\/code><\/pre>\n<pre><code>dc1old:~# mkdir \/home\/colombet\ndc1old:~# chown colombet: \/home\/colombet\/\n<\/code><\/pre>\n<p>La commande suivante permet de v\u00e9rifier que cet utilisateur arrive bien \u00e0 se connecter aux partages SaMBa :<\/p>\n<pre><code>~~# smbclient -L \\dc1old -U colombet~~\n\ndc1old:~# smbclient -L \"$HOSTNAME\" -U colombet\n\nEnter colombet's password:\nDomain=[FORMATION.FR] OS=[Windows X.X] Server=[Samba X.X.X-Debian]\n\n    Sharename       Type      Comment\n    ---------       ----      -------\n    IPC$            IPC       IPC Service (Samba-LDAP DC1OLD Server)\n    colombet        Disk      Home Directories\nDomain=[FORMATION.FR] OS=[Windows X.X] Server=[Samba X.X.X-Debian]\n\n    Server               Comment\n    ---------            -------\n    DC1OLD                  Samba-LDAP DC1OLD Server\n\n    Workgroup            Master\n    ---------            -------\n    FORMATION.FR         DC1OLD\n<\/code><\/pre>\n<p>En cas de probl\u00e8me, vous pouvez vider le cache nscd avec les commandes suivantes :<\/p>\n<pre><code>dc1old:~# nscd --invalidate=hosts\ndc1old:~# nscd --invalidate=passwd\ndc1old:~# nscd --invalidate=group\n<\/code><\/pre>\n<h4>Int\u00e9gration dans le domaine formation.fr d&rsquo;un poste client Windows 7 <a name=\"chapitre2-1-8\"><\/a><\/h4>\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-136-1\" width=\"800\" height=\"600\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/webm\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2022\/05\/integration_domaine_win7.webm?_=1\" \/><a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2022\/05\/integration_domaine_win7.webm\">https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2022\/05\/integration_domaine_win7.webm<\/a><\/video><\/div>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Pour le TP, le poste client Windows7 est disponible \u00e0 cette adresse : <a href=\"https:\/\/mycore.core-cloud.net\/index.php\/s\/2gLOipJIY02iJIp\">https:\/\/mycore.core-cloud.net\/index.php\/s\/2gLOipJIY02iJIp<\/a>\n<\/p><\/blockquote>\n<p>Pour int\u00e9grer votre poste Windows 7, il vous ajouter deux cl\u00e9s de registre afin d&rsquo;int\u00e9grer le poste dans votre domaine. Pour cela, cr\u00e9er un fichier nommer samba_7_2008_fix.reg et executer le depuis une session Administrateur.<\/p>\n<pre><code>Windows Registry Editor Version 5.00\n[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\LanManWorkstation\\Parameters]\n\"DomainCompatibilityMode\"=dword:00000001\n\"DNSNameResolutionRequired\"=dword:00000000\n<\/code><\/pre>\n<h3>Migration vers SaMBa4 \u00e0 partir de vos environnements &#8211; TP n\u00b02 <a name=\"chapitre2-2\"><\/a><\/h3>\n<h4>Mise en place des briques n\u00e9cessaire \u00e0 la migration vers SaMBa<strong>4<\/strong> <a name=\"chapitre2-2-1\"><\/a><\/h4>\n<p>Dans le TP n\u00b01 nous avons simul\u00e9 une ancienne architecture bas\u00e9 sur le couple OpenLDAP et SaMBa. Afin de profiter des nouveaut\u00e9s et de la technologie AD nous allons proc\u00e9der \u00e0 l&rsquo;installation d&rsquo;une nouvelle machine en Debian Stretch 9 (dc1ad) en suivant les instructions de la vid\u00e9o suivante :<\/p>\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-136-2\" width=\"800\" height=\"600\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/webm\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2022\/05\/installation_dc1ad.webm?_=2\" \/><a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2022\/05\/installation_dc1ad.webm\">https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2022\/05\/installation_dc1ad.webm<\/a><\/video><\/div>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Vous pouvez \u00e9galement directement t\u00e9l\u00e9charger une version pr\u00eatre \u00e0 l&#8217;emploi depuis : <a href=\"https:\/\/mycore.core-cloud.net\/index.php\/s\/2gLOipJIY02iJIp\">https:\/\/mycore.core-cloud.net\/index.php\/s\/2gLOipJIY02iJIp<\/a><\/p>\n<p>  <strong><em>OBLIGATOIRE<\/em><\/strong> : Apr\u00e8s l&rsquo;installation et le param\u00e9trage de cette machine Debian Stretch 9 vous proc\u00e9dez \u00e0 un snapshot de celle-ci.\n<\/p><\/blockquote>\n<h4>Parame\u0301trage du fuseau horaire et synchronisation du temps <a name=\"chapitre2-2-2\"><\/a><\/h4>\n<p>Ve\u0301rifiez si la date et l&rsquo;horaire sont bien configure\u0301s.<\/p>\n<pre><code>dc1ad:~# date\nWed Jul 25 03:11:10 CEST 2018\n<\/code><\/pre>\n<p>Vous constatez que l&rsquo;heure est incorrecte. Pour v\u00e9rifier la bonne d\u00e9finition du timezone normalement renseign\u00e9 durant l&rsquo;installation saisir la commande suivante :<\/p>\n<pre><code>dc1ad:~# dpkg-reconfigure tzdata\nCurrent default time zone: 'Europe\/Paris'\nLocal time is now:      Wed Jul 25 03:11:08 CEST 2018.\nUniversal Time is now:  Wed Jul 25 01:11:08 UTC 2018.\n<\/code><\/pre>\n<p>M\u00eame apr\u00e8s l&rsquo;execution de la commande <strong>dpkg-reconfigure tzdata<\/strong> le probl\u00e8me de synchronisation de temps est toujours pr\u00e9sent. Avant l&rsquo;arriv\u00e9e de systemd, nous utilisions le couple de commande <em>ntp<\/em> et <em>date<\/em> ; mais \u00e7a c&rsquo;\u00e9tait avant. Afin de corriger ces probl\u00e8mes, nous allons utiliser une nouvelle commande <strong>timedatectl<\/strong>. Celle-ci permet de g\u00e9rer dans sa globalit\u00e9 l\u2019horloge du syst\u00e8me.<\/p>\n<p>En une seule commande, il est possible de r\u00e9gler la date, l\u2019heure, choisir le fuseau horaire et synchroniser depuis un serveur de temps. G\u00e9nial !<\/p>\n<pre><code>dc1ad:~# timedatectl\n      Local time: Sun 2019-10-20 09:47:19 CEST\n  Universal time: Sun 2019-10-20 07:47:19 UTC\n        RTC time: Sun 2019-10-20 07:47:18\n       Time zone: Europe\/Paris (CEST, +0200)\n Network time on: yes\nNTP synchronized: no\n RTC in local TZ: no\n<\/code><\/pre>\n<p>Afin de synchroniser la VM avec un ou des serveurs de temps, il suffit de modifier le fichier de configuration \u00ab <em>\/etc\/systemd\/timesyncd.conf<\/em> \u00bb et d\u00e9finir les serveurs de temps :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/systemd\/timesyncd.conf\n[Time]\nNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org\n#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org\n<\/code><\/pre>\n<p>Activer la synchronisation :<\/p>\n<pre><code>dc1ad:~# timedatectl set-ntp true\ndc1ad:~#timedatectl\n      Local time: Sun 2019-10-20 09:48:10 CEST\n  Universal time: Sun 2019-10-20 07:48:10 UTC\n        RTC time: Sun 2019-10-20 07:48:08\n       Time zone: Europe\/Paris (CEST, +0200)\n Network time on: yes\nNTP synchronized: yes\n RTC in local TZ: no\n<\/code><\/pre>\n<p>Stopper la synchronisation :<\/p>\n<pre><code>dc1ad:~# timedatectl set-ntp false\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> :  Voici un petit m\u00e9mo sur l\u2019utilisation de la commande timedatectl :<\/p>\n<p>  <em>R\u00e9gler l\u2019heure (HH:mm:s = heures,minutes,secondes):<\/em><br \/>\n  dc1ad:~# timedatectl set-time &lsquo;HH:mm:ss&rsquo;<\/p>\n<p>  <em>R\u00e9gler la date (A:M:J = ann\u00e9e,mois,jour):<\/em><br \/>\n  dc1ad:~# timedatectl set-time &lsquo;A:M:J&rsquo;<\/p>\n<p>  <em>R\u00e9gler l\u2019heure et la date<\/em> :<br \/>\n  dc1ad:~# timedatectl set-time &lsquo;A:M:J HH:mm:ss&rsquo;<\/p>\n<p>  <em>Lister les fuseaux horaires<\/em> :<br \/>\n  dc1ad:~# timedatectl list-timezones<\/p>\n<p>  *Choisir un fuseau horaire (Timezone)** :<br \/>\n  dc1ad:~# timedatectl set-timezone Europe\/Paris\n<\/p><\/blockquote>\n<h4>Installation de SaMBa4 <a name=\"chapitre2-2-3\"><\/a><\/h4>\n<p>A partir d&rsquo;ici vous avez deux possibilite\u0301s pour d\u00e9ployer votre SaMBa4:<br \/>\n* Soit en passant par la compilation depuis les sources officiels<br \/>\n* Soit en passant par la version packag\u00e9 depuis le de\u0301po\u0302t officiel <a href=\"http:\/\/ftp.fr.debian.org\/debian\/pool\/main\/s\/samba\/\">Debian<\/a> ou celui personnalis\u00e9 de chez <a href=\"http:\/\/samba.tranquil.it\/debian\/\">Tranquil IT<\/a><\/p>\n<p>La compilation vous permettra d\u2019obtenir la version 4.8 de chez SaMBa4 tandis que la version packag\u00e9 vous permettra d\u2019obtenir la version 4.5 chez Debian et 4.7 chez TIS.<\/p>\n<p>La version compile\u0301e prend plus de temps a\u0300 installer et demande une bonne maitrise des concepts de la compilation tandis que la version packag\u00e9 vous permettra de d\u00e9ployer SaMBa4 plus rapidement et avec la philosophie d\u2019administration d\u2019un serveur Linux Debian.<\/p>\n<p>Si vous ne souhaitez pas compiler les sources de SaMBa4, vous pouvez passer directement au chapitre suivant car pour l&rsquo;ensemble du TP N\u00b02 <a href=\"#chapitre2-2-3-2\">nous utiliserons la version officielle disponible sur les d\u00e9p\u00f4ts Debian<\/a>.<\/p>\n<h5>Compilation de SaMBa4 depuis les sources officielles <a name=\"chapitre2-2-3-1\"><\/a><\/h5>\n<p>cf : <a href=\"https:\/\/wiki.samba.org\/index.php\/Build_Samba_from_Source\">https:\/\/wiki.samba.org\/index.php\/Build_Samba_from_Source<\/a><\/p>\n<p>Nous devons dans un premier temps installer les de\u0301pendances n\u00e9cessaire \u00e0 la compilation de SaMBa4 :<\/p>\n<pre><code>dc1ad:~# export DEBIAN_FRONTEND=noninteractive\ndc1ad:~# apt-get update\ndc1ad:~# apt-get install ruby-dev libreadline-dev git build-essential libattr1-dev libblkid-dev libpam0g-dev autoconf python-dev python-dnspython libacl1-dev gdb pkg-config libpopt-dev libldap2-dev libtirpc-dev libxslt1-dev python-pycryptopp libgnutls28-dev dnsutils acl attr libbsd-dev libcups2-dev libgnutls28-dev curl wget docbook-xsl libacl1-dev gdb liblmdb-dev libjansson-dev libpam0g-dev libgpgme-dev tracker libtracker-sparql-1.0-dev libavahi-client-dev libavahi-common-dev bison flex libarchive-dev\ndc1ad:~# gem install fpm\ndc1ad:~# unset DEBIAN_FRONTEND\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : La variable DEBIAN_FRONTEND permet d&rsquo;indiquer \u00e0 l&rsquo;utilisateur s&rsquo;il souhaite durant l&rsquo;installation renseigner des informations n\u00e9cessaire aux paquets.\n<\/p><\/blockquote>\n<p>Compilation de SaMBa 4.9.0 (20\/10\/2019) :<\/p>\n<pre><code>dc1ad:~# cd \/usr\/src\nroot@dc1ad:\/usr\/src# wget https:\/\/download.samba.org\/pub\/samba\/stable\/samba-4.9.0.tar.gz\n2019-10-20 09:54:43 (1.19 MB\/s) - \u2018samba-4.9.0.tar.gz\u2019 saved [18516111\/18516111]\nroot@dc1ad:\/usr\/src# tar xvfz samba-4.9.0.tar.gz\nroot@dc1ad:\/usr\/src# cd samba-4.9.0\n<\/code><\/pre>\n<p>Si vous souhaitez connaitre les options de compilation executer la commande suivante :<\/p>\n<pre><code>root@dc1ad:\/usr\/src# .\/configure --help\n\nMain commands (example: .\/waf build -j4)\n  build       : build all targets\n  clean       : cleans the project\n  configure   : configures the project\n  ctags       : build 'tags' file using ctags\n  dist        : makes a tarball for distribution\n  distcheck   : test that distribution tarball builds and installs\n  distclean   : removes build folders and data\n  etags       : build TAGS file using etags\n  install     : installs the targets on the system\n  list        : lists the targets to execute\n  pep8        : run pep8 validator\n  pydoctor    : build python apidocs\n  reconfigure : reconfigure if config scripts have changed\n  step        : executes tasks in a step-by-step fashion, for debugging\n  test        : Run the test suite (see test options below)\n  testonly    : run tests without doing a build first\n  uninstall   : removes the targets installed\n  wafdocs     : build wafsamba apidocs\n  wildcard_cmd: called on a unknown command\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Optionnel<\/em><\/strong> : Pour stocker les binaires smbd et samba dans le r\u00e9pertoire \u00ab <em>\/sbin\/<\/em> \u00bb  \u00e0 la place de \u00ab <em>\/usr\/local\/samba\/sbin\/<\/em> \u00bb ex\u00e9cuter la configuration de compilation avec l&rsquo;option suivante :\n<\/p><\/blockquote>\n<pre><code>dc1ad:~# .\/configure ... --sbindir=\/sbin\/\n'configure' finished successfully (52.233s)\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Optionnel<\/em><\/strong> : Pour stocker le fichier de configuration \u00ab <em>smb.conf<\/em> \u00bb dans \/etc\/samba\/* \u00bb \u00e0 la place de \u00ab <em>\/usr\/local\/samba\/etc\/<\/em> \u00bb, ex\u00e9cuter la configuration de compilation avec l&rsquo;option suivante :\n<\/p><\/blockquote>\n<pre><code>dc1ad:~# .\/configure ... --sysconfdir=\/etc\/samba\/\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Optionnel<\/em><\/strong> : Pour stocker le manuel SaMBa4 dans le r\u00e9pertoire \u00ab <em>\/usr\/share\/man\/<\/em> \u00bb, ex\u00e9cuter la configuration de compilation avec l&rsquo;option suivante :\n<\/p><\/blockquote>\n<pre><code>dc1ad:~# .\/configure ... --mandir=\/usr\/share\/man\/\n<\/code><\/pre>\n<p>Voici un exemple de commande avec toutes les options d\u00e9sir\u00e9es :<\/p>\n<pre><code>root@dc1ad:\/usr\/src# .\/configure --with-ads --systemd-install-services --with-shared-modules=idmap_ad --enable-debug --enable-selftest --with-systemd --enable-spotlight\n'configure' finished successfully (57.665s)\n<\/code><\/pre>\n<p>Avant de compiler d\u00e9finitivement la version finale de SaMBa4, il faut vous assurer de la bonne r\u00e9ussite de la commande pr\u00e9c\u00e9dente. Il ne doit pas y avoir une seule erreur, et les d\u00e9pendances doivent-\u00eatre satisfaites.<\/p>\n<pre><code>root@dc1ad:\/usr\/src# make   \n'build' finished successfully (9m21.105s)\n<\/code><\/pre>\n<pre><code>root@dc1ad:\/usr\/src# make install\n'install' finished successfully (3m6.120s)\n<\/code><\/pre>\n<p>Enfin, il vous faut ajouter le chemin de SaMBa4 \u00e0 votre PATH du fichier <strong>bashrc<\/strong> afin de ne pas saisir le chemin complet pour l&rsquo;execution des binaires :<\/p>\n<pre><code>dc1ad:~# echo \"export PATH=$PATH:\/usr\/local\/samba\/sbin:\/usr\/local\/samba\/bin\"\nexport PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/usr\/local\/samba\/sbin:\/usr\/local\/samba\/bin\ndc1ad:~# vi \/root\/.bashrc\n<\/code><\/pre>\n<p>Apr\u00e8s la compilation, nous devons ajouter le service SaMBa4 \u00e0 systemd. Cr\u00e9er le fichier <em>\/etc\/systemd\/system\/samba4.service<\/em> en y ins\u00e9rant les informations suivantes :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/systemd\/system\/samba4.service\n[Unit]\nDescription=Samba4 AD Daemon\nAfter=syslog.target network.target\n\n[Service]\nType=forking\nPIDFile=\/usr\/local\/samba\/var\/run\/samba.pid\nLimitNOFILE=16384\nEnvironmentFile=-\/usr\/local\/samba\/etc\nExecStart=\/usr\/local\/samba\/sbin\/samba $SAMBAOPTIONS\nExecReload=\/usr\/bin\/kill -HUP $MAINPID\n\n[Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n<p>Une fois cr\u00e9\u00e9, penser \u00e0 l&rsquo;activer et \u00e0 recharger systemd :<\/p>\n<pre><code>dc1ad:~# systemctl daemon-reload\ndc1ad:~# systemctl enable samba4.service\ndc1ad:~# systemctl start samba4.service\n<\/code><\/pre>\n<p>Vous pouvez \u00e0 pr\u00e9sent passer directement au chapitre suivant <a href=\"#chapitre2-2-4\">assurant la cr\u00e9ation du domaine Active Directory SaMBa4<\/a>.<\/p>\n<h5>Installation de SaMBa4 depuis le d\u00e9p\u00f4t officiel Debian <a name=\"chapitre2-2-3-2\"><\/a><\/h5>\n<p>Rien de plus simple sur la version officielle de Debian 9 il vous suffit de saisir les quelques commandes suivantes :<\/p>\n<pre><code>dc1ad:~# export DEBIAN_FRONTEND=noninteractive\ndc1ad:~# apt-get update &amp;amp;&amp;amp; apt-get upgrade -y\ndc1ad:~# apt-get install samba ldb-tools smbclient krb5-user winbind samba-vfs-modules\ndc1ad:~# unset DEBIAN_FRONTEND\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Si vous souhaitez utiliser le d\u00e9p\u00f4t de chez Tanquil IT afin de disposer de la derni\u00e8re version de SaMBa4 packag\u00e9, il vous faudra ajouter un d\u00e9p\u00f4t tierce et relancer les commandes pr\u00e9c\u00e9dentes :<br \/>\n  dc1ad:~# wget -O &#8211; http:\/\/samba.tranquil.it\/tissamba-pubkey.gpg  | apt- key add &#8211;<br \/>\n  dc1ad:~# echo \u00ab\u00a0deb http:\/\/samba.tranquil.it\/debian\/samba-4.8\/ stretch main\u00a0\u00bb &gt; \/etc\/apt\/sources.list.d\/sambaTIS.list\n<\/p><\/blockquote>\n<p>Vous pouvez \u00e0 pr\u00e9sent passer directement au chapitre suivant <a href=\"#chapitre2-2-4\">assurant la cr\u00e9ation du domaine Active Directory SaMBa4<\/a>.<\/p>\n<h5>Cr\u00e9ation du domaine Active Directory SaMBa4 <a name=\"chapitre2-2-4\"><\/a><\/h5>\n<h6>Configuration de Kerberos <a name=\"chapitre2-2-4-1\"><\/a><\/h6>\n<p>Sauvegarder et vider le fichier de \/etc\/krb5.conf afin d&rsquo;y mettre la configuration suivante :<\/p>\n<pre><code>dc1ad:~# cp \/etc\/krb5.conf \/etc\/krb5.conf.orig\ndc1ad:~# 0&amp;gt;\/etc\/krb5.conf\ndc1ad:~# vi \/etc\/krb5.conf\n[libdefaults]\n        default_realm = FORMATION.FR\n        dns_lookup_realm = false\n        dns_lookup_kdc = true\n\n[realms]\n        FORMATION.FR = {\n                kdc = @IP-DC1\n                kdc = @IP-DC2\n                admin_server = @IP-DC1 @IP-DC2\n        }\n\n[domain_realms]\n    .formation.fr = FORMATION.FR\n    formation.fr = FORMATION.FR\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Si vous avez compiler SaMBa4, vous devez dans un premier temps cr\u00e9er un lien symbolique depuis la configuration Kerberos situ\u00e9 dans \u00ab <em>\/usr\/local\/samba\/share\/setup\/krb5.conf<\/em> \u00bb vers racine \u00ab <em>\/etc\/<\/em> \u00bb du syste\u0300me :\n<\/p><\/blockquote>\n<pre><code>dc1ad:~# cp \/usr\/local\/samba\/share\/setup\/krb5.conf \/usr\/local\/samba\/share\/setup\/krb5.conf.orig\ndc1ad:~# ln -sf \/usr\/local\/samba\/share\/setup\/krb5.conf \/etc\/krb5.conf\ndc1ad:~# 0&amp;gt;\/etc\/krb5.conf\n<\/code><\/pre>\n<h6>Cr\u00e9ation du domaine AD <strong><em>formation.fr<\/em><\/strong> <a name=\"chapitre2-2-4-2\"><\/a><\/h6>\n<p>Avant de proc\u00e9der \u00e0 la cr\u00e9ation du domaine <strong><em>formation.fr<\/em><\/strong> v\u00e9rifier les pr\u00e9-requis suivant :<\/p>\n<ol>\n<li>Effacez le fichier <em>\/etc\/samba\/smb.conf<\/em> s&rsquo;il a de\u0301ja\u0300 e\u0301te\u0301 ge\u0301ne\u0301re\u0301 (il sera re\u0301ge\u0301ne\u0301re\u0301 par la commande de provisionning <a href=\"#chapitre3-1-1\">samba-tool<\/a>)<\/li>\n<li>Le bon param\u00e9trage du fichier <em>\/etc\/krb5.conf<\/em><\/li>\n<li><strong><em>Attention<\/em><\/strong> : La complexite\u0301 du mot de passe doit-\u00eatre respect\u00e9, le nombre de caract\u00e8res est &gt;=8 comprenant des chiffres et des caracte\u0300res spe\u0301ciaux. E\u0301viter les $, @, ! et # pour la g\u00e9n\u00e9ration du domaine sinon vous risquez de rencontrer des erreurs (nous le changerons par la suite avec la commande <a href=\"#chapitre3-1-1\">samba-tool<\/a>.<\/li>\n<\/ol>\n<pre><code><br \/>dc1ad:~# mv \/etc\/samba\/smb.conf \/etc\/samba\/smb.conf.ori\n\ndc1ad:~# samba-tool domain provision --realm=FORMATION.FR --domain FORMATION --adminpass Passw0rd --server-role=dc --use-rfc2307\n\nLooking up IPv6 addresses\nNo IPv6 address will be assigned\nSetting up share.ldb\nSetting up secrets.ldb\nSetting up the registry\nSetting up the privileges database\nSetting up idmap db\nSetting up SAM db\nSetting up sam.ldb partitions and settings\nSetting up sam.ldb rootDSE\nPre-loading the Samba 4 and AD schema\nAdding DomainDN: DC=formation,DC=fr\nAdding configuration container\nSetting up sam.ldb schema\nSetting up sam.ldb configuration data\nSetting up display specifiers\nModifying display specifiers\nAdding users container\nModifying users container\nAdding computers container\nModifying computers container\nSetting up sam.ldb data\nSetting up well known security principals\nSetting up sam.ldb users and groups\nSetting up self join\nAdding DNS accounts\nCreating CN=MicrosoftDNS,CN=System,DC=formation,DC=fr\nCreating DomainDnsZones and ForestDnsZones partitions\nPopulating DomainDnsZones and ForestDnsZones partitions\nSetting up sam.ldb rootDSE marking as synchronized\nFixing provision GUIDs\nA Kerberos configuration suitable for Samba 4 has been generated at \/var\/lib\/samba\/private\/krb5.conf\nSetting up fake yp server settings\nOnce the above files are installed, your Samba4 server will be ready to use\nServer Role:           active directory domain controller\nHostname:              dc1ad\nNetBIOS Domain:        FORMATION\nDNS Domain:            formation.fr\nDOMAIN SID:            S-1-5-21-1714617562-204349356-3624841221\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> :<br \/>\n  &#8211;host-ip : on d\u00e9finit la carte r\u00e9seau a utiliser<br \/>\n  &#8211;use-rfc2307 : option permettant d&rsquo;utiliser le stockage des droits posix dans l&rsquo;AD\n<\/p><\/blockquote>\n<p>Dans le r\u00e9sultat de la commande pr\u00e9c\u00e9dente, nous remarquons qu&rsquo;un nouveau fichier <em>krb5.conf<\/em> a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9. Nous le rempla\u00e7ons par celui pr\u00e9c\u00e9demment cr\u00e9\u00e9 :<\/p>\n<pre><code>dc1ad:~# mv \/etc\/krb5.conf \/var\/lib\/samba\/private\/\ndc1ad:~# ln -s \/var\/lib\/samba\/private\/krb5.conf \/etc\/\n<\/code><\/pre>\n<p>Pour la suite du TP et pour des questions de facilit\u00e9, nous allons dans un premier temps utiliser le DNS interne de SaMBa4. En production et assurer de la performance, nous passerons sur Bind9 via le chapitre : <a href=\"#chapitre3-1-4\">DNS migrer de SaMBaDNS vers Bind9<\/a><\/p>\n<p>D\u00e9finir dans le fichier \u00ab <em>\/etc\/resolv.conf<\/em> \u00bb le serveur lui-m\u00eame en tant que DNS.<\/p>\n<pre><code>dc1ad:~# vi \/etc\/resolv.conf\ndomain formation.fr\nsearch formation.fr\nnameserver 127.0.0.1\n<\/code><\/pre>\n<blockquote><p>\n  MEMO, ne pas prendre en compte :Protection du fichier \u00ab <em>\/etc\/resolv.conf<\/em> \u00bb contre l&rsquo;\u00e9crasement en raison de la pr\u00e9sence du seconde carte r\u00e9seau activ\u00e9e en DHCP chattr +i \/etc\/resolv.conf chattr -i \/etc\/resolv.conf\n<\/p><\/blockquote>\n<p>Ve\u0301rifiez les forwarders DNS configure\u0301s dans le fichier \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb par un serveur DNS externe :<\/p>\n<pre><code># Global parameters\n[global]\n    netbios name = DC1AD\n    realm = FORMATION.FR\n    workgroup = FORMATION\n    server role = active directory domain controller\n   template shell = \/bin\/bash\n   template homedir = \/home\/%ACCOUNTNAME%\n   # Desactivation du partage imprimante\n   printing = bsd\n   printcap name = \/dev\/null\n   # Desactivation du service DNS avec le moins \"-\"\n   # server services = -dns\n   # server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns, s3fs\n    dns forwarder = 8.8.8.8\n    # Enable NIS extensions (rfc2307)\n    idmap_ldb:use rfc2307 = yes\n    # Resolution netbios\n    #wins support = yes\n    #name resolve order = wins bcast host\n    #dns proxy = yes\n   #allow dns updates = false\n   #allow dns updates = nonsecure and secure\n    # desactiver ipv6\n    #interfaces = 127.0.0.1 @ipdc\n    #bind interfaces only = yes\n\n    # suite la migration en samba 4.2\n    # alire : https:\/\/access.redhat.com\/fr\/node\/2260371\n    #ntlm auth = yes\n    #raw NTLMv2 auth = yes\n    #ldap server require strong auth = no\n    #tls verify peer = no_check\n    #client ipc signing = auto\n\n    # BUGS dans les logs :\n    # \/var\/lib\/samba\/usershares\/admin$ failed. No such file or directory\n    # https:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=772154\n    #usershare path =\n\n[netlogon]\n    path = \/var\/lib\/samba\/sysvol\/formation.fr\/scripts\n    read only = No\n\n[sysvol]\n    path = \/var\/lib\/samba\/sysvol\n    read only = No\n<\/code><\/pre>\n<p>Par de\u0301faut, sous Debian le paquet samba utilise le service samba-ad-dc et non plus le service samba.<\/p>\n<pre><code>dc1ad:~# systemctl unmask samba-ad-dc\n<\/code><\/pre>\n<pre><code>dc1ad:~# systemctl enable samba-ad-dc\nSynchronizing state of samba-ad-dc.service with SysV service script with \/lib\/systemd\/systemd-sysv-install.\nExecuting: \/lib\/systemd\/systemd-sysv-install enable samba-ad-dc\n<\/code><\/pre>\n<pre><code>dc1ad:~# systemctl disable samba winbind nmbd smbd\nSynchronizing state of samba.service with SysV service script with \/lib\/systemd\/systemd-sysv-install.\nExecuting: \/lib\/systemd\/systemd-sysv-install disable samba\nupdate-rc.d: error: samba Default-Start contains no runlevels, aborting.\n<\/code><\/pre>\n<pre><code>dc1ad:~# systemctl mask samba winbind nmbd smbd\nCreated symlink \/etc\/systemd\/system\/samba.service \u2192 \/dev\/null.\nCreated symlink \/etc\/systemd\/system\/winbind.service \u2192 \/dev\/null.\nCreated symlink \/etc\/systemd\/system\/nmbd.service \u2192 \/dev\/null.\nCreated symlink \/etc\/systemd\/system\/smbd.service \u2192 \/dev\/null.\n<\/code><\/pre>\n<p>Afin de prendre en compte tous les param\u00e9trages, je recommande de rebooter la VM<\/p>\n<pre><code>dc1ad:~# reboot\n<\/code><\/pre>\n<p>Suit au reboot de la machine, vous pouvez \u00e0 pr\u00e9sent passer \u00e0 la partie v\u00e9rification :<\/p>\n<p><strong>Ve\u0301rifications<\/strong><\/p>\n<p>Apr\u00e8s votre reboot il vous faut v\u00e9rifier que l&rsquo;ensemble des briques n\u00e9cessaire au bon fonctionnement de SaMBa4 sont op\u00e9rationnelles :<\/p>\n<pre><code>dc1ad:~# ps -ef --forest\nroot       366     1  0 08:54 ?        00:00:00 \/usr\/sbin\/samba\nroot       388   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       393   388  0 08:54 ?        00:00:00  |   \\_ \/usr\/sbin\/smbd -D --option=server role check:inhibit=yes --foreground\nroot       408   393  0 08:54 ?        00:00:00  |       \\_ \/usr\/sbin\/smbd -D --option=server role check:inhibit=yes --foreground\nroot       409   393  0 08:54 ?        00:00:00  |       \\_ \/usr\/sbin\/smbd -D --option=server role check:inhibit=yes --foreground\nroot       411   393  0 08:54 ?        00:00:00  |       \\_ \/usr\/sbin\/smbd -D --option=server role check:inhibit=yes --foreground\nroot       389   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       390   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       391   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       392   366  0 08:54 ?        00:00:05  \\_ \/usr\/sbin\/samba\nroot       394   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       395   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       396   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       397   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       401   397  0 08:54 ?        00:00:00  |   \\_ \/usr\/sbin\/winbindd -D --option=server role check:inhibit=yes --foreground\nroot       413   401  0 08:54 ?        00:00:00  |       \\_ \/usr\/sbin\/winbindd -D --option=server role check:inhibit=yes --foreground\nroot       398   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       399   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       400   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\nroot       402   366  0 08:54 ?        00:00:00  \\_ \/usr\/sbin\/samba\n<\/code><\/pre>\n<p>V\u00e9rifier la partie authentification avec Kerberos :<\/p>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Le compte Administrateur par de\u0301faut est <strong><em>Administrator<\/em><\/strong>, en raison d&rsquo;un caract\u00e8re parasite nous avons remplac\u00e9 le <strong>@<\/strong> par un <strong>A<\/strong> majuscule pour la cr\u00e9ation du domaine pr\u00e9cedement.\n<\/p><\/blockquote>\n<p>Executer la commande kinit en mode verbose afin de diagnostiquer les \u00e9ventuelles erreurs de kerberos (ici probl\u00e8me de mot de passe)<\/p>\n<pre><code>dc1ad:~# kinit -V Administrator\nPassword for &#x41;&#x64;&#x6d;&#x69;&#110;&#105;str&#x61;&#x74;&#x6f;&#x72;&#64;&#70;ORM&#x41;&#x54;&#x49;&#x4f;&#78;&#46;&#70;R: P@ssw0rd\nUsing default cache: \/tmp\/krb5cc_1000\nUsing principal: &#x41;&#x64;&#109;&#105;&#110;i&#x73;&#x74;&#x72;&#97;&#116;or&#x40;&#x46;&#x4f;&#82;&#77;A&#x54;&#x49;&#x4f;&#78;&#46;&#70;R\nPassword for &#65;&#x64;m&#105;&#x6e;i&#115;&#x74;r&#97;&#x74;o&#114;&#x40;&#70;&#x4f;&#x52;&#77;&#x41;&#x54;&#73;&#x4f;N&#46;&#x46;R:\nkinit: Password incorrect while getting initial credentials\n<\/code><\/pre>\n<p>Ici la commande kinit nous retourne un probl\u00e8me d&rsquo;expiration de mot de passe. Nous plus loin dans le TP le m\u00e9thode pour<\/p>\n<pre><code>dc1ad:~# kinit -V Administrator\nPassword for &#x41;&#x64;&#x6d;&#x69;&#x6e;&#x69;&#x73;&#x74;&#x72;&#x61;&#x74;&#x6f;&#x72;&#x40;&#70;&#79;&#82;&#77;&#65;&#84;&#73;&#79;&#78;&#46;&#70;R: Passw0rd\nUsing default cache: \/tmp\/krb5cc_0\nWarning: Your password will expire in 41 days on Mon 25 Nov 2019 08:28:00 AM CET\nAuthenticated to Kerberos v5\n<\/code><\/pre>\n<p>Les jetons kerberos sont stock\u00e9s dans le r\u00e9pertoire \u00ab <em>\/tmp<\/em> \u00bb. Il faut pense \u00e0 verifier que celui-ci dispose de suffisamment d&rsquo;espace afin de pouvoir fonctionner.<\/p>\n<pre><code>dc1ad:~# ll \/tmp\/\n-rw------- 1 users0     domain users 1.5K Sep  9 10:29 krb5cc_884002014_xEXDGy\n-rw------- 1 users1     domain users 1.5K Sep  8 17:12 krb5cc_884002004_HDTeR0\n-rw------- 1 users2     domain users 1.5K Sep  8 22:03 krb5cc_884002005_7EI9cQ\n-rw------- 1 users3     domain users 1.5K Sep  7 17:47 krb5cc_884002007_BTl4OU\n-rw------- 1 users4     domain users 1.5K Sep  9 08:21 krb5cc_884002008_Zppk75\n-rw------- 1 users5     domain users 1.5K Sep  9 10:07 krb5cc_884002009_JBGnaV\n-rw------- 1 users6     domain users 1.5K Sep  8 15:55 krb5cc_884002010_KbZGSF\n-rw------- 1 users7     domain users 1.5K Sep  8 18:24 krb5cc_884002011_vEW2qS\n-rw------- 1 users8     domain users 1.6K Sep  9 10:34 krb5cc_884002012_EXZt5T\n-rw------- 1 users9     domain users 1.5K Sep  8 13:15 krb5cc_884002013_Gc8Gl7\n<\/code><\/pre>\n<p>Il est possible de v\u00e9rifier la lites des tickets Kerberos<\/p>\n<pre><code>dc1ad:~# klist\nTicket cache: FILE:\/tmp\/krb5cc_0\nDefault principal: Adm&#105;&#110;&#105;&#x73;&#x74;&#x72;&#x61;&#x74;&#x6f;r&#64;F&#79;&#82;&#77;&#65;&#x54;&#x49;&#x4f;&#x4e;&#x2e;&#x46;R\n\nValid starting       Expires              Service principal\n09\/10\/2018 10:34:55  09\/10\/2018 20:34:55  krbt&#103;&#116;&#47;&#70;&#79;&#82;&#77;&#x41;&#x54;&#x49;&#x4f;&#x4e;&#x2e;&#x46;&#x52;&#x40;FORM&#65;&#84;&#73;&#79;&#78;&#46;&#70;&#x52;\n    renew until 09\/11\/2018 10:34:51\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Si vous souhaitez changer le mot de passe avant la lecture du chapitre <a href=\"#chapitre3-1-1\">La commande miracle : samba-tool<\/a>  samba-tool user setpassword Administrator\n<\/p><\/blockquote>\n<p>V\u00e9rifier la partie DNS :<\/p>\n<pre><code>dc1ad:~# dig @localhost cnrs.fr\ndc1ad:~# dig @localhost dc1ad.formation.fr\ndc1ad:~# dig -t SRV @localhost _ldap._tcp.formation.fr\n<\/code><\/pre>\n<p>V\u00e9rifier que les champs DNS n\u00e9cessaire \u00e0 votre domaine sont bien cr\u00e9\u00e9s :<\/p>\n<pre><code>dc1ad:~# samba_dnsupdate --verbose\n...\nNo DNS updates needed\n<\/code><\/pre>\n<p>S&rsquo;il subsiste des erreurs, utiliser la commande suivante pour outre passer Kerberos :<\/p>\n<pre><code>dc1ad:~# samba_dnsupdate  --use-samba-tool\n<\/code><\/pre>\n<h5>Transf\u00e9rer les donn\u00e9es du TP N\u00b01 SaMBa3 vers le SaMBa4 <a name=\"chapitre2-2-4-2\"><\/a><\/h5>\n<p>V\u00e9rifier la pr\u00e9sence de l&rsquo;outils rsync sinon l&rsquo;installer :<\/p>\n<pre><code>dc1ad:~# apt-get install rsync\n<\/code><\/pre>\n<p>Activer le droit d&rsquo;utiliser la compte root via ssh :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/ssh\/sshd_config\n...\nPermitRootLogin yes\n...\ndc1ad:~# \/etc\/init.d\/ssh restart\n<\/code><\/pre>\n<p>Cr\u00e9er le fichier \u00ab <em>\/root\/SaMBaOLD<\/em> \u00bb sur le serveur cible dc1ad<\/p>\n<pre><code>dc1ad:~# mkdir \/root\/SaMBaOLD\n<\/code><\/pre>\n<p><strong>Transf\u00e9rer les donn\u00e9es du DC1OLD vers DC1AD<\/strong><\/p>\n<p>Depuis le serveur DC1OLD<\/p>\n<pre><code>dc1old:~# \/etc\/init.d\/samba stop\ndc1old:~# rsync -aP \/var\/lib\/samba\/ root@dc1ad:\/root\/SaMBaOLD\/\ndc1old:~# rsync -aP \/etc\/samba\/smb.conf root@dc1ad:\/root\/SaMBaOLD\/\n<\/code><\/pre>\n<p>Depuis le serveur DC1AD<\/p>\n<p>Editer afin de corriger le fichier \u00ab <em>\/root\/SaMBaOLD\/smb.conf<\/em> \u00bb :<\/p>\n<ol>\n<li>Remplacer le nom du serveur<\/li>\n<li>Modifier le nom du workgroup car vous risquez de recevoir le message <em>Realm &lsquo;FORMATION.FR&rsquo; must not be equal to short domain name &lsquo;FORMATION.FR&rsquo;!<\/em><\/li>\n<li>Supprimer toute la partie configuration LDAP<\/li>\n<\/ol>\n<pre><code>    workgroup = FORMATION\n    netbios name = dc1ad\n    server string = Samba-AD DC1 Server\n<\/code><\/pre>\n<p>Si l&rsquo;ensemble des param\u00e8tres pr\u00e9c\u00e9dents sont OK, vous pouvez migrer de SaMBa3LDAP \u00e0 SaMBa4AD<\/p>\n<p>Import des anciens computers\/users avec cr\u00e9ation du domaine AD<\/p>\n<pre><code>dc1ad:~# rm \/etc\/samba\/smb.conf\ndc1ad:~# mv \/root\/SaMBaOLD\/private\/* \/root\/SaMBaOLD\/\n<\/code><\/pre>\n<pre><code>    workgroup = formation.fr\n    netbios name = dc1ad\n    server string = Samba-AD DC1 Server\n    passdb backend = ldapsam:ldap:\/\/10.0.2.6\/\n<\/code><\/pre>\n<pre><code>dc1ad:~# samba-tool domain classicupgrade --dbdir=\/root\/SaMBaOLD\/ --realm=LABTEST.FR \/root\/SaMBaOLD\/smb.conf\nReading smb.conf\nProvisioning\nExporting account policy\nExporting groups\nExporting users\n  Skipping wellknown rid=501 (for username=nobody)\nNext rid = 3001\nExporting posix attributes\nReading WINS database\nLooking up IPv4 addresses\nLooking up IPv6 addresses\nNo IPv6 address will be assigned\nSetting up share.ldb\nSetting up secrets.ldb\nSetting up the registry\nSetting up the privileges database\nSetting up idmap db\nSetting up SAM db\nSetting up sam.ldb partitions and settings\nSetting up sam.ldb rootDSE\nPre-loading the Samba 4 and AD schema\nAdding DomainDN: DC=labtest,DC=fr\nAdding configuration container\nSetting up sam.ldb schema\nSetting up sam.ldb configuration data\nSetting up display specifiers\nModifying display specifiers\nAdding users container\nModifying users container\nAdding computers container\nModifying computers container\nSetting up sam.ldb data\nSetting up well known security principals\nSetting up sam.ldb users and groups\nSetting up self join\nSetting acl on sysvol skipped\nAdding DNS accounts\nCreating CN=MicrosoftDNS,CN=System,DC=labtest,DC=fr\nCreating DomainDnsZones and ForestDnsZones partitions\nPopulating DomainDnsZones and ForestDnsZones partitions\nSetting up sam.ldb rootDSE marking as synchronized\nFixing provision GUIDs\nA Kerberos configuration suitable for Samba 4 has been generated at \/var\/lib\/samba\/private\/krb5.conf\nSetting up fake yp server settings\nOnce the above files are installed, your Samba4 server will be ready to use\nAdmin password:        !ENW(hROE6+N,(X![e$.sfNfI\nServer Role:           active directory domain controller\nHostname:              dc1ad\nNetBIOS Domain:        FORMATION.FR\nDNS Domain:            labtest.fr\nDOMAIN SID:            S-1-5-21-927081477-359489940-3057051776\nImporting WINS database\nImporting Account policy\nImporting idmap database\nCannot open idmap database, Ignoring: [Errno 2] No such file or directory\nAdding groups\nImporting groups\nGroup already exists sid=S-1-5-21-927081477-359489940-3057051776-512, groupname=Domain Admins existing_groupname=Domain Admins, Ignoring.\nGroup already exists sid=S-1-5-21-927081477-359489940-3057051776-513, groupname=Domain Users existing_groupname=Domain Users, Ignoring.\nGroup already exists sid=S-1-5-21-927081477-359489940-3057051776-514, groupname=Domain Guests existing_groupname=Domain Guests, Ignoring.\nGroup already exists sid=S-1-5-21-927081477-359489940-3057051776-515, groupname=Domain Computers existing_groupname=Domain Computers, Ignoring.\nGroup already exists sid=S-1-5-32-544, groupname=Administrators existing_groupname=Administrators, Ignoring.\nGroup already exists sid=S-1-5-32-548, groupname=Account Operators existing_groupname=Account Operators, Ignoring.\nGroup already exists sid=S-1-5-32-550, groupname=Print Operators existing_groupname=Print Operators, Ignoring.\nGroup already exists sid=S-1-5-32-551, groupname=Backup Operators existing_groupname=Backup Operators, Ignoring.\nGroup already exists sid=S-1-5-32-552, groupname=Replicators existing_groupname=Replicator, Ignoring.\nCommitting 'add groups' transaction to disk\nAdding users\nImporting users\nCommitting 'add users' transaction to disk\nAdding users to groups\nCommitting 'add users to groups' transaction to disk\n<\/code><\/pre>\n<ul>\n<li>[ ] Apr\u00e8s la migration de SaMBa3LDAP \u00e0 SaMBa4AD, dans le fichier \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb, rajouter le forwarder DNS et l&rsquo;ID mappings :<\/li>\n<\/ul>\n<pre><code>dns forwarder = 8.8.8.8\nidmap_ldb:use rfc2307 = yes\n<\/code><\/pre>\n<p>V\u00e9rifier la pr\u00e9sence des extensions NIS dans l&rsquo;AD<\/p>\n<pre><code>root@dc1ad:\/etc\/samba# ldbsearch -H \/var\/lib\/samba\/private\/sam.ldb -s base -b CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,DC=formation,DC=fr cn\n\n# record 1\ndn: CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,DC=formation,DC=fr\ncn: ypservers\n\n# returned 1 records\n# 1 entries\n# 0 referrals\n<\/code><\/pre>\n<p>Reappliquer un mot de passe au compte <strong>Administrator<\/strong><\/p>\n<pre><code>dc1ad:~# samba-tool user setpassword Administrator\n<\/code><\/pre>\n<p>Suite \u00e0 cette migration, vous pouvez enchainer sur les chapitres :<\/p>\n<ul>\n<li>Configurer le service NTP :<a href=\"#chapitre2-2-2\">Parame\u0301trage du fuseau horaire et synchronisation du temps<\/a> <\/li>\n<li>Reconfigurer les fichiers (nsswitch.conf, sssd, &#8230;) assurant l&rsquo;authentification sur Linux.<\/li>\n<li>Configurer le service DNS en int\u00e9grant les entr\u00e9es forward et reverse de tous les serveurs.<\/li>\n<\/ul>\n<h2>Ma\u00eetriser les particularit\u00e9s d\u2019impl\u00e9mentation d\u2019un service SaMBa4 <a name=\"chapitre3\"><\/a><\/h2>\n<h3>Les astuces d\u2019Active Directory <a name=\"chapitre3-1\"><\/a><\/h3>\n<h4>La commande miracle : <strong><em>samba-tool<\/em><\/strong> <a name=\"chapitre3-1-1\"><\/a><\/h4>\n<pre><code>dc1ad:~# samba-tool\nUsage: samba-tool \n  dbcheck     - Check local AD database for errors.\n  delegation  - Delegation management.\n  dns         - Domain Name Service (DNS) management.\n  domain      - Domain management.\n  drs         - Directory Replication Services (DRS) management.\n  dsacl       - DS ACLs manipulation.\n  fsmo        - Flexible Single Master Operations (FSMO) roles management.\n  gpo         - Group Policy Object (GPO) management.\n  group       - Group management.\n  ldapcmp     - Compare two ldap databases.\n  ntacl       - NT ACLs manipulation.\n  processes   - List processes (to aid debugging on systems without setproctitle).\n  rodc        - Read-Only Domain Controller (RODC) management.\n  sites       - Sites management.\n  spn         - Service Principal Name (SPN) management.\n  testparm    - Syntax check the configuration file.\n  time        - Retrieve the time on a server.\n  user        - User management.\n  visualize   - Produces graphical representations of Samba network state\n<\/code><\/pre>\n<p>V\u00e9rifier l&rsquo;int\u00e9grit\u00e9 de la base AD<\/p>\n<pre><code>dc1ad:~# samba-tool dbcheck\nChecking 216 objects\nChecked 216 bjects (0 errors)\n<\/code><\/pre>\n<p>V\u00e9rifier et r\u00e9parer de la base AD<\/p>\n<pre><code>dc1ad:~# samba-tool dbcheck --fix\nChecking 216 objects\nChecked 216 objects (0 errors)\n<\/code><\/pre>\n<p>Ajouter un enregistrement DNS de type A<\/p>\n<pre><code>dc1ad:~# samba-tool dns add -U Administrator --password='Pa$$w0rd' 10.0.2.4 formation.fr www A 10.0.2.100\n<\/code><\/pre>\n<p>Ajouter un enregistrement DNS de type PTR<\/p>\n<pre><code>dc1ad:~# samba-tool dns add -U Administrator --password='Pa$$w0rd' 10.0.2.100 2.0.10.in-addr.arpa 100 PTR www.formation.fr\n<\/code><\/pre>\n<p>Ajouter l\u2019utilisateur <strong>admin<\/strong> avec le mot de passe <strong>admin2018<\/strong><\/p>\n<pre><code>dc1ad:~# samba-tool user add admin admin2018 --given-name=Admin --surname=ISTRATOR --department=info --company=\"FORMATION\" &#45;-&#x6d;a&#x69;l&#x2d;&#97;&#x64;&#100;&#x72;&#101;s&#x73;=&#x61;d&#x6d;&#105;&#x6e;&#64;&#x66;&#111;&#x72;&#109;a&#x74;i&#x6f;n&#x2e;&#102;&#x72; \n<\/code><\/pre>\n<p>Ajouter l\u2019utilisateur <strong>admin<\/strong> avec un mot de passe al\u00e9atoire<\/p>\n<pre><code>dc1ad:~# samba-tool user add admin --random-password --given-name=Admin --surname=ISTRATOR --department=info --company=\"FORMATION\" &#x2d;&#x2d;&#109;&#97;i&#x6c;&#x2d;&#x61;&#100;&#100;r&#x65;&#x73;&#x73;&#61;&#97;d&#x6d;&#x69;&#x6e;&#64;&#102;o&#x72;&#x6d;&#x61;&#116;io&#x6e;&#x2e;&#x66;&#114; \n<\/code><\/pre>\n<p>Ajouter l\u2019utilisateur <strong>admin<\/strong> dans le groupe <strong>info<\/strong><\/p>\n<pre><code>dc1ad:~# samba-tool group addmembers info admin\n<\/code><\/pre>\n<p>Supprimer l&rsquo;utilisateur<\/p>\n<pre><code># samba-tool user delete admin\n<\/code><\/pre>\n<p>D\u00e9finir un nouveau mot de passe \u00e0 l&rsquo;utilisateur <strong>admin<\/strong><\/p>\n<pre><code>dc1ad:~# samba-tool user setpassword --newpassword=titi admin\n\nou \n\ndc1ad:~# samba-tool user setpassword admin\n<\/code><\/pre>\n<p>Supprimer l\u2019utilisateur <strong>admin<\/strong> du groupe <strong>info<\/strong><\/p>\n<pre><code>dc1ad:~# samba-tool group removemembers info admin\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> :<br \/>\n  Changer le mot de passe en ligne de commande<br \/>\n  printf \u00ab\u00a0%s\\n%s\\n\u00a0\u00bb \u2018*colombet!&rsquo; \u2018colombet&rsquo;|smbpasswd -s colombet<\/p>\n<p>  D\u00e9sactiver l&rsquo;expiration du mot de passe<br \/>\n  net sam set pwnoexp \u00ab\u00a0colombet\u00a0\u00bb no<\/p>\n<p>  D\u00e9sactiver le changement de mot de passe \u00e0 l&rsquo;ouverture de session<br \/>\n  net sam set pwdmustchangenow \u00ab\u00a0colombet\u00a0\u00bb no<\/p>\n<p>  D\u00e9verrouiller le compte<br \/>\n  net sam set disabled colombet no\n<\/p><\/blockquote>\n<h4>Int\u00e9grer un second contr\u00f4leur au domaine formation.fr <a name=\"chapitre3-1-3\"><\/a><\/h4>\n<p>Apr\u00e8s avoir clon\u00e9 le premier contr\u00f4leur de domaine DC1AD depuis la console VirtualBox en nouveau contr\u00f4leur vierge DC2AD (reset MAC@) vous pouvez.<\/p>\n<pre><code>dc2ad:~# samba-tool domain join FORMATION.FR DC -UAdministrator\nFinding a writeable DC for domain 'FORMATION.FR'\nFound DC dc1ad.formation.fr\nPassword for [WORKGROUP\\Administrator]:\nworkgroup is WORKGROUP\nrealm is formation.fr\nAdding CN=DC2AD,OU=Domain Controllers,DC=formation,DC=fr\nAdding CN=DC2AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nAdding CN=NTDS Settings,CN=DC2AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nAdding SPNs to CN=DC2AD,OU=Domain Controllers,DC=formation,DC=fr\nSetting account password for DC2AD$\nEnabling account\nCalling bare provision\nLooking up IPv4 addresses\nLooking up IPv6 addresses\nNo IPv6 address will be assigned\nSetting up share.ldb\nSetting up secrets.ldb\nSetting up the registry\nSetting up the privileges database\nSetting up idmap db\nSetting up SAM db\nSetting up sam.ldb partitions and settings\nSetting up sam.ldb rootDSE\nPre-loading the Samba 4 and AD schema\nA Kerberos configuration suitable for Samba 4 has been generated at \/var\/lib\/samba\/private\/krb5.conf\nProvision OK for domain DN DC=formation,DC=fr\nStarting replication\nSchema-DN[CN=Schema,CN=Configuration,DC=formation,DC=fr] objects[402\/1550] linked_values[0\/0]\nSchema-DN[CN=Schema,CN=Configuration,DC=formation,DC=fr] objects[804\/1550] linked_values[0\/0]\nSchema-DN[CN=Schema,CN=Configuration,DC=formation,DC=fr] objects[1206\/1550] linked_values[0\/0]\nSchema-DN[CN=Schema,CN=Configuration,DC=formation,DC=fr] objects[1550\/1550] linked_values[0\/0]\nAnalyze and apply schema objects\nPartition[CN=Configuration,DC=formation,DC=fr] objects[402\/1614] linked_values[0\/0]\nPartition[CN=Configuration,DC=formation,DC=fr] objects[804\/1614] linked_values[0\/0]\nPartition[CN=Configuration,DC=formation,DC=fr] objects[1206\/1614] linked_values[0\/0]\nPartition[CN=Configuration,DC=formation,DC=fr] objects[1608\/1614] linked_values[0\/0]\nPartition[CN=Configuration,DC=formation,DC=fr] objects[1614\/1614] linked_values[30\/0]\nReplicating critical objects from the base DN of the domain\nPartition[DC=formation,DC=fr] objects[97\/97] linked_values[23\/0]\nPartition[DC=formation,DC=fr] objects[360\/263] linked_values[23\/0]\nDone with always replicated NC (base, config, schema)\nReplicating DC=DomainDnsZones,DC=formation,DC=fr\nPartition[DC=DomainDnsZones,DC=formation,DC=fr] objects[40\/40] linked_values[0\/0]\nReplicating DC=ForestDnsZones,DC=formation,DC=fr\nPartition[DC=ForestDnsZones,DC=formation,DC=fr] objects[18\/18] linked_values[0\/0]\nCommitting SAM database\nSending DsReplicaUpdateRefs for all the replicated partitions\nSetting isSynchronized and dsServiceName\nSetting up secrets database\nJoined domain WORKGROUP (SID S-1-5-21-648631170-3456211842-3251463303) as a DC\n<\/code><\/pre>\n<p><strong>Il faut imp\u00e9rativement red\u00e9marrer la machine DC2AD.<\/strong><\/p>\n<pre><code>dc2ad:~# samba-tool drs showrepl\n\nDefault-First-Site-Name\\DC2AD\nDSA Options: 0x00000001\nDSA object GUID: caec22d8-ba0d-42df-9aa2-1edf8fc7ee32\nDSA invocationId: abe1c11c-bf4a-483d-bc8d-7e8361c8ddad\n\n==== INBOUND NEIGHBORS ====\n\nDC=formation,DC=fr\n    Default-First-Site-Name\\DC1AD via RPC\n        DSA object GUID: 63ef3f0f-3591-480d-adf5-489dfbe234be\n        Last attempt @ Mon Sep 17 14:20:23 2018 CEST was successful\n        0 consecutive failure(s).\n        Last success @ Mon Sep 17 14:20:23 2018 CEST\n\nCN=Configuration,DC=formation,DC=fr\n    Default-First-Site-Name\\DC1AD via RPC\n        DSA object GUID: 63ef3f0f-3591-480d-adf5-489dfbe234be\n        Last attempt @ Mon Sep 17 14:20:23 2018 CEST was successful\n        0 consecutive failure(s).\n        Last success @ Mon Sep 17 14:20:23 2018 CEST\n\nDC=DomainDnsZones,DC=formation,DC=fr\n    Default-First-Site-Name\\DC1AD via RPC\n        DSA object GUID: 63ef3f0f-3591-480d-adf5-489dfbe234be\n        Last attempt @ Mon Sep 17 14:20:23 2018 CEST was successful\n        0 consecutive failure(s).\n        Last success @ Mon Sep 17 14:20:23 2018 CEST\n\nDC=ForestDnsZones,DC=formation,DC=fr\n    Default-First-Site-Name\\DC1AD via RPC\n        DSA object GUID: 63ef3f0f-3591-480d-adf5-489dfbe234be\n        Last attempt @ Mon Sep 17 14:20:23 2018 CEST was successful\n        0 consecutive failure(s).\n        Last success @ Mon Sep 17 14:20:23 2018 CEST\n\nCN=Schema,CN=Configuration,DC=formation,DC=fr\n    Default-First-Site-Name\\DC1AD via RPC\n        DSA object GUID: 63ef3f0f-3591-480d-adf5-489dfbe234be\n        Last attempt @ Mon Sep 17 14:20:23 2018 CEST was successful\n        0 consecutive failure(s).\n        Last success @ Mon Sep 17 14:20:23 2018 CEST\n\n==== OUTBOUND NEIGHBORS ====\n\n==== KCC CONNECTION OBJECTS ====\n\nConnection --\n    Connection name: 4cb78de6-49cf-4943-8518-cb178e54d798\n    Enabled        : TRUE\n    Server DNS name : dc1ad.formation.fr\n    Server DN name  : CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\n        TransportType: RPC\n        options: 0x00000001\nWarning: No NC replicated for Connection!\n<\/code><\/pre>\n<p>Forcer une replication manuelle de toutes les branches<\/p>\n<pre><code>dc1ad:~# samba-tool drs replicate DC2AD DC1AD dc=formation,dc=fr --full-sync\nReplicate from DC1AD to DC2AD was successful.\n<\/code><\/pre>\n<p>Depuis les outils RSAT vous pouvez v\u00e9rifier l&rsquo;\u00e9tat des 2 serveurs :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/rsat-online-dc.png\" alt=\"rsat-online-d-w400\" \/><\/p>\n<h4>Serveur NTP pour le temps Windows <a name=\"chapitre3-1-2\"><\/a><\/h4>\n<p>La configuration du service NTP est une notion tr\u00e8s importante dans SaMBa4 Active Directory car celui-ci est bas\u00e9 sur l&rsquo;\u00e9change de ticket via Kerberos. Les machines doivent-\u00eatre parfaitement synchronis\u00e9es au niveau temps afin de valider les ouvertures de sessions aux utilisateurs.<\/p>\n<p>Depuis Debian 8, il est conseill\u00e9 de passer par systemd. Ci-dessous, l&rsquo;ancien mode pour mettre \u00e0 jour le serveur DC.<\/p>\n<pre><code>~~dc1ad:~# apt-get install ntpdate\ndc1ad:~# ntpdate fr.pool.ntp.org\n10 Sep 10:42:08 ntpdate[600]: adjust time server 37.187.2.84 offset 0.005462 sec\n<\/code><\/pre>\n<p>Installation du service de temps pour notre r\u00e9seau formation.fr :<\/p>\n<pre><code>dc1ad:~# apt-get install ntp\n<\/code><\/pre>\n<p>Rajouter les lignes suivantes au fichier \u00ab <em>\/etc\/ntp.conf<\/em> \u00bb afin que les postes Windows puissent se mettre \u00e0 jour automatiquement via le protocol MS-SNTP sign\u00e9.<\/p>\n<pre><code>dc1ad:~# vi \/etc\/ntp.conf\n....\nntpsigndsocket \/var\/lib\/samba\/ntp_signd\nrestrict -4 default kod notrap nomodify nopeer noquery mssntp\nrestrict -6 default kod notrap nomodify nopeer noquery mssntp\n....\n<\/code><\/pre>\n<p>V\u00e9rifier les droits pr\u00e9sents sur le r\u00e9pertoire stockant le socket SaMBa4 pour l&rsquo;authentification NTP.<\/p>\n<pre><code>dc1ad:~# chgrp ntp \/var\/lib\/samba\/ntp_signd\ndc1ad:~# usermod -a -G staff ntp\n<\/code><\/pre>\n<p>Relancer le serveur de temps et v\u00e9rifier la prise en compte du socket ntp_signed:<\/p>\n<pre><code>dc1ad:~# \/etc\/init.d\/ntp restart\n[ ok ] Restarting ntp (via systemctl): ntp.\n\ndc1ad:~# netstat -xpln | grep signd\nunix  2      [ ACC ]     STREAM     LISTENING     12161    421\/samba   \/var\/lib\/samba\/ntp_signd\/socket\n<\/code><\/pre>\n<p>Vous pouvez \u00e9galement v\u00e9rifier dans le fichier de log \u00ab <em>\/var\/log\/syslog<\/em> \u00bb la pr\u00e9sence de la ligne suivante :<\/p>\n<pre><code>Sep 10 10:54:41 dc1ad ntpd[1732]: ntpd 4.2.8p10@1.3728-o Sun Feb 25 21:22:55 UTC 2018 (1): Starting\nSep 10 10:54:41 dc1ad ntpd[1732]: Command line: \/usr\/sbin\/ntpd -p \/var\/run\/ntpd.pid -g -u 107:113\nSep 10 10:54:41 dc1ad ntp[1723]: Starting NTP server: ntpd.\nSep 10 10:54:41 dc1ad ntpd[1735]: MS-SNTP signd operations currently block ntpd degrading service to all clients.\n<\/code><\/pre>\n<p>Valider la communication avec les autres stratum :<\/p>\n<pre><code>dc1ad:~# ntpq -p\n     remote           refid      st t when poll reach   delay   offset  jitter\n==============================================================================\n 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000\n 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000\n 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000\n 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000\n......\n<\/code><\/pre>\n<p>Depuis un poste client Windows vous pouvez forcer une (re)synchronisation en executant la commande suivante depuis une console DOS avec les droits administrateurs. La commande w32tm demande au serveur ntp client local windows de faire une synchronisation avec le DC. (il faut \u00eatre patient &#8230;)<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/console_w32tm.png\" alt=\"console_w32t-w400\" \/><\/p>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : La commande a utiliser : <strong>w32tm \/resync \/nowait<\/strong>\n<\/p><\/blockquote>\n<p>Mode debug sur les clients NTP Windows :<\/p>\n<ul>\n<li>Reconfigurer vos postes clients afin qu&rsquo;ils utilisent l&rsquo;AD pour le ntp :<\/li>\n<\/ul>\n<pre><code>w32tm \/config \/syncfromflags:domhier\nw32tm \/config \/update\nw32tm \/resync \/nowait\n<\/code><\/pre>\n<ul>\n<li>S\u00e9lectionner un des deux mode de fonctionnement du client ntp windows :\n<ul>\n<li>Fonctionnement en mode client ADS; c&rsquo;est le mode Nt5DS par default pour un domaine SaMBa4. Pour cela, \u00e9diter via regedit la cl\u00e9 de registre suivante : <\/li>\n<\/ul>\n<pre><code>[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\Parameters]\n...\n\"Type\"=\"Nt5DS\"\n<\/code><\/pre>\n<ul>\n<li>Fonctionnement en mode ancien client NTP. Pour basculer dans ce mode, depuis une console DOS avec les droits administrateurs executer la commande : <strong>net time \/setsntp:ntp.formation.fr<\/strong>. Vous pouvez v\u00e9rifier le r\u00e9sultat en \u00e9ditant via regedit la cl\u00e9 de registre suivante :<\/li>\n<\/ul>\n<pre><code>[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\Parameters]\n...\n\"Type\"=\"NTP\"\n\"ntpserver\"=\"ntp.formation.fr\"\n<\/code><\/pre>\n<\/li>\n<li>V\u00e9rifier que le client ntp pointe vers votre serveur depuis une console DOS avec les droits administrateurs executer la commande :<\/li>\n<\/ul>\n<pre><code>w32tm \/monitor\n<\/code><\/pre>\n<h4>Synchroniser le r\u00e9pertoire SYSVOL via RSYNC pour les GPO <a name=\"chapitre3-1-4\"><\/a><\/h4>\n<p>Sur le serveur DC1AD installer l&rsquo;outil de synchronisation RSYNC :<\/p>\n<pre><code>dc1ad:~# apt-get install rsync\n<\/code><\/pre>\n<p>Editer le fichier  \u00ab <em>\/etc\/default\/rsync<\/em> \u00bb afin de l&rsquo;activer en mode daemon :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/default\/rsync\nRSYNC_ENABLE=true\n<\/code><\/pre>\n<p>Cr\u00e9er le fichier \u00ab <em>\/etc\/rsyncd.conf<\/em> \u00bb indiquant le dossier SYSVOL \u00e0 synchroniser :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/rsyncd.conf\nreverse lookup = no\n[SysVol]\npath = \/var\/lib\/samba\/sysvol\/\ncomment = Samba Sysvol Share\nuid = root\ngid = root\nread only = yes\nauth users = sysvol-replication\nsecrets file = \/etc\/samba\/rsyncd.secret\n<\/code><\/pre>\n<p>Cr\u00e9er le fichier de secret \u00ab <em>\/etc\/samba\/rsyncd.secret<\/em> \u00bb :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/samba\/rsyncd.secret\nsysvol-replication:L9FchHVPNyqNSi1\n<\/code><\/pre>\n<p>Appliquer les droits uniquement pour l&rsquo;utilisateur root :<\/p>\n<pre><code>dc1ad:~# chmod 600 \/etc\/samba\/rsyncd.secret\n<\/code><\/pre>\n<p>Lancer le service rsyncd :<\/p>\n<pre><code>dc1ad:~# \/etc\/init.d\/rsync status\n\u25cf rsync.service - fast remote file copy program daemon\n   Loaded: loaded (\/lib\/systemd\/system\/rsync.service; enabled; vendor preset: enabled)\n   Active: active (running) since Sun 2019-10-20 17:49:34 CEST; 800ms ago\n Main PID: 2201 (rsync)\n    Tasks: 1 (limit: 4915)\n   CGroup: \/system.slice\/rsync.service\n           \u2514\u25002201 \/usr\/bin\/rsync --daemon --no-detach\nOct 20 17:49:34 dc1ad systemd[1]: Started fast remote file copy program daemon.\nOct 20 17:49:34 dc1ad rsyncd[2201]: rsyncd version 3.1.2 starting, listening on port 873\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Vous pouvez utiliser cette astuce pour g\u00e9n\u00e9rer un mot de passe : <code>openssl rand -base64 16<\/code>\n<\/p><\/blockquote>\n<p>V\u00e9rifier les ACL sur le Sysvol, et le cas \u00e9ch\u00e9ant r\u00e9-initialiser les ACLs<\/p>\n<pre><code>dc1ad:~# samba-tool ntacl sysvolreset \ndc1ad:~# samba-tool ntacl sysvolcheck \n<\/code><\/pre>\n<p>Sur le serveur DC2AD installer l&rsquo;outil de synchronisation RSYNC :<\/p>\n<pre><code>dc2ad:~# apt-get install rsync\n<\/code><\/pre>\n<p>Renseigner le mot de passe de l&rsquo;utilisateur sysvol-replication du dc1ad :<\/p>\n<pre><code>dc2ad:~# vi \/etc\/samba\/rsync-sysvol.secret\nL9FchHVPNyqNSi1\n<\/code><\/pre>\n<p>Appliquer les droits uniquement pour l&rsquo;utilisateur root :<\/p>\n<pre><code>dc2ad:~# chmod 600 \/etc\/samba\/rsync-sysvol.secret\n<\/code><\/pre>\n<p>Tester la synchronisation sans modification (mode dry):<\/p>\n<pre><code>dc2ad:~# rsync --dry-run -XAavz --delete-after --password-file=\/etc\/samba\/rsync-sysvol.secret rsync:\/\/sysvol-replication@dc1ad\/SysVol\/ \/var\/lib\/samba\/sysvol\/\nreceiving file list ... done\n.\/\nformation.fr\/\nformation.fr\/Policies\/\nformation.fr\/Policies\/{31B2F340-016D-11D2-945F-00C04FB984F9}\/\nformation.fr\/Policies\/{31B2F340-016D-11D2-945F-00C04FB984F9}\/GPT.INI\nformation.fr\/Policies\/{31B2F340-016D-11D2-945F-00C04FB984F9}\/MACHINE\/\nformation.fr\/Policies\/{31B2F340-016D-11D2-945F-00C04FB984F9}\/USER\/\nformation.fr\/Policies\/{6AC1786C-016F-11D2-945F-00C04FB984F9}\/\nformation.fr\/Policies\/{6AC1786C-016F-11D2-945F-00C04FB984F9}\/GPT.INI\nformation.fr\/Policies\/{6AC1786C-016F-11D2-945F-00C04FB984F9}\/MACHINE\/\nformation.fr\/Policies\/{6AC1786C-016F-11D2-945F-00C04FB984F9}\/USER\/\nformation.fr\/scripts\/\n\nsent 59 bytes  received 1,212 bytes  847.33 bytes\/sec\ntotal size is 40  speedup is 0.03 (DRY RUN)\n<\/code><\/pre>\n<p>Programmer la synchronisation toutes les 5 minutes :<\/p>\n<pre><code>dc2ad:~# crontab -e\n*\/5 * * * * rsync -avz --delete-after --password-file=\/etc\/samba\/rsync-sysvol.secret rsync:\/\/sysvol-rep&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110;&#64;&#49;&#48;&#46;&#88;&#46;&#88;&#x2e;&#x58;\/SysVol\/ \/var\/lib\/samba\/sysvol\/ &amp;gt;\/dev\/null 2&amp;gt;&amp;amp;1\n<\/code><\/pre>\n<p>Logs sur DC1AD suite \u00e0 une synchronisation initi\u00e9 depuis DC2AD:<\/p>\n<pre><code>Sep 24 08:27:49 dc1ad rsyncd[664]: connect from UNDETERMINED (10.X.X.X)\nSep 24 08:27:49 dc1ad rsyncd[664]: rsync on SysVol\/ from sysvol-replication@UNDETERMINED (10.X.X.X)\nSep 24 08:27:49 dc1ad rsyncd[664]: building file list\nSep 24 08:27:49 dc1ad rsyncd[664]: sent 1236 bytes  received 69 bytes  total size 40\n<\/code><\/pre>\n<h4>DNS migrer de SaMBaDNS vers Bind9 <a name=\"chapitre3-1-5\"><\/a><\/h4>\n<p>Le DNS inte\u0301gre\u0301 dans SaMBa4 est parfaitement adapt\u00e9 et fonctionnel \u00e0 des fins de test mais de la passer en <strong>production<\/strong>, je le d\u00e9conseille fortement.<\/p>\n<p>En effet, le DNS interne de SaMBa4 est tre\u0300s simple a\u0300 mettre en place mais il a deux inconv\u00e9nients majeurs, il ne fait pas de cache et il est impossible de faire une configuration DNS avance\u0301e comme par exemple les vues, logs d\u00e9taill\u00e9s &#8230;<\/p>\n<p>Afin d&rsquo;y rem\u00e9dier il est ne\u0301cessaire de basculer en mode <strong>Bind DLZ<\/strong>. Pour cela, il est n\u00e9cessaire d&rsquo;installer un serveur <strong>Bind9<\/strong> en frontal de SaMBa4 et ajouter l&rsquo;extension DLZ pour b\u00e9n\u00e9ficier de la performance et de la souplesse de Bind9. La gestion des zones DNS inte\u0301gre\u0301es a\u0300 Active Directory sera identique a celle du DNS interne.<\/p>\n<p>V\u00e9rifier la pr\u00e9sence des param\u00e8tres suivants au fichier \u00ab <em>\/etc\/hosts<\/em> \u00bb<\/p>\n<pre><code>dc1ad:~# vi \/etc\/hosts\n127.0.0.1   localhost\n@IPDC1 dc1ad.formation.fr dc1ad\n@IPDC2 dc2ad.formation.fr dc2ad\n<\/code><\/pre>\n<p>Installer Bind9 sur DC1AD et DC2AD:<\/p>\n<pre><code>dc1ad:~# apt-get install bind9\nAdding system user `bind' (UID 108) ...\nAdding new user `bind' (UID 108) with group `bind' ...\nNot creating home directory `\/var\/cache\/bind'.\nwrote key file \"\/etc\/bind\/rndc.key\"\n<\/code><\/pre>\n<p>Basculer du DNS interne \u00e0 BIND9, en supprimant lu ro\u0302le DNS sur le serveur SaMBa4 depuis le fichier \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb :<\/p>\n<pre><code>[global]\n...\nserver services = -dns\n...\n<\/code><\/pre>\n<p>Commenter ou supprimer la ligne de forwarder DNS dans le fichier \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb car elle n&rsquo;est plus ne\u0301cessaire.<\/p>\n<pre><code>...\n# dns forwarders = 8.8.8.8\n...\n\n<\/code><\/pre>\n<p>Activer la prise en charge de SaMBa4 pour Bind9<\/p>\n<pre><code># vi \/etc\/bind\/named.conf\n\n\/\/ SaMBa4\ninclude \"\/var\/lib\/samba\/private\/named.conf\";\n<\/code><\/pre>\n<p>Cr\u00e9er le fichier \u00ab <em>\/var\/lib\/samba\/private\/named.conf<\/em> \u00bb et activer l&rsquo;extension en fonction de votre version de Bind9 et Linux.<\/p>\n<p>D\u00e9tecter la version :<\/p>\n<pre><code>dc1ad:~# named -v\nBIND 9.10.3-P4-Debian \n<\/code><\/pre>\n<p>Cr\u00e9er le fichier \u00ab <em>\/var\/lib\/samba\/private\/named.conf<\/em> \u00bb<\/p>\n<pre><code>dc1ad:~# vi \/var\/lib\/samba\/private\/named.conf\ndlz \"AD DNS Zone\" {\n    # For BIND 9.8.x\n    #database \"dlopen \/usr\/lib\/x86_64-linux-gnu\/samba\/bind9\/dlz_bind9.so\";\n\n    # For BIND 9.9.x\n    #database \"dlopen \/usr\/lib\/x86_64-linux-gnu\/samba\/bind9\/dlz_bind9_9.so\";\n\n    # For BIND 9.10.x\n    database \"dlopen \/usr\/lib\/x86_64-linux-gnu\/samba\/bind9\/dlz_bind9_10.so\";\n\n    # For BIND 9.11.x\n    #database \"dlopen \/usr\/lib\/x86_64-linux-gnu\/samba\/bind9\/dlz_bind9_11.so\";\n};\n<\/code><\/pre>\n<p>Cr\u00e9er le dossier de logs de Bind9<\/p>\n<pre><code>dc1ad:~# mkdir \/var\/log\/named\ndc1ad:~# chown bind:bind \/var\/log\/named\n<\/code><\/pre>\n<p>Ajouter les options suivantes au fichier \u00ab <em>\/etc\/bind\/named.conf.options<\/em> \u00bb<\/p>\n<pre><code>dc1ad:~# vi \/etc\/bind\/named.conf.options\noptions {\n...\n\n     \/\/ Masquage de la version\n     version \"[secured]\";\n\n     \/\/ On cache les requetes\n     forwarders {\n                8.8.8.8;\n     };\n\n     \/\/ DNSSEC\n     dnssec-validation no;\n\n    \/\/ On autorise notre r\u00e9seau \n    allow-recursion { 127.0.0.1; 10.0.2.0\/24; };\n    allow-query-cache { 127.0.0.1; 10.0.2.0\/24; };\n\n     \/\/ MAJ DNS dynamique via Kerberos\n      tkey-gssapi-keytab \"\/var\/lib\/samba\/private\/dns.keytab\";\n\n};\n<\/code><\/pre>\n<p>MAJ automatique des enregistrements DNS via Kerberos<\/p>\n<pre><code>dc1ad:~# touch \/var\/lib\/samba\/private\/dns.keytab\ndc1ad:~# chmod 640 \/var\/lib\/samba\/private\/dns.keytab\ndc1ad:~# chown root:bind \/var\/lib\/samba\/private\/dns.keytab\n<\/code><\/pre>\n<p>Nous pouvons \u00e0 pr\u00e9sent migrer du DNS interne vers Bind9<\/p>\n<pre><code>dc1ad:~# samba_upgradedns --dns-backend=BIND9_DLZ\nReading domain information\nDNS accounts already exist\nNo zone file \/var\/lib\/samba\/private\/dns\/FORMATION.FR.zone\nDNS records will be automatically created\nDNS partitions already exist\nAdding dns-dc1ad account\nSee \/var\/lib\/samba\/private\/named.conf for an example configuration include file for BIND\nand \/var\/lib\/samba\/private\/named.txt for further documentation required for secure DNS updates\nFinished upgrading DNS\nYou have switched to using BIND9_DLZ as your dns backend, but still have the internal dns starting. Please make sure you add '-dns' to your server services line in your smb.conf.\n<\/code><\/pre>\n<p>Relance du serveur DNS Bind9<\/p>\n<pre><code>dc1ad:~# service bind9 restart\n<\/code><\/pre>\n<p>Ve\u0301rification que le serveur Bind9 e\u0301coute bien sur le port 53 :<\/p>\n<pre><code>dc1ad:~# netstat -tapn | grep 53\ntcp        0      0 10.X.X.X:53         0.0.0.0:*               LISTEN      397\/named\ntcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      397\/named\ntcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      397\/named\ntcp6       0      0 :::53                   :::*                    LISTEN      397\/named\ntcp6       0      0 ::1:953                 :::*                    LISTEN      397\/named\n<\/code><\/pre>\n<p>Valider la bonne MAJ des enregistrements<\/p>\n<pre><code>dc2ad:~# samba_dnsupdate --verbose --all-names\n...\nupdate(nsupdate): SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.formation.fr dc2ad.formation.fr 389\nCalling nsupdate for SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.formation.fr dc2ad.formation.fr 389 (add)\nOutgoing update query:\n;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;amp;1 | tee \/tmp\/named.log\n<\/code><\/pre>\n<p>Optionnel : revenir au DNS interne SaMBa4<\/p>\n<pre><code># samba_upgradedns --dns-backend=SAMBA_INTERNAL\n<\/code><\/pre>\n<pre><code>Dans \/usr\/local\/samba\/etc\/smb.conf\nserver services = dns\n<\/code><\/pre>\n<h3>Diagnostiquer et r\u00e9soudre les probl\u00e8mes les plus courants <a name=\"chapitre3-2\"><\/a><\/h3>\n<h4>Gestion des logs <a name=\"chapitre3-2-1\"><\/a><\/h4>\n<p>Cf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Client_specific_logging<\/a><\/p>\n<p><strong>SaMBa4<\/strong><\/p>\n<p>Il est tr\u00e8s important d\u2019avoir des logs qui donnent des infos pertinentes. Par d\u00e9faut SaMBa4 est r\u00e9gl\u00e9 sur un niveau de d\u00e9tail de 0. Par cons\u00e9quence, le fichier journal n\u2019aura pas l\u2019information dont vous avez besoin, vous devez donc augmenter le niveau des logs en ajoutant la ligne suivante \u00e0 la section [global] de votre smb.conf (\/etc\/samba\/smb.conf):<\/p>\n<pre><code>log level = 3\n<\/code><\/pre>\n<p><strong>BIND9<\/strong><\/p>\n<pre><code>logging {\n        channel simple_log {\n                file \"\/var\/log\/named\/bind.log\" versions 3;\n                print-time yes;\n                print-severity yes;\n                print-category yes;\n        };\n\n        channel audit_log {\n                file \"\/var\/log\/named\/audit.log\" versions 3;\n                print-time yes;\n                print-severity yes;\n                print-category yes;\n        };\n\n        channel query_log {\n                file \"\/var\/log\/named\/query.log\" versions 3;\n                print-time yes;\n                print-severity yes;\n                print-category yes;\n        };\n\n        category default        { simple_log; };\n        category general        { simple_log; };\n        category security       { audit_log; simple_log; };\n        category config         { simple_log; };\n        category resolver       { audit_log; };\n        category xfer-in        { audit_log; };\n        category xfer-out       { audit_log; };\n        category notify         { audit_log; };\n        category client         { audit_log; };\n        category network        { audit_log; };\n        category update         { audit_log; };\n        category queries        { query_log; };\n        category lame-servers     { null; };\n};\n<\/code><\/pre>\n<h4>Migration de SaMBa4 stretch to buster \u2013 <strong>TP n\u00b03<\/strong><a name=\"chapitre3-2-2\"><\/a><\/h4>\n<p>Pr\u00e9requis avant migration en Debian<\/p>\n<pre><code>dc1ad:~# systemctl disable nmbd\ndc1ad:~# systemctl disable smbd\ndc1ad:~# systemctl unmask samba-ad-dc\ndc1ad:~# systemctl enable samba-ad-dc \ndc1ad:~# systemctl unmask nfs-common.service\n<\/code><\/pre>\n<p>Recherche d&rsquo;objet dans la corbeille pouvant poser probl\u00e8me durant la migration :<\/p>\n<pre><code>dc1ad:~# ldbsearch --cross-ncs --show-deleted -H \/var\/lib\/samba\/private\/sam.ldb | grep '\\0ADEL'\n\ndn: cn=vieuxcompte\\0ADEL:0492c6c3-1111-578d-86db-5fe4a7fbd650,CN=Deleted Objects,DC=formation,DC=fr\n<\/code><\/pre>\n<p>Si pr\u00e9sent, les supprimer depuis l&rsquo;outil ADExplorer ou avec la commande suivante :<\/p>\n<pre><code>dc1ad:~# ldbdel --cross-ncs --show-deleted --relax -H \/var\/lib\/samba\/private\/sam.ldb\n\n'cn=vieuxcompte\\0ADEL:0492c6c3-1111-578d-86db-5fe4a7fbd650,CN=Deleted Objects,DC=formation,DC=fr'\n\nDeleted 1 record\n<\/code><\/pre>\n<p>V\u00e9rification de la base AD<\/p>\n<pre><code>dc1ad:~# samba-tool dbcheck\ndc1ad:~# samba-tool dbcheck --cross-ncs --fix\ndc1ad:~# samba-tool dbcheck --cross-ncs --reset-well-known-acls --fix --yes\nChecking 3489 objects\nChecked 3489 objects (0 errors)\n<\/code><\/pre>\n<p>Affichage des r\u00f4les depuis DC2AD<\/p>\n<pre><code>dc2ad:~# samba-tool fsmo show\nSchemaMasterRole owner: CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nInfrastructureMasterRole owner: CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nRidAllocationMasterRole owner: CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nPdcEmulationMasterRole owner: CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nDomainNamingMasterRole owner: CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nDomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\nForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC1AD,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=formation,DC=fr\n<\/code><\/pre>\n<p>Migration des r\u00f4les vers DC2AD<\/p>\n<pre><code>dc2ad:~# samba-tool fsmo seize --role=all\nAttempting transfer...\nThis DC already has the 'rid' FSMO role\nTransfer successful, not seizing role\nAttempting transfer...\nThis DC already has the 'pdc' FSMO role\nTransfer successful, not seizing role\nAttempting transfer...\nThis DC already has the 'naming' FSMO role\nTransfer successful, not seizing role\nAttempting transfer...\nThis DC already has the 'infrastructure' FSMO role\nTransfer successful, not seizing role\nAttempting transfer...\nThis DC already has the 'schema' FSMO role\nTransfer successful, not seizing role\nAttempting transfer...\nThis DC already has the 'domaindns' FSMO role\nTransfer successful, not seizing role\nAttempting transfer...\nThis DC already has the 'forestdns' FSMO role\nTransfer successful, not seizing role\n<\/code><\/pre>\n<p>On d\u00e9sactive winbind pour la migration<\/p>\n<pre><code>dc1ad:~# \/etc\/init.d\/winbind stop\ndc1ad:~# systemctl disable winbind\ndc1ad:~# systemctl mask winbind\n<\/code><\/pre>\n<p>On bascule les sources debian sur Stretch<\/p>\n<pre><code>dc1ad:~# sed -i 's\/jessie\/stretch\/g' \/etc\/apt\/sources.list\n<\/code><\/pre>\n<p>Lancer la migration de Debian 8 en Debian 9<\/p>\n<pre><code>dc1ad:~# apt-get update\ndc1ad:~# apt full-upgrade\ndc1ad:~# apt-get --fix-broken install\ndc1ad:~# apt-get autoremove --purge\n<\/code><\/pre>\n<p>Si vous \u00eates en BIND9_DLZ, corriger en fonction de votre version les fichiers suivants<\/p>\n<pre><code>vi \/var\/lib\/samba\/private\/named.conf\n<\/code><\/pre>\n<p>Fixer les derniers probl\u00e8mes \u00e9ventuels sur la base AD<\/p>\n<pre><code>samba-tool dbcheck --cross-ncs --fix --yes 'fix_replmetadata_unsorted_attid'\nsamba-tool dbcheck --cross-ncs --fix --yes 'fix_replica_locations'\nsamba-tool dbcheck --cross-ncs --fix --yes\n<\/code><\/pre>\n<p>cf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Updating_Samba#Samba_AD_DC_Database_Check<\/a><br \/>\ncf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Transferring_and_Seizing_FSMO_Roles<\/a><br \/>\ncf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Manually_Replicating_Directory_Partitions<\/a><br \/>\ncf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Verifying_and_Creating_a_DC_DNS_Record<\/a><br \/>\ncf : <a href=\"\">https:\/\/help.univention.com\/t\/samba-4-deleted-objects\/6445<\/a><\/p>\n<h2>D\u00e9couvrir les nouveaux usages rendus possibles avec SaMBa4 <a name=\"chapitre4\"><\/a><\/h2>\n<h3>Maitriser les GPO et les ADMX <a name=\"chapitre4-1\"><\/a><\/h3>\n<p>Les fichiers ADMX sont les param\u00e8tres GPO de Windows qui sont repr\u00e9sent\u00e9s sous la forme de fichiers \u00ab .admx \u00bb (anciennement ADM). Chaque OS \u00e0 ces fichiers ADMX (depuis Windows Vista jusqu\u2019\u00e0 10).<\/p>\n<p>Ces fichiers contiennent des instructions XML permettant de d\u00e9finir les diff\u00e9rentes strat\u00e9gies de groupe pour votre parc Microsoft. Ils sont lisibles et modifiables uniquement \u00e0 partir de Windows Server.<\/p>\n<p>Dans un premier temps, t\u00e9l\u00e9charger et installer les ADMX pour l&rsquo;administration depuis votre Windows Server ou votre Windows 10 RSAT: <a href=\"https:\/\/www.microsoft.com\/fr-FR\/download\/details.aspx?id=56880\">Administrative Templates (.admx) for Windows 10 April 2018 Update (1803) &#8211; Fran\u00e7ais<\/a><\/p>\n<p>L&rsquo;installation des ADMX s&rsquo;effectue dans \u00ab C:\\Program Files (x86)\\Microsoft Group Policy\\Windows 10 April 2018 Update (1803) v2\\ \u00bb. Dans ce r\u00e9pertoire vous trouverez de nombreux fichiers ADMX. Chacun de ces fichiers correspond \u00e0 une s\u00e9rie de param\u00e8tres d\u00e9finissables dans les GPO.<\/p>\n<p>Afin de disposer des ADMX depuis n&rsquo;importe qu&rsquo;elle machine ayant les outils RSAT, nous devons les copiers dans le repertoire SYSVOL de votre domaine. Ici nous ferons une copie de \u00ab C:\\Program Files (x86)\\Microsoft Group Policy\\Windows 10 April 2018 Update (1803) v2\\ \u00bb vers \u00ab &#092;dc1ad\\sysvol\\formation.fr\\Policies\\ \u00bb<\/p>\n<p>L\u2019int\u00e9gration des GPO dans le contr\u00f4leur de domaine est termin\u00e9e, nous allons maintenant proc\u00e9der \u00e0 la v\u00e9rification via la cr\u00e9ation d&rsquo;une GPO ondrive :<\/p>\n<p><strong>GPO suppression Onedrive avec filtre WMI<\/strong> <a name=\"chapitre4-1-1\"><\/a><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/gpo_ondrive_1.png\" alt=\"gpo_ondrive_1\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/gpo_ondrive_11.png\" alt=\"gpo_ondrive_11\" \/><\/p>\n<blockquote><p>\n  <strong>Explication<\/strong> : Cr\u00e9er un nouvel objet de strat\u00e9gie de groupe en faisant clic droit sur le domaine formation.fr contenant les strat\u00e9gies de groupe puis cr\u00e9ez un nouvel objet. \u00c9ditez ensuite cet objet gr\u00e2ce \u00e0 un clic droit dessus et cliquez sur \u00ab Modifier \u00bb.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/gpo_ondrive_2.png\" alt=\"gpo_ondrive_2\" \/><\/p>\n<blockquote><p>\n  <strong>Explication<\/strong> : Nommer le nouvel objet, par exemple ici on utilise la r\u00e8gle de nommage nomdudomaine_ordinateur\/utilisateur_cible.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/gpo_ondrive_3.png\" alt=\"gpo_ondrive_3\" \/><\/p>\n<blockquote><p>\n  <strong>Explication<\/strong> :Cette strat\u00e9gie s&rsquo;applique uniquement aux ordinateurs et suivant la r\u00e8gle de nommage pr\u00e9c\u00e9dente.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/gpo_ondrive_4.png\" alt=\"gpo_ondrive_4\" \/><\/p>\n<blockquote><p>\n  <strong>Explication<\/strong> : Cr\u00e9ation d&rsquo;un filtre WMI qui cible uniquement les machines Windows 10\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/gpo_ondrive_5.png\" alt=\"gpo_ondrive_5\" \/><\/p>\n<blockquote><p>\n  <strong>Explication<\/strong> : Dans Strat\u00e9gie d&rsquo;ordinateur, Mod\u00e8les d&rsquo;administration, Composants Windows, Onedrive, s\u00e9lectionner les options de la capture.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/05\/gpo_ondrive_6.png\" alt=\"gpo_ondrive_6\" \/><\/p>\n<blockquote><p>\n  <strong>Explication<\/strong> : Resum\u00e9 d\u00e9taillant la GPO.\n<\/p><\/blockquote>\n<h3>GPO activer le chiffrement Bitlocker sur Windows 10 <a name=\"chapitre4-1-2\"><\/a><\/h3>\n<p>Cr\u00e9er un nouvealle GPO ordinateur et param\u00e9trer la strat\u00e9gie suivante depuis : Strat\u00e9gies -&gt; Param\u00e8tres du logiciel -&gt; Mod\u00e8les d&rsquo;administration&#8230; -&gt; Chriffrement :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/bitlocker2.png\" alt=\"bitlocke\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/bitlocker3.png\" alt=\"bitlocke\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/bitlocker1.png\" alt=\"bitlocke\" \/><\/p>\n<pre><code>#=====================================================================\n# Active Directory Domain Services schema extension for \n# BitLocker Drive Encryption and Trusted Platform Module (TPM) recovery\n# This file contains attributes and class objects that enable\n# Windows Server 2003 SP1 and Windows Server 2003 R2 domain controllers\n# to store BitLocker and TPM recovery information. \n# Change History: \n#   11\/2005 - Schema additions for Vista Beta 2 (matches \\\"Longhorn\\\" Server Beta 2)\n#    5\/2006 - Schema additions and updates for Vista RC1 (matches \\\"Longhorn\\\" Server Beta 3)\n# NOTE: A schema extension is not necessary if the forest includes an installation\n# of Windows Server Codename \\\"Longhorn\\\".\n# To extend the schema, use the LDIFDE tool on the schema master of the forest.\n# Sample command:\n#   ldifde -i -v -f BitLockerTPMSchemaExtension.ldf -c \\\"DC=X\\\" \\\"DC=nttest,dc=microsoft,dc=com\\\" -k -j .\n# For more information on LDIFDE tool, see\n# http:\/\/support.microsoft.com\/default.aspx?scid=kb;en-us;237677 \n# See related guide for setting up Active Directory Domain Services\n# for BitLocker and TPM recovery.\n#=====================================================================\n\n\n#=====================================================================\n# [Vista Beta 2 and up] TPM Recovery Information - Attributes\n#=====================================================================\n\n# ms-TPM-OwnerInformation\ndn: CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=X\nchangetype: add\nobjectClass: attributeSchema\nldapDisplayName: msTPM-OwnerInformation\nadminDisplayName: TPM-OwnerInformation\nadminDescription: This attribute contains the owner information of a particular TPM.\nattributeId: 1.2.840.113556.1.4.1966\nattributeSyntax: 2.5.5.12\nomSyntax: 64\nisSingleValued: TRUE\nsearchFlags: 136\nschemaIdGuid:: bRpOqg1VBU6MNUr8uRep\/g==\nshowInAdvancedViewOnly: TRUE\n\n\n#======================================================================\n# [Vista Beta 2 and up] Bitlocker Recovery Information - Attributes\n# NOTE: FVE is the acronym for Full Volume Encryption, a pre-release name\n#=====================================================================\n\n# ms-FVE-RecoveryGuid\ndn: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=X\nchangetype: add\nobjectClass: attributeSchema\nldapDisplayName: msFVE-RecoveryGuid\nadminDisplayName: FVE-RecoveryGuid\nadminDescription: This attribute contains the GUID associated with a Full Volume Encryption (FVE) recovery password.\nattributeID: 1.2.840.113556.1.4.1965\nattributeSyntax: 2.5.5.10\nomSyntax: 4\nisSingleValued: TRUE\nsearchFlags: 137\nschemaIdGuid:: vAlp93jmoEews\/hqAETAbQ==\nshowInAdvancedViewOnly: TRUE\n\n# ms-FVE-RecoveryPassword\ndn: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=X\nchangetype: add\nobjectClass: attributeSchema\nldapDisplayName: msFVE-RecoveryPassword\nadminDisplayName: FVE-RecoveryPassword\nadminDescription: This attribute contains the password required to recover a Full Volume Encryption (FVE) volume.\nattributeId: 1.2.840.113556.1.4.1964\nattributeSyntax: 2.5.5.12\nomSyntax: 64\nisSingleValued: TRUE\nsearchFlags: 136\nschemaIdGuid:: wRoGQ63IzEy3hSv6wg\/GCg==\nshowInAdvancedViewOnly: TRUE\n\n\n\n#=====================================================================\n# [Vista Beta 2 and up] Attributes - Schema Update\n#======================================================================\n\ndn:\nchangetype: modify\nadd: schemaUpdateNow\nschemaUpdateNow: 1\n-\n\n#=====================================================================\n# [Vista Beta 2 and up] BitLocker Recovery Information - Class\n#=====================================================================\n\n# ms-FVE-RecoveryInformation\ndn: CN=ms-FVE-RecoveryInformation,CN=Schema,CN=Configuration,DC=X\nchangetype: add\nobjectClass: classSchema\nldapDisplayName: msFVE-RecoveryInformation\nadminDisplayName: FVE-RecoveryInformation\nadminDescription: This class contains a Full Volume Encryption recovery password with its associated GUID.\ngovernsID: 1.2.840.113556.1.5.253\nobjectClassCategory: 1\nsubClassOf: top\nsystemMustContain: msFVE-RecoveryGuid\nsystemMustContain: msFVE-RecoveryPassword\nsystemPossSuperiors: computer\nschemaIdGUID:: MF1x6lOP0EC9HmEJGG14LA==\ndefaultSecurityDescriptor: D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)\ndefaultHidingValue: TRUE\ndefaultObjectCategory: CN=ms-FVE-RecoveryInformation,CN=Schema,CN=Configuration,DC=X\n\n\n#=====================================================================\n# [Vista Beta 2 and up] Classes - Schema Update\n#=====================================================================\n\ndn: CN=computer,CN=Schema,CN=Configuration,DC=X\n#changetype: ntdsSchemaModify\nchangetype: modify\nadd: mayContain\nmayContain: msTPM-OwnerInformation\n-\n\ndn:\nchangetype: modify\nadd: schemaUpdateNow\nschemaUpdateNow: 1\n-\n\n#=====================================================================\n# [Vista RC1 and up] Bitlocker Recovery Information - Additional Attributes \n#=====================================================================\n\n# ms-FVE-VolumeGuid\ndn: CN=ms-FVE-VolumeGuid,CN=Schema,CN=Configuration,DC=X\nchangetype: add\nobjectClass: attributeSchema\nldapDisplayName: msFVE-VolumeGuid\nadminDisplayName: FVE-VolumeGuid\nadminDescription: This attribute contains the GUID associated with a BitLocker-supported disk volume. Full Volume Encryption (FVE) was the pre-release name for BitLocker Drive Encryption.\nattributeID: 1.2.840.113556.1.4.1998\nattributeSyntax: 2.5.5.10\nomSyntax: 4\nisSingleValued: TRUE\nsearchFlags: 27\nschemaIdGuid:: z6Xlhe7cdUCc\/aydtqLyRQ==\nshowInAdvancedViewOnly: TRUE\nisMemberOfPartialAttributeSet: TRUE\nrangeUpper: 128\n\n# ms-FVE-KeyPackage\ndn: CN=ms-FVE-KeyPackage,CN=Schema,CN=Configuration,DC=X\nchangetype: add\nobjectClass: attributeSchema\nldapDisplayName: msFVE-KeyPackage\nadminDisplayName: FVE-KeyPackage\nadminDescription: This attribute contains a volume's BitLocker encryption key secured by the corresponding recovery password. Full Volume Encryption (FVE) was the pre-release name for BitLocker Drive Encryption.\nattributeId: 1.2.840.113556.1.4.1999\nattributeSyntax: 2.5.5.10\nomSyntax: 4\nisSingleValued: TRUE\nsearchFlags: 152\nschemaIdGuid:: qF7VH6eI3EeBKQ2qlxhqVA==\nshowInAdvancedViewOnly: TRUE\nisMemberOfPartialAttributeSet: FALSE\nrangeUpper: 102400\n\n#=====================================================================\n# [Vista RC1 and up] Additional Attributes - Schema Update\n#=====================================================================\n\ndn:\nchangetype: modify\nadd: schemaUpdateNow\nschemaUpdateNow: 1\n-\n\n#=====================================================================\n# [Vista RC1 and up] Updates to BitLocker Recovery Information Class\n#======================================================================\n\ndn: CN=ms-FVE-RecoveryInformation,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: adminDescription\nadminDescription: This class contains BitLocker recovery information including GUIDs, recovery passwords, and keys. Full Volume Encryption (FVE) was the pre-release name for BitLocker Drive Encryption.\n-\n\ndn: CN=ms-FVE-RecoveryInformation,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nadd: mayContain\nmayContain: msFVE-VolumeGuid\nmayContain: msFVE-KeyPackage\n-\n\n#=====================================================================\n# [Vista RC1 and up] Updates to pre-RC1 Attributes \n#=====================================================================\n\n# Updates to ms-TPM-OwnerInformation\n\ndn: CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: searchFlags\nsearchFlags: 152\n-\n\ndn: CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: rangeUpper\nrangeUpper: 128\n-\n\n# Updates to ms-FVE-RecoveryGuid\n\ndn: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: adminDescription\nadminDescription: This attribute contains the GUID associated with a BitLocker recovery password. Full Volume Encryption (FVE) was the pre-release name for BitLocker Drive Encryption.\n-\n\ndn: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: searchFlags\nsearchFlags: 27\n-\n\ndn: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: rangeUpper\nrangeUpper: 128\n-\n\ndn: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: isMemberOfPartialAttributeSet\nisMemberOfPartialAttributeSet: TRUE\n-\n\n\n# Updates to ms-FVE-RecoveryPassword\n\ndn: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: adminDescription\nadminDescription: This attribute contains a password that can recover a BitLocker-encrypted volume. Full Volume Encryption (FVE) was the pre-release name for BitLocker Drive Encryption.\n-\n\ndn: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: searchFlags\nsearchFlags: 152\n-\n\ndn: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=X\nchangetype: modify\nreplace: rangeUpper\nrangeUpper: 256\n-\n\n# Reload the schema cache to pick up updated attributes\n\ndn:\nchangetype: modify\nadd: schemaUpdateNow\nschemaUpdateNow: 1\n-\n<\/code><\/pre>\n<pre><code>dc1ad:~# cat BitLockerTPMSchemaExtension.ldf | sed 's\/DC=X\/DC=formation,DC=fr\/' &amp;gt; bitlocker.ldif\n<\/code><\/pre>\n<pre><code>dc1ad:~# ldbmodify -H \/var\/lib\/samba\/private\/sam.ldb  --option=\"dsdb:schema update allowed=true\" bitlocker.ldif\nERR: (Entry already exists) \"Entry CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=formation,DC=fr already exists\" on DN CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=formation,DC=fr at block before line 40\nModify failed after processing 0 records\n<\/code><\/pre>\n<p>cf : https:\/\/kidcartouche.blogspot.com\/2013\/03\/bitlocker-drive-encryption-and-samba4.html<\/p>\n<p>cf : https:\/\/docs.microsoft.com\/en-us\/previous-versions\/orphan-topics\/ws.10\/cc766251(v=ws.10)?redirectedfrom=MSDN<\/p>\n<p>cf : https:\/\/jackstromberg.com\/2015\/02\/tutorial-configuring-bitlocker-to-store-recovery-keys-in-active-directory\/<\/p>\n<h3>GPO activer une politique des mots de passe avec LAPS <a name=\"chapitre4-1-3\"><\/a><\/h3>\n<p><a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/samba-mise-en-place-de-laps-local-administrator\/\">https:\/\/homepages.lcc-toulouse.fr\/colombet\/samba-mise-en-place-de-laps-local-administrator\/<\/a><\/p>\n<h3>Int\u00e9grer des outils \u00e0 votre AD avec SSSD <a name=\"chapitre4-2\"><\/a><\/h3>\n<h4>Linux via SSSD<a name=\"chapitre4-2-1\"><\/a><\/h4>\n<p><strong>SSSD<\/strong> permet de remplacer <strong>Winbind<\/strong> avec une solution plus \u00e9l\u00e9gante et d\u00e9di\u00e9e \u00e0 la gestion d\u2019identit\u00e9 (alors que Winbind est surtout un composant de SaMBa).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/sssd-ad.png\" alt=\"sssd-ad\" \/><\/p>\n<p><strong><em>Avantages :<\/em><\/strong><\/p>\n<p>Il y a plusieurs type de connecteurs: en mode natif pour Active Directory ou par LDAP. On peut cacher les informations afin de travailler en mode d\u00e9connect\u00e9, mais aussi pour r\u00e9duire les latences et la charge sur le serveur d\u2019identification. SSSD est beaucoup plus simple \u00e0 debugger que Winbind.<\/p>\n<p><strong><em>Inconv\u00e9nients :<\/em><\/strong><\/p>\n<p>Cette solution existe depuis moins longtemps. L\u2019int\u00e9gration compl\u00e8te avec un Active Directory existe depuis SSSD 1.9 (fourni avec RHEL6.4+). On peut toutefois int\u00e9grer des clients RHEL5 et RHEL6.<br \/>\nElle n\u00e9cessite de payer une licence d\u2019acc\u00e8s client Windows pour chaque machine Linux, si l\u2019on opte pour une int\u00e9gration native (c\u2019est \u00e0 dire pas LDAP).<br \/>\nBien que cela soit possible, les r\u00e8gles sudo ne peuvent pas \u00eatre centralis\u00e9es facilement. Il faut donc souvent peupler le fichier sudoers par un autre m\u00e9canisme (notamment avec Puppet).<br \/>\nOn ne peut pas automatiser compl\u00e8tement l\u2019int\u00e9gration d\u2019une nouvelle machine dans le domaine (\u00e0 un moment donn\u00e9, il faut faire un net ads join  et rentrer le mot de passe administrateur).<\/p>\n<pre><code>root@debian9:~# apt-get install sssd-tools sssd libnss-sss libpam-sss realmd adcli\n\nroot@debian9:~# mkdir -p \/var\/lib\/samba\/private\n\nroot@debian9:~# adcli join --user=Administrator FORMATION.FR\n\nANCIENNE COMMANDE NE PAS FAIRE : realm join --user=Administrator FORMATION.FR : ANCIENNE COMMANDE NE PAS FAIRE\n\nroot@debian9:~# echo \"session required pam_mkhomedir.so skel=\/etc\/skel\/ umask=0022\" | tee -a \/etc\/pam.d\/common-session\n\nroot@debian9:~# vi \/etc\/sssd\/sssd.conf.ori\n\n[sssd]\ndomains = formation.fr\nconfig_file_version = 2\nservices = nss, pam\n\n[domain\/formation.fr]\nad_domain = formation.fr\nkrb5_realm = FORMATION.FR\nrealmd_tags = manages-system joined-with-samba\ncache_credentials = True\nid_provider = ad\nkrb5_store_password_if_offline = True\ndefault_shell = \/bin\/bash\nldap_id_mapping = True\nuse_fully_qualified_names = False\nfallback_homedir = \/home\/%u\naccess_provider = ad\n\nroot@debian9:~# cp \/etc\/sssd\/sssd.conf.ori \/etc\/sssd\/sssd.conf\n\nroot@debian9:~# chmod 600 \/etc\/sssd\/sssd.conf*\n\nroot@debian9:~# systemctl enable sssd &amp;amp;&amp;amp; systemctl start sssd\n\nroot@debian9:~# pam-auth-update --force\n\nroot@debian9:~# apt-get install libsss-sudo\n\nroot@debian9:~# echo \"%domain\\ admins ALL=(ALL:ALL) NOPASSWD:ALL\" | tee -a \/etc\/sudoers.d\/domain_admins\n\nroot@debian9:~# vi \/etc\/nsswitch.conf\nsudoers:        files\n<\/code><\/pre>\n<p>Rebooter la VM et v\u00e9rifier la bonne marche<\/p>\n<pre><code>root@debian9:~# id asr\nuid=685800500(administrator) gid=685800513(domain users) groups=685800513(domain users),685800572(denied rodc password replication group),685800520(group policy creator owners),685800518(schema admins),685800519(enterprise admins),685800512(domain admins)\n<\/code><\/pre>\n<h4>Service fichiers SaMBa4 en mode standalone <a name=\"chapitre4-2-2\"><\/a><\/h4>\n<pre><code>root@debian9:~# apt-get install samba\n<\/code><\/pre>\n<pre><code>root@debian9:~# vi \/etc\/samba\/smb.conf\n[global]\n    security = ads\n    workgroup = FORMATION\n        realm = FORMATION.FR\n    server string = Backup Server\n    kerberos method = system keytab\n\n    # Logs\n    log file = \/var\/log\/samba\/log.%m\n    #log level = 4\n    max log size = 100\n        # Desactivation du partage imprimante\n    load printers = no\n        printing = bsd\n        printcap name = \/dev\/null\n\n#============================ Share Homes ==============================\n\n[homes]\n    browseable = yes\n    read only = no\n    guest ok = no\n    veto files = \/._*\/.DS_Store\/\n    delete veto files = yes\n    path = \/home\/%u\n<\/code><\/pre>\n<pre><code>root@debian9:~# \/etc\/init.d\/samba restart\n<\/code><\/pre>\n<p>Depuis la console du clientwindows10 ajouter le dossier du serveur SaMBA4 au profile de votre utilisateur :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/10\/lecteur_reseau_users.png\" alt=\"lecteur_reseau_users-w400\" \/><\/p>\n<p>Executer un gpupdate \/force depuis une console cmd. D\u00e9connectez et reconnectez vous \u00e0 la session afin d&rsquo;avoir votre lecteur r\u00e9seau mont\u00e9 automatiquement<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/10\/lecteur_reseau_users-2.png\" alt=\"lecteur_reseau_users-2-w200\" \/><\/p>\n<h4>Synchroniser un annuaire OpenLDAP depuis ActiveDirectory avec LSC <a name=\"chapitre4-2-3\"><\/a><\/h4>\n<pre><code>debian9:~# apt-get install slapd apt-transport-https\n\ndebian9:~# mv \/etc\/ldap\/slapd.d\/ \/etc\/ldap\/slapd.d.orig\/\n<\/code><\/pre>\n<p>Importer la configuration slapd.conf d\u00e9j\u00e0 utilis\u00e9 au <a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/samba-deployer-une-infrastructure-active-director\/#chapitre2-1-1\">d\u00e9but du TP<\/a>. Dans ce fichier, supprimer toutes les r\u00e9f\u00e9rences aux mots <strong>Samba<\/strong> et <strong>samba<\/strong>.<\/p>\n<pre><code>debian9:~# cd \/etc\/ldap\n\ndebian9:~# vi \/etc\/ldap\/slapd.conf\n\ndebian9:~# chown openldap:openldap \/etc\/ldap\/slapd.conf\n\ndebian9:~# rm -rf \/var\/lib\/ldap\/*\n\ndebian9:~# \/etc\/init.d\/slapd start\n\ndebian9:~# vi \/root\/import_racine.ldif\ndn: dc=formation,dc=fr\nobjectclass: dcObject\nobjectclass: organization\no: formation\ndc: formation\n\ndn: ou=users,dc=formation,dc=fr\nobjectclass: top\nobjectclass: organizationalUnit\nou: users\n\ndn: ou=groups,dc=formation,dc=fr\nobjectclass: top\nobjectclass: organizationalUnit\nou: groups\n\n\n<\/code><\/pre>\n<p>Import de la racine dans OpenLDAP<\/p>\n<pre><code>debian9:~# ldapadd -x -D \"cn=admin,dc=formation,dc=fr\" -w 'Pa$$w0rd' -f \/root\/import_racine.ldif\nadding new entry \"dc=formation,dc=fr\"\nadding new entry \"ou=users,dc=formation,dc=fr\"\nadding new entry \"ou=groups,dc=formation,dc=fr\"\n\ndebian9:~# ldapsearch -x -b \"dc=formation,dc=fr\"\n<\/code><\/pre>\n<p>Installation de LSC et des d\u00e9pendances<\/p>\n<pre><code>debian9:~# vi \/etc\/apt\/sources.list.d\/lsc-project.list\ndeb     http:\/\/lsc-project.org\/debian lsc main\ndeb-src http:\/\/lsc-project.org\/debian lsc main\n\ndebian9:~# wget -O - http:\/\/ltb-project.org\/wiki\/lib\/RPM-GPG-KEY-LTB-project | sudo apt-key add -\n\ndebian9:~# apt-get update\n\ndebian9:~# apt-get install lsc\n\ndebian9:\/etc\/ldap# apt-get install lsc\n\ndebian9:\/etc\/ldap# lsc\n2019\/10\/22 18:35:56 [lsc] No java executable found on PATH or in JAVA_HOME! Aborting.\n2019\/10\/22 18:35:56 [lsc] Define JAVA_HOME or adjust your PATH variable to include java.\n\ndebian9:\/etc\/ldap# apt-get install openjdk-8-jre\n\ndebian9:\/etc\/ldap# lsc\nusage: lsc\n -a,--asynchronous-synchronize    Asynchronous synchronization task\n                                       (one of the available tasks or\n                                       'all')\n -c,--clean                       Cleaning type (one of the available\n                                       tasks or 'all')\n -f,--config                      Specify configuration directory\n -h,--help                             Get this text\n -i,--time-limit                  Time limit in parallel server mode\n                                       in seconds (default: 3600)\n -n,--dryrun                           Don't update the directory at all\n -nc,--nocreate                        Don't create any entry\n -nd,--nodelete                        Don't delete\n -nr,--nomodrdn                        Don't rename (MODRDN)\n -nu,--noupdate                        Don't update\n -s,--synchronize                 Synchronization task (one of the\n                                       available tasks or 'all')\n -t,--threads                     Number of parallel threads to\n                                       synchronize a task (default: 5)\n -v,--validate                         Validate configuration (check\n                                       connections ...)\n -x,--convert                          Convert lsc.properties to lsc.xml\n                                       (-f is mandatory while converting)\n<\/code><\/pre>\n<pre><code>debian9:~# mv \/etc\/lsc\/lsc.xml \/etc\/lsc\/lsc.xml.orig\ndebian9:~# vi \/etc\/lsc\/lsc.xml\n<\/code><\/pre>\n<p><a href=\"media\/15302692369419\/lsc.xml\">Fichier lsc.xml<\/a><\/p>\n<p>Commande pour debug des annuaires OpenLDAP et AD<\/p>\n<pre><code># vi \/root\/import_racine.ldif\ndn: uid=colombet,ou=users,dc=formation,dc=fr\nobjectclass: top\nobjectclass: person\nobjectclass: organizationalPerson\nobjectclass: inetOrgPerson\nuid: colombet\ncn: jerome\nsn: colombet\n\n# ldapadd -x -D \"cn=admin,dc=formation,dc=fr\" -w 'Pa$$w0rd' -f \/root\/import_racine.ldif\n\n# ldapsearch -xLLL -H ldap:\/\/10.0.2.9:389 -D \"CN=Administrator,CN=Users,dc=formation,dc=fr\" -W -b \"dc=formation,dc=fr\"\n<\/code><\/pre>\n<h3>sshPublicKey &#8211; stocker vos cl\u00e9s publiques SSH dans AD <a name=\"chapitre4-2-4\"><\/a><\/h3>\n<p><a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/samba-stocker-vos-cles-publiques-ssh-dans-active-directory\/\">https:\/\/homepages.lcc-toulouse.fr\/colombet\/samba-stocker-vos-cles-publiques-ssh-dans-active-directory\/<\/a><\/p>\n<h4>Dokuwiki <a name=\"chapitre4-2-5\"><\/a><\/h4>\n<p>Installer le serveur web apache2<\/p>\n<pre><code>root@debian9:# apt-get install apache2\n<\/code><\/pre>\n<p>Activer le module authnz_ldap pour apache2<\/p>\n<pre><code>root@debian9:# a2enmod authnz_ldap\n<\/code><\/pre>\n<p>Editer le fichier par d\u00e9faut<\/p>\n<pre><code>root@debian9:# vi \/etc\/apache2\/sites-enabled\/000-default.conf\n\n        AuthName \"AD authentification\"\n        AuthType basic\n        AuthBasicProvider ldap\n        AuthLDAPGroupAttribute member\n        AuthLDAPGroupAttributeIsDN On\n        AuthLDAPBindDN CN=Administrator,CN=Users,DC=formation,DC=fr\n        AuthLDAPBindPassword \"Pa$$w0rd\"\n        AuthLDAPURL \"ldap:\/\/10.X.X.X:3268\/?sAMAccountName?sub\"\n        #Require ldap-group CN=informatique,OU=groups,DC=formation,DC=fr\n        Require valid-user\n\n<\/code><\/pre>\n<p>Red\u00e9marrer apache2 :<\/p>\n<pre><code>root@debian9:# mkdir \/var\/www\/html\/ldap\nroot@debian9:# \/etc\/init.d\/apache2 restart\n<\/code><\/pre>\n<p>Tester via un navigateur :<\/p>\n<pre><code>http:\/\/10.0.2.14\/ldap\n<\/code><\/pre>\n<h4>DokuWiki <a name=\"chapitre4-2-6\"><\/a><\/h4>\n<p>Installation des pr\u00e9-requis pour DokuWiki<\/p>\n<pre><code>root@debian9:~# apt install wget bash-completion zip unzip curl imagemagick\n<\/code><\/pre>\n<p>V\u00e9rifier le nom de la VM sinon la renommer<\/p>\n<pre><code>root@debian9:~# hostnamectl\n   Static hostname: debian9.formation.fr\n         Icon name: computer-vm\n           Chassis: vm\n        Machine ID: 7dc75f17f7ab47e4bdf0a813e865ff13\n           Boot ID: 8afcf77b249e43debfa0e714b0c5bcf2\n    Virtualization: oracle\n  Operating System: Debian GNU\/Linux 9 (stretch)\n            Kernel: Linux 4.9.0-8-amd64\n      Architecture: x86-64\n\nroot@debian9:~# hostnamectl set-hostname debian9.formation.fr\n<\/code><\/pre>\n<p>DokuWiki est une plateforme web de type wiki CMS, elle est \u00e9crite en langage de programmation PHP c\u00f4t\u00e9 serveur. Afin d&rsquo;ex\u00e9cuter les scripts PHP de l&rsquo;application, un serveur Web, tel que le serveur HTTP Apache, et une passerelle de traitement PHP doivent \u00eatre install\u00e9s et op\u00e9rationnels sur la VM. Installer sur la machine dabian9 Apache et l&rsquo;interpr\u00e9teur PHP7 ainsi que tous les modules PHP n\u00e9cessaires au bon fonctionnement de l&rsquo;application. Pour cela, ex\u00e9cuter la commande suivante dans votre console.<\/p>\n<pre><code>root@debian9:~# apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-curl php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-intl php-imagick php7.0-xml php-ldap\n<\/code><\/pre>\n<p>V\u00e9rifier la bonne marche du serveur :<\/p>\n<pre><code>root@debian9:~# \/etc\/init.d\/apache2 status\n\u25cf apache2.service - The Apache HTTP Server\n   Loaded: loaded (\/lib\/systemd\/system\/apache2.service; enabled; vendor preset: enabled)\n   Active: active (running) since Tue 2018-09-25 13:48:29 CEST; 56s ago\n  Process: 13588 ExecStop=\/usr\/sbin\/apachectl stop (code=exited, status=0\/SUCCESS)\n  Process: 13594 ExecStart=\/usr\/sbin\/apachectl start (code=exited, status=0\/SUCCESS)\n Main PID: 13599 (apache2)\n    Tasks: 6 (limit: 4915)\n   CGroup: \/system.slice\/apache2.service\n           \u251c\u250013599 \/usr\/sbin\/apache2 -k start\n           \u251c\u250013601 \/usr\/sbin\/apache2 -k start\n           \u251c\u250013602 \/usr\/sbin\/apache2 -k start\n           \u251c\u250013603 \/usr\/sbin\/apache2 -k start\n           \u251c\u250013604 \/usr\/sbin\/apache2 -k start\n           \u2514\u250013605 \/usr\/sbin\/apache2 -k start\n\nSep 25 13:48:29 debian9.formation.fr systemd[1]: Stopped The Apache HTTP Server.\nSep 25 13:48:29 debian9.formation.fr systemd[1]: Starting The Apache HTTP Server...\nSep 25 13:48:29 debian9.formation.fr systemd[1]: Started The Apache HTTP Server.\n<\/code><\/pre>\n<p>Activer le module apache de r\u00e9\u00e9criture :<\/p>\n<pre><code>root@debian9:~# a2enmod rewrite\nEnabling module rewrite.\nTo activate the new configuration, you need to run:\n  systemctl restart apache2\n<\/code><\/pre>\n<p>Depuis votre navigateur local acc\u00e9der au site web :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/Picture1.png\" alt=\"Picture1\" \/><\/p>\n<blockquote><p>\n  http:\/\/10.X.X.X\/\n<\/p><\/blockquote>\n<p>Editer le fichier \u00ab <em>\/etc\/php\/7.0\/apache2\/php.ini<\/em> \u00bb et modifier la timezone \u00e0 la ligne 924<\/p>\n<pre><code>...\n[Date]\n; Defines the default timezone used by the date functions\n; http:\/\/php.net\/date.timezone\ndate.timezone = Europe\/Paris\n...\n<\/code><\/pre>\n<p>Cr\u00e9er un fichier PHP en ex\u00e9cutant la commande suivante et v\u00e9rifier la timezone renseign\u00e9 pr\u00e9c\u00e9demment.<\/p>\n<pre><code>root@debian9:~#echo ''| tee \/var\/www\/html\/info.php\nroot@debian9:~# \/etc\/init.d\/apache2 restart\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/15378764916331.png\" alt=\"-w742\" \/><\/p>\n<blockquote><p>\n  http:\/\/10.X.X.X:XXXX\/info.php. D\u00e9filer vers le bas jusqu&rsquo;au r\u00e9glage de la date pour v\u00e9rifier la configuration du fuseau horaire.\n<\/p><\/blockquote>\n<pre><code>root@debian9:~# wget https:\/\/download.dokuwiki.org\/src\/dokuwiki\/dokuwiki-stable.tgz \nroot@debian9:~# ll\ntotal 3.6M\ndrwxr-xr-x 8 1001 1002 4.0K May  3 08:36 dokuwiki-2018-04-22a\n-rw-r--r-- 1 root root 3.6M May  3 08:40 dokuwiki-stable.tgz\n\nroot@debian9:~# rm \/var\/www\/html\/index.html\n\nroot@debian9:~# rm \/var\/www\/html\/info.php\n\nroot@debian9:~# cp -rf dokuwiki-2018-04-22a\/* \/var\/www\/html\/\nroot@debian9:~# cp -rf dokuwiki-2018-04-22a\/.htaccess.dist \/var\/www\/html\/\nroot@debian9:~# chown -R www-data:www-data \/var\/www\/html\/\nroot@debian9:~# ls -al \/var\/www\/html\/\ntotal 108\ndrwxr-xr-x  8 www-data www-data  4096 Sep 25 14:04 .\ndrwxr-xr-x  3 root     root      4096 Sep 25 13:42 ..\ndrwxr-xr-x  2 www-data www-data  4096 Sep 25 14:04 bin\ndrwxr-xr-x  2 www-data www-data  4096 Sep 25 14:04 conf\n-rw-r--r--  1 www-data www-data 18092 Sep 25 14:04 COPYING\ndrwxr-xr-x 12 www-data www-data  4096 Sep 25 14:04 data\n-rw-r--r--  1 www-data www-data  3547 Sep 25 14:04 doku.php\n-rw-r--r--  1 www-data www-data 19141 Sep 25 14:04 feed.php\ndrwxr-xr-x  8 www-data www-data  4096 Sep 25 14:04 inc\n-rw-r--r--  1 www-data www-data  2097 Sep 25 14:04 index.php\n-rw-r--r--  1 www-data www-data 19233 Sep 25 14:04 install.php\ndrwxr-xr-x  8 www-data www-data  4096 Sep 25 14:04 lib\n-rw-r--r--  1 www-data www-data   306 Sep 25 14:04 README\ndrwxr-xr-x 11 www-data www-data  4096 Sep 25 14:04 vendor\n-rw-r--r--  1 www-data www-data    21 Sep 25 14:04 VERSION\n\n<\/code><\/pre>\n<p>Depuis votre navigateur local acc\u00e9der au site web afin de lancer l&rsquo;installation de DokuWiki :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dokuwiki1.png\" alt=\"dokuwiki1\" \/><\/p>\n<blockquote><p>\n  http:\/\/10.X.X.X:XXXX\/install.php<br \/>\n  <img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dokuwiki2.png\" alt=\"dokuwiki2\" \/><br \/>\n  <img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dokuwiki3.png\" alt=\"dokuwiki3\" \/>\n<\/p><\/blockquote>\n<p>Avant de vous connecter au panneau d&rsquo;administration de DokuWiki, depuis la console, supprimer le fichier d&rsquo;installation et s\u00e9curiser les fichiers de configuration de DokuWiki.<\/p>\n<pre><code>root@debian9:~# rm -rf \/var\/www\/html\/install.php\nroot@debian9:~# chown -R root:root \/var\/www\/html\/\nroot@debian9:~# chown -R www-data:root \/var\/www\/html\/data\/\nroot@debian9:~# chown -R www-data:root \/var\/www\/html\/lib\/plugins\/\nroot@debian9:~# chown -R www-data:root \/var\/www\/html\/lib\/tpl\/\nroot@debian9:~# chown -R www-data:root \/var\/www\/html\/conf\/local.php*\nroot@debian9:~# chown -R www-data:root \/var\/www\/html\/conf\/users.auth.php\nroot@debian9:~# chown -R www-data:root \/var\/www\/html\/conf\/acl.auth.php\nroot@debian9:~# chown -R www-data:root \/var\/www\/html\/conf\/plugins.local.php*\n<\/code><\/pre>\n<p>Connecrez-vous \u00e0 la console d&rsquo;administration web de DokuWiki afin d&rsquo;activer le plugin Active Directory Auth Plugin dans le gestionnaire d&rsquo;extension :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/dokuwiki4.png\" alt=\"dokuwiki4\" \/><\/p>\n<p>Editer le fichier de configuration de DokuWiki afin de prendre en compte l&rsquo;authentification depuis l&rsquo;Active Directory :<\/p>\n<pre><code>root@debian9:~# vi \/var\/www\/html\/conf\/local.php\n$conf['title'] = 'Formation.fr';\n$conf['lang'] = 'fr';\n$conf['license'] = '';\n$conf['useacl'] = 1;\n$conf['superuser'] = '@admin';\n$conf['disableactions'] = 'register';\n\n$conf['plugin']['authad']['debug'] = 1;\n$conf['authtype'] = 'authad';\n$conf['plugin']['authad']['account_suffix'] = '@formation.fr';\n$conf['plugin']['authad']['base_dn'] = 'DC=formation,DC=fr';\n$conf['plugin']['authad']['domain_controllers'] = '10.X.X.X,10.X.X.X';\n\n<\/code><\/pre>\n<h4>FreeRadius <a name=\"chapitre4-2-3\"><\/a><\/h4>\n<p>Ce chapitre va d\u00e9tailler l&rsquo;installation d&rsquo;un service radius via l&rsquo;outils FreeRADIUS afin de cr\u00e9er un serveur institutionnel eduroam. Les instructions suivantes d\u00e9tailleront l&rsquo;interconnexion de SaMBa4 et de l&rsquo;utilitaire ntlm_auth pour effectuer les authentifications.<\/p>\n<p>Il y aura quatre fichiers a d\u00e9finir pour personnaliser la configuration du serveur FreeRADIUS : eap.conf, proxy.conf, clients.conf, et sites-enabled\/inner-tunnel. Pour utiliser MS-CHAPv2 (int\u00e9gration avec Active Directory), il faudra modifier les modules\/mschap.<\/p>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Avant de commencer, il faut savoir qu&rsquo;il est plus facile de partir d&rsquo;une installation fraiche de FreeRADIUS et de configurer eduroam que de modifier votre instance FreeRADIUS d\u00e9j\u00e0 en production.\n<\/p><\/blockquote>\n<p>Dans un premier temps installer le service FreeRADIUS :<\/p>\n<pre><code>root@debian9:~# apt-get install freeradius krb5-user winbind samba freeradius-utils samba-vfs-modules\n<\/code><\/pre>\n<p>Param\u00e9trer le fichier \u00ab <em>\/etc\/krb5.conf<\/em> \u00bb<\/p>\n<pre><code>root@debian9:~# vi \/etc\/krb5.conf\n[libdefaults]\n    default_realm = FORMATION.FR\n        ticket_lifetime = 600\n        dns_lookup_realm = yes\n        dns_lookup_kdc = yes\n        renew_lifetime = 7d\n\n[realms]\n    FORMATION.FR = {\n        kdc = 10.X.X.X\n        kdc = 10.X.X.X\n        admin_server = 10.X.X.X 10.X.X.X\n    }\n<\/code><\/pre>\n<p>Tester le configuration Kerberos<\/p>\n<pre><code>root@debian9:~# kinit -V &#99;&#x6f;l&#111;&#x6d;b&#101;&#x74;&#64;&#70;&#x4f;R&#77;&#x41;T&#73;&#x4f;N&#46;&#x46;R\nUsing default cache: \/tmp\/krb5cc_0\nUsing principal: &#99;&#x6f;l&#x6f;m&#98;&#x65;&#116;&#x40;F&#79;&#x52;&#77;&#x41;T&#x49;&#x4f;&#78;&#x2e;F&#x52;\nPassword for co&#108;&#111;&#109;&#x62;&#x65;&#x74;&#x40;FO&#82;&#77;&#65;&#x54;&#x49;&#x4f;&#x4e;&#46;F&#82;:\nAuthenticated to Kerberos v5\n\nroot@debian9:~# klist\nTicket cache: FILE:\/tmp\/krb5cc_0\nDefault principal: &#x63;o&#x6c;&#111;m&#x62;&#101;&#x74;&#x40;F&#x4f;&#82;M&#x41;&#84;&#x49;&#79;N&#x2e;&#70;R\n\nValid starting       Expires              Service principal\n09\/26\/2018 10:52:37  09\/26\/2018 11:02:34  &#107;&#x72;b&#116;&#x67;&#116;&#x2f;F&#79;&#x52;M&#x41;&#x54;&#73;&#x4f;N&#46;&#x46;R&#x40;&#x46;&#79;&#x52;M&#65;&#x54;&#73;&#x4f;N&#46;&#x46;R\n    renew until 10\/03\/2018 10:52:34\n<\/code><\/pre>\n<p>Editer le fichier \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb<\/p>\n<pre><code>root@debian9:~# cp \/etc\/samba\/smb.conf \/etc\/samba\/smb.conf.ori\nroot@debian9:~# 0&amp;gt;\/etc\/samba\/smb.conf\nroot@debian9:~# vi \/etc\/samba\/smb.conf\nworkgroup = FORMATION\nsecurity = ADS\nrealm = FORMATION.FR\nencrypt passwords = yes\nidmap config *:backend = rid\nidmap config *:range = 20000000-29999999\nwinbind trusted domains only = no\nwinbind use default domain = yes\nwinbind enum users  = yes\nwinbind enum groups = yes\nwinbind refresh tickets = yes\ntemplate shell = \/bin\/bash\nload printers = no\ndisable spoolss = yes\nprinting = bsd\nprintcap name = \/dev\/null\n<\/code><\/pre>\n<p>Tester le bonne marche du fichier \u00ab <em>\/etc\/samba\/smb.conf<\/em> \u00bb<\/p>\n<pre><code>root@debian9:~# testparm\nLoad smb config files from \/etc\/samba\/smb.conf\nrlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)\nLoaded services file OK.\nServer role: ROLE_DOMAIN_MEMBER\n<\/code><\/pre>\n<pre><code>root@debian9:~# vi \/etc\/security\/limits.conf\n* - nofile 16384\n<\/code><\/pre>\n<p>Suite \u00e0 la modification du param\u00e8tre pr\u00e9c\u00e9dente vous devez rebooter votre machine<\/p>\n<p>D\u00e9sactiver le cache winbind :<\/p>\n<pre><code>root@debian9:~# vi \/etc\/default\/winbind\nWINBINDD_OPTS = \"-n\"\n<\/code><\/pre>\n<p>Rejoindre le domaine <strong>FORMATION.FR<\/strong><\/p>\n<pre><code>root@debian9:~# net ads join -U Administrator\nEnter Administrator's password:\nUsing short domain name -- FORMATION\nJoined 'DEBIAN9' to dns domain 'formation.fr'\n<\/code><\/pre>\n<blockquote><p>\n  <strong><em>Remarque<\/em><\/strong> : Si vous souhaitez sortir du domaine : root@debian9:~# net ads leave -U Administrator\n<\/p><\/blockquote>\n<p>V\u00e9rifier la jonction au domaine<\/p>\n<pre><code>root@debian9:~# net rpc testjoin\nJoin to 'FORMATION' is OK\n\nroot@debian9:~# wbinfo --online-status\nBUILTIN : online\nDEBIAN9 : online\nWORKGROUP : online\n\nroot@debian9:~# net ads info\nLDAP server: 10.X.X.X\nLDAP server name: dc2ad.formation.fr\nRealm: FORMATION.FR\nBind Path: dc=FORMATION,dc=FR\nLDAP port: 389\nServer time: Wed, 26 Sep 2018 12:55:15 CEST\nKDC server: 10.X.X.X\nServer time offset: 1\nLast machine account password change: Wed, 26 Sep 2018 11:02:09 CEST\n<\/code><\/pre>\n<p>Afficher la liste des utilisateurs du domaine<\/p>\n<pre><code>root@debian9:~# wbinfo -u\ncolombet\nadministrator\ndns-dc1ad\ndns-dc2ad\nkrbtgt\nguest\n<\/code><\/pre>\n<p>Afficher la liste des groupes du domaine<\/p>\n<pre><code>root@debian9:~# wbinfo -g\nallowed rodc password replication group\nenterprise read-only domain controllers\ndenied rodc password replication group\nread-only domain controllers\ngroup policy creator owners\nras and ias servers\ndomain controllers\nenterprise admins\ndomain computers\ncert publishers\ndnsupdateproxy\ndomain admins\ndomain guests\nschema admins\ndomain users\ndnsadmins\n<\/code><\/pre>\n<p>Il y a un probl\u00e8me entre FreeRADIUS et mschap \/ winbind. L&rsquo;utilisateur freerad ne peut pas utiliser le dameon winbind et provoque l&rsquo;erreur :<\/p>\n<pre><code>Exec-Program output: Reading winbind reply failed! (0xc0000001)\nExec-Program-Wait: plaintext: Reading winbind reply failed! (0xc0000001)\n<\/code><\/pre>\n<p>Il faut v\u00e9rifier les droits sur le r\u00e9pertoire \u00ab <em>\/var\/lib\/samba\/winbindd_privileged<\/em> \u00bb<\/p>\n<pre><code>root@debian9:~#  ll \/var\/lib\/samba\ntotal 1.4M\n-rw-------  1 root root          412K Sep 26 10:50 account_policy.tdb\n-rw-------  1 root root           696 Sep 26 10:50 group_mapping.tdb\ndrwxr-xr-x 10 root root          4.0K Sep 26 10:50 printers\ndrwxr-xr-x  3 root root          4.0K Sep 26 10:58 private\n-rw-------  1 root root          516K Sep 26 10:50 registry.tdb\n-rw-------  1 root root          412K Sep 26 10:50 share_info.tdb\ndrwxrwx--T  2 root sambashare    4.0K Sep 26 10:50 usershares\n-rw-------  1 root root           32K Sep 26 11:10 winbindd_cache.tdb\ndrwxr-x---  2 root winbindd_priv 4.0K Sep 26 11:09 winbindd_privileged\n<\/code><\/pre>\n<p>Appliquer les droits pour corriger l&rsquo;erreur :<\/p>\n<pre><code>root@debian9:~#  usermod -a -G winbindd_priv freerad\nroot@debian9:~#  chown root:winbindd_priv \/var\/lib\/samba\/winbindd_privileged\/\n<\/code><\/pre>\n<p>Tester l\u2019authentification sur l&rsquo;AD avec ntlm_auth de SaMBa. Si le status est en <em>success<\/em> on peut configurer FreeRADIUS.<\/p>\n<pre><code>root@debian9:~# ntlm_auth --request-nt-key --domain=FORMATION.FR --username=colombet\nPassword:\nNT_STATUS_OK: Success (0x0)\n\nroot@debian9:~# wbinfo -a colombet%Passw0rd\nplaintext password authentication succeeded\nchallenge\/response password authentication succeeded\n\n<\/code><\/pre>\n<p>Dans le fichier \u00ab <em>eap.conf<\/em> \u00bb, vous devez configurer les m\u00e9thodes de PAE (TTLS, PEAP, ou les deux) que vous pr\u00e9voyez soutenir dans votre \u00e9tablissement (commentaires supprim\u00e9s par souci de concision) :<\/p>\n<pre><code>root@debian9:~# cp \/etc\/freeradius\/3.0\/mods-available\/eap \/etc\/freeradius\/3.0\/mods-available\/eap.orig\nroot@debian9:~# vi \/etc\/freeradius\/3.0\/mods-available\/eap \n\neap {\n  default_eap_type = ttls\n  timer_expire = 60\n  ignore_unknown_eap_types = no\n  cisco_accounting_username_bug = no\n  max_sessions = ${max_requests}\n\n  md5 {\n  }\n\n  leap {\n  }\n\n  tls-config tls-common{\n    certdir = ${confdir}\/certs\n    cadir = ${confdir}\/certs\n    private_key_file = ${certdir}\/serverkey.key\n    certificate_file = ${certdir}\/servercert.cert\n    dh_file = ${certdir}\/dh\n    random_file = ${certdir}\/random\n    cipher_list = \"DEFAULT\"\n    make_cert_command = \"${certdir}\/bootstrap\"\n    cache {\n    enable = no\n    max_entries = 255\n  }\n\n  ttls {\n    tls = tls-common\n    default_eap_type = mschapv2\n    copy_request_to_tunnel = yes\n    use_tunneled_reply = yes\n    virtual_server = \"inner-tunnel\"\n  }\n\n  peap {\n    tls = tls-common\n    default_eap_type = mschapv2\n    copy_request_to_tunnel = yes\n    use_tunneled_reply = yes\n    virtual_server = \"inner-tunnel\"\n  }\n\n    mschapv2 {\n  }\n}\n<\/code><\/pre>\n<p>Dans votre bloc de configuration eap, sp\u00e9cifiez la m\u00e9thode externe EAP (TLS, TTLS ou PEAP) que vous utilisez par d\u00e9faut avec la directive default_eap_type.<\/p>\n<p>Quel que soit le type d&rsquo;EAP, la configuration TLS est n\u00e9cessaire pour d\u00e9finir le certificat pr\u00e9sent\u00e9 \u00e0 vos utilisateurs lorsqu&rsquo;ils cr\u00e9ent leur tunnel crypt\u00e9 vers le serveur RADIUS eduroam.<\/p>\n<p>Pour les tests, il est plus facile d&rsquo;utiliser les certificats fournis avec FreeRADIUS car la configuration du certificat est souvent la partie la plus difficile de ce processus.<\/p>\n<p>Avant d&rsquo;entrer en production, pr\u00e9voir de mettre \u00e0 jour cette configuration avec un certificat de production. Pour une plus grande compatibilit\u00e9 entre les appareils, un certificat sign\u00e9 par une AC commerciale est recommand\u00e9.<\/p>\n<p>Afin de prendre en charge TTLS et\/ou PEAP, les sous-blocs sont d\u00e9finis par d\u00e9faut en mschapv2 car nous utilisons AD comme IdP. Pour utiliser un service de r\u00e9pertoire diff\u00e9rent, il faudra adapter  le type_eap_type par d\u00e9faut dans le bloc ttls ou peap (ou les deux).<\/p>\n<p>\u00ab <em>proxy.conf<\/em> \u00bb a besoin de diff\u00e9rents proxy RADIUS pour router les utilisateurs par domaine et devrait ressembler \u00e0 ce qui suit :<\/p>\n<pre><code>root@debian9:~# cp \/etc\/freeradius\/3.0\/proxy.conf \/etc\/freeradius\/3.0\/proxy.conf.orig\nroot@debian9:~# 0&amp;gt;\/etc\/freeradius\/3.0\/proxy.conf\nroot@debian9:~# vi \/etc\/freeradius\/3.0\/proxy.conf\n\n\nproxy server {\n  default_fallback = no\n  retry_delay = 5\n  retry_count = 3\n  dead_time = 600\n}\n\nrealm NULL {\n}\n\nrealm LOCAL {\n}\n\nrealm formation.fr {\n    type = radius\n    authhost = LOCAL\n    accthost = LOCAL\n}\n\nhome_server rad1.eduroam.fr {\n        type            = auth\n        ipaddr          = 193.49.160.187\n        port            = 1812\n         secret     = \n        require_message_authenticator = yes\n        response_window = 20\n        zombie_period   = 40\n        status_check    = status-server\n        check_interval  = 20\n        num_answers_to_alive = 3\n}\n\nhome_server rad2.eduroam.fr {\n    type            = auth\n    ipaddr          = 193.49.159.82\n    port            = 1812\n    secret      = \n    require_message_authenticator = yes\n    response_window = 20\n    zombie_period   = 40\n    status_check    = status-server\n    check_interval  = 20\n    num_answers_to_alive = 3\n}\n\nhome_server_pool pool-eduroam-fr {\n    type = fail-over\n    home_server = rad1.eduroam.fr\n    home_server = rad2.eduroam.fr\n}\n\nrealm DEFAULT {\n        auth_pool = pool-eduroam-fr\n        nostrip\n}\n<\/code><\/pre>\n<p>Il faut \u00e9galement configurer le fichier clients.conf pour qu&rsquo;il corresponde au fichier \u00ab <em>proxy.conf<\/em> \u00bb :<\/p>\n<pre><code>root@debian9:~# cp \/etc\/freeradius\/3.0\/clients.conf  \/etc\/freeradius\/3.0\/clients.conf.orig\nroot@debian9:~# vi \/etc\/freeradius\/3.0\/clients.conf\n\nclient localhost {\n    ipaddr = 127.0.0.1\n    secret    = \n    require_message_authenticator = no\n    shortname    = localhost\n    nastype        = other\n}\n\nclient rad1.eduroam.fr {\n     secret     = \n     ipaddr = 193.49.160.187\n}\n\nclient rad2.eduroam.fr {\n     secret     = \n     ipaddr     = 193.49.159.82\n}\n<\/code><\/pre>\n<p>Dans notre configuration sites-enabled\/inner-tunnel, nous avons simplement d\u00e9sactiv\u00e9 l&rsquo;authentification par fichiers et par mot de passe UNIX et ajout\u00e9 ntlm_auth pour supporter l&rsquo; Active Directory. Si vous pr\u00e9voyez de transmettre vos requ\u00eates RADIUS par procuration \u00e0 un serveur RADIUS existant, qui \u00e0 son tour est d\u00e9j\u00e0 configur\u00e9 pour s&rsquo;authentifier par rapport \u00e0 votre service d&rsquo;annuaire, cette configuration n&rsquo;est pas n\u00e9cessaire.<\/p>\n<p>Dans les modules\/mschap, les param\u00e8tres suivants doivent \u00eatre modifi\u00e9s.  Les param\u00e8tres de cryptage permettent au mat\u00e9riel de la cl\u00e9 cryptographique d&rsquo;\u00eatre renvoy\u00e9 au NAS et la configuration ntlm_auth utilise l&rsquo;authentification SaMBa4.<\/p>\n<pre><code>root@debian9:~# cp \/etc\/freeradius\/3.0\/mods-enabled\/mschap \/etc\/freeradius\/3.0\/mods-enabled\/mschap.orig\nroot@debian9:~# vi \/etc\/freeradius\/3.0\/mods-enabled\/mschap\n\nmschap {\n  # if use_mppe is not set to no mschap will\n  # add MS-CHAP-MPPE-Keys for MS-CHAPv1 and\n  # MS-MPPE-Recv-Key\/MS-MPPE-Send-Key for MS-CHAPv2\n  # use_mppe= no\n\n  # if mppe is enabled require_encryption makes\n  # encryption moderate\n  # require_encryption = yes\n\n  # require_strong always requires 128 bit key\n  # encryption\n  # require_strong = yes\n\n  # Windows sends us a username in the form of\n  # DOMAIN\\user, but sends the challenge response\n  # based on only the user portion.  This hack\n  # corrects for that incorrect behavior.\n  with_ntdomain_hack = yes\n\n  # Configure to use your local NTLM authentication mechanism\n  ntlm_auth = \"\/usr\/bin\/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}\"\n\n}\n<\/code><\/pre>\n<p>Ajouter aux fichiers sites-enabled\/default et sites-enabled\/inner-tunnel le module d&rsquo;authentification ntlm_auth<\/p>\n<pre><code>root@debian9:~# vi \/etc\/freeradius\/3.0\/sites-enabled\/default &amp;amp;&amp;amp; vi \/etc\/freeradius\/3.0\/sites-enabled\/inner-tunnel\nauthenticate {\n        ...\n        ntlm_auth\n        ...\n}\n<\/code><\/pre>\n<p>Relancer FreeRADIUS et simuler une connexion avec le client radtest<\/p>\n<pre><code>root@debian9:~# service freeradius restart\nroot@debian9:~# radtest -t mschap colombet Passw0rd localhost 0 \"testing123\"\nSent Access-Request Id 128 from 0.0.0.0:60906 to 127.0.0.1:1812 length 134\n    User-Name = \"colombet\"\n    MS-CHAP-Password = \"Passw0rd\"\n    NAS-IP-Address = 127.0.1.1\n    NAS-Port = 0\n    Message-Authenticator = 0x00\n    Cleartext-Password = \"Passw0rd\"\n    MS-CHAP-Challenge = 0x531f682468007286\n    MS-CHAP-Response = 0x0001000000000000000000000000000000000000000000000000377b5e4970e10837cccf17cd9bc8ee2491c737e3de7fc29f\nReceived Access-Accept Id 128 from 127.0.0.1:1812 to 0.0.0.0:0 length 84\n    MS-CHAP-MPPE-Keys = 0x0000000000000000c7490004b726697b3a8f42295eb6f6cc\n    MS-MPPE-Encryption-Policy = Encryption-Allowed\n    MS-MPPE-Encryption-Types = RC4-40or128-bit-Allowed\n<\/code><\/pre>\n<p>cf : https:\/\/wiki.cyberblabla.fr\/doku.php?id=configuration-radius<\/p>\n<h4>NFSv4 <a name=\"chapitre4-2-7\"><\/a><\/h4>\n<p>Configurer notre serveur SaMBa4 pour qu&rsquo;il int\u00e8gre le r\u00f4le de serveur nfs4.<\/p>\n<p>Sur le serveur de DC1AD<\/p>\n<pre><code>dc1ad:~# apt-get install nfs-kernel-server\n<\/code><\/pre>\n<p>Cr\u00e9ation d&rsquo;un utilisateur nfs-user pour le service NFS :<\/p>\n<pre><code>dc1ad:~# samba-tool user create nfs-user\nNote: samba-tool user add is deprecated.  Please use samba-tool user create for the same function.\nNew Password: Pa$$w0rd\nRetype Password: Pa$$w0rd\nUser 'nfs-user' created successfully\n\ndc1ad:~# samba-tool user setexpiry nfs-user --noexpiry\nExpiry for user 'nfs-user' disabled.\n<\/code><\/pre>\n<p>Copier la keytab sur un client linux avec l&rsquo;authentification SSSD activ\u00e9e :<\/p>\n<pre><code>dc1ad:~# samba-tool spn add nfs\/samba.krb nfs-user\n\ndc1ad:~# samba-tool domain exportkeytab \/etc\/krb5.keytab --principal=nfs\/samba.krb\nExport one principal to \/etc\/krb5.keytab\n\ndc1ad:~# samba-tool domain exportkeytab \/etc\/krb5.keytab --principal=nfs\/SAMBA$\nExport one principal to \/etc\/krb5.keytab\n\ndc1ad:~# scp \/etc\/krb5.keytab 10.X.X.X:\/etc\/\n\n<\/code><\/pre>\n<p>Le service NFSv4 d\u00e9pend de l&rsquo;outil nfs-kernel-server, il doit \u00eatre install\u00e9 et configur\u00e9 comme suit car le montage NFSv4 se fait par une authentification Kerberos 5. Pour cela, modifier le fichier  \u00ab <em>\/etc\/default\/nfs-kernel-server<\/em> \u00bb :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/default\/nfs-kernel-server\n<\/code><\/pre>\n<p>Exporter les homes dans le fichier  \u00ab <em>\/etc\/exports<\/em> \u00bb avec une protection Kerberos :<\/p>\n<pre><code>dc1ad:~# vi \/etc\/exports\n[...]\n\/home gss\/krb5(rw,insecure,fsid=0,async,no_subtree_check,anonuid=65534,anongid=65534)\n<\/code><\/pre>\n<pre><code>dc1ad:~# exportfs -av\nexporting gss\/krb5:\/home\n<\/code><\/pre>\n<p>Modifier le fichier \u00ab <em>\/etc\/idmapd.conf<\/em> \u00bb :<\/p>\n<pre><code>dc1ad:~#Domain = krb\n<\/code><\/pre>\n<p>Red\u00e9marrer le service nfs-kernel-server:<\/p>\n<pre><code>dc1ad:~# service nfs-kernel-server restart\n<\/code><\/pre>\n<p>Montage manuelle du \/home<\/p>\n<pre><code>root@debian9:\/etc# mount -t nfs4 -o sec=krb5 10.X.X.X:\/ \/home\/\nmount: wrong fs type, bad option, bad superblock on 10.X.X.X:\/,\n       missing codepage or helper program, or other error\n       (for several filesystems (e.g. nfs, cifs) you might\n       need a \/sbin\/mount. helper program)\n\n       In some cases useful info is found in syslog - try\n       dmesg | tail or so.\n<\/code><\/pre>\n<pre><code>root@debian9:\/etc# apt-get install nfs-common\n<\/code><\/pre>\n<p>cf : https:\/\/www-fourier.ujf-grenoble.fr\/informatique\/doku.php?id=samba4<\/p>\n<h4>CUPS <a name=\"chapitre4-2-8\"><\/a><\/h4>\n<p>Il s&rsquo;agit d&rsquo;un serveur d&rsquo;impression ge\u0301rant les files d&rsquo;attente, ainsi que le partage des imprimantes pour des postes clients d&rsquo;un r\u00e9seau. Site officiel : http:\/\/www.cups.org\/<\/p>\n<p>En configurant des imprimantes au niveau de CUPS, SaMBa est capable de dialoguer avec ce service pour les proposer a\u0300 ses clients Windows, Linux, Mac. CUPS propose des outils de gestion des imprimantes pour SaMBa afin de ne pas avoir a\u0300 installer les drivers sur les postes clients. Le serveur d&rsquo;impression peut ainsi les mettre a\u0300 disposition directement.<\/p>\n<p>Samba se base sur les imprimantes de\u0301finies dans CUPS pour proposer le service d&rsquo;impression a\u0300 ses clients. Il faut donc commencer par configurer ce service.<\/p>\n<p>La configuration se fait via une un navigateur internet et en saisissant l&rsquo;URL http:\/\/:631<\/p>\n<p>La configuration par de\u0301faut de cet outil d&rsquo;administration n&rsquo;autorise que les connexions venant de la machine locale. Il faut donc commencer par donner la possibilite\u0301 d&rsquo;y acce\u0301der par une autre machine.<\/p>\n<p>Installer le service CUPS<\/p>\n<pre><code>root@spool:~# apt-get update\nroot@spool:~# apt-get install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind\n<\/code><\/pre>\n<p>Modifier le fichier \/etc\/cups\/cupsd.conf<\/p>\n<pre><code>[...]\n**Listen 0.0.0.0:631**\n\n# Restrict access to the server...\n\n  Order allow,deny\n  **Allow all**\n\n# Restrict access to the admin pages...\n\n  Order allow,deny\n  Allow all\n\n[...]\n<\/code><\/pre>\n<p>Relancer CUPS<\/p>\n<pre><code>root@spool:~# \/etc\/init.d\/cups restart\n<\/code><\/pre>\n<p>Configurer SaMBa4 en serveur d&rsquo;impression :<\/p>\n<pre><code>root@spool:~# vi \/etc\/samba\/smb.conf\n\n[global]\n   workgroup = FORMATION\n   security = ADS\n   netbios name = debian9\n   realm = FORMATION.FR\n   encrypt passwords = yes\n\n   dns forwarder = 10.X.X.X\n\n   idmap config * : backend = tdb\n   idmap config *:range = 50000-1000000\n\n   template homedir = \/home\/%U\n   template shell = \/bin\/bash\n   winbind use default domain = true\n   winbind offline logon = false\n   winbind nss info = rfc2307\n   winbind enum users = yes\n   winbind enum groups = yes\n\n   vfs objects = acl_xattr\n   map acl inherit = yes\n   store dos attributes = yes\n\n   # CUPS\n   printcap cache time = 60\n   printcap name = cups\n   printing = cups\n   rpc_server:spoolss = external\n   rpc_daemon:spoolssd = fork\n   use client driver = yes\n\n [printers]\n   comment = All Printers\n   path = \/var\/spool\/samba\n   printable = Yes\n   printing = CUPS\n\n [print$]\n   comment = Printer Drivers\n   path = \/var\/lib\/samba\/printers\n   read only = No\n   writeable = yes\n<\/code><\/pre>\n<p>Joindre la machine spool au domaine FORMATION.FR<\/p>\n<pre><code>root@spool:~# kinit Administrator\nroot@spool:~# \/etc\/init.d\/samba restart \nroot@spool:~# net ads join -U Administrator\nroot@spool:~# vi \/etc\/nsswitch.conf\n\npasswd:         compat winbind\ngroup:          compat winbind\n\n<\/code><\/pre>\n<p>Attribution des privil\u00e8ges <em>print operator<\/em> au compte Administrator :<\/p>\n<pre><code>root@spool:~# net rpc rights grant \"FORMATION\\Domain Admins\" SePrintOperatorPrivilege -U \"FORMATION\\Administrator\"\nEnter FORMATION\\Administrator's password:\nSuccessfully granted rights.\n<\/code><\/pre>\n<p>V\u00e9rifier l&rsquo;attribution des privil\u00e8ges :<\/p>\n<pre><code>root@spool:~# net rpc rights list privileges SePrintOperatorPrivilege -U \"FORMATION\\administrator\"\nEnter FORMATION\\administrator's password:\nSePrintOperatorPrivilege:\n  BUILTIN\\Administrators\n  FORMATION\\domain admins\n<\/code><\/pre>\n<p>Cr\u00e9ation des r\u00e9pertoires de spool et du r\u00e9pertoire de stockage des drivers<\/p>\n<pre><code>mkdir -p \/var\/lib\/samba\/printers\nchmod -R 2755 \/var\/lib\/samba\/printers\/\nsetfacl -R -m g:\"domain admins\":rwx \/var\/lib\/samba\/printers\nsetfacl -R -d -m g:\"domain admins\":rwx \/var\/lib\/samba\/printers\nchmod -R g+rwx \/var\/lib\/samba\/printers\nchown -R administrator:\"domain admins\" \/var\/lib\/samba\/printers\nchmod 1777 \/var\/spool\/samba\/\n<\/code><\/pre>\n<p>Afin de g\u00e9rer l&rsquo;upload des drivers, il est recommand\u00e9 de passer par l&rsquo;outils<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/cups.png\" alt=\"cups\" \/><\/p>\n<p>Si vous n&rsquo;avez pas de serveur d&rsquo;impression sur votre SaMBa et que vous avez des messages d&rsquo;erreurs dans votre \/var\/log\/syslog :<\/p>\n<pre><code>Sep 27 11:19:10 dc1ad smbd[3210]: [2018\/09\/27 11:19:10.88096,0] ..\/source3\/printing\/print_standard.c:68(std_pcap_cache_reload)\nSep 27 11:19:10 thor smbd[3210]:   Unable to open printcap file \/etc\/printcap for read!\n<\/code><\/pre>\n<p>Dans ce cas, vous pouvez rajouter les lignes suivante au fichier smb.conf afin de d\u00e9sactiver la fonction CUPS :<\/p>\n<pre><code>[global]\n[...]\nprintcap name = \/dev\/null\nload printers = no\n[...]\n<\/code><\/pre>\n<p>cf : https:\/\/wiki.samba.org\/index.php\/Setting_up_Samba_as_a_Print_Server<br \/>\ncf : https:\/\/www.tecmint.com\/join-ubuntu-to-active-directory-domain-member-samba-winbind\/<\/p>\n<h3>Augmenter le niveau fonctionnel du domaine SaMBa4 <a name=\"chapitre4-3\"><\/a><\/h3>\n<p>Niveaux fonctionnels support\u00e9s par SaMBa4 :<\/p>\n<table>\n<thead>\n<tr>\n<th>Functional Level<\/th>\n<th>Included in Samba Version<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>2012_R2<\/td>\n<td>4.4 et plus*<\/td>\n<\/tr>\n<tr>\n<td>2012<\/td>\n<td>4.4 et plus*<\/td>\n<\/tr>\n<tr>\n<td>2008_R2<\/td>\n<td>4.0 et plus<\/td>\n<\/tr>\n<tr>\n<td>2008<\/td>\n<td>4.0 et plus<\/td>\n<\/tr>\n<tr>\n<td>2003<\/td>\n<td>4.0 et plus<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Afficher l&rsquo;\u00e9tat du domaine fonctionnel :<\/p>\n<pre><code>dc1ad:~# samba-tool domain level show\nDomain and forest function level for domain 'DC=formation,DC=fr'\n\nForest function level: (Windows) 2003\nDomain function level: (Windows) 2003\nLowest function level of a DC: (Windows) 2008 R2\n<\/code><\/pre>\n<p>Augmenter le niveau fonctionnel en Windows 2008 server R2 :<\/p>\n<pre><code>dc1ad:~# samba-tool domain level raise --domain-level=2008_R2\nDomain function level changed!\nAll changes applied successfully!\ndc1ad:~# samba-tool domain level raise --forest-level=2008_R2\nForest function level changed!\nAll changes applied successfully!\n<\/code><\/pre>\n<p>V\u00e9rifier le mont\u00e9e en version du domaine et de la for\u00eat :<\/p>\n<pre><code>dc1ad:~# samba-tool domain level show\nDomain and forest function level for domain 'DC=formation,DC=fr'\n\nForest function level: (Windows) 2008 R2\nDomain function level: (Windows) 2008 R2\nLowest function level of a DC: (Windows) 2008 R2\n<\/code><\/pre>\n<h3>Int\u00e9grer un contr\u00f4leur Windows Server 2008 R2 <a name=\"chapitre4-4\"><\/a><\/h3>\n<p><strong>Joindre un Windows Server 2008 R2 DC \u00e0 un SaMBa4 AD<\/strong><\/p>\n<p>Depuis votre installation fraiche Windows 2008R2 Server, executer la commande <strong>dcpromo.exe<\/strong> et suivre les instructions :<\/p>\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-136-3\" width=\"800\" height=\"600\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/webm\" src=\"https:\/\/www.domoinfo.fr\/wp-content\/uploads\/2018\/10\/srvwin2008-dcpromo.webm?_=3\" \/><a href=\"https:\/\/www.domoinfo.fr\/wp-content\/uploads\/2018\/10\/srvwin2008-dcpromo.webm\">https:\/\/www.domoinfo.fr\/wp-content\/uploads\/2018\/10\/srvwin2008-dcpromo.webm<\/a><\/video><\/div>\n<p><strong>Synchroniser SYSVOL via une tache automatique<\/strong><\/p>\n<ul>\n<li>Installer le kit de ressource <a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=17657\">Microsoft Windows 2003 Resource Kit Tools<\/a>.<\/li>\n<li>Cr\u00e9er un fichier REG avec les informations suivantes avec d&rsquo;activer le partage SYSVOL sur le dc2: <\/li>\n<\/ul>\n<pre><code>Windows Registry Editor Version 5.00\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Netlogon\\Parameters]\n\"SysvolReady\"=dword:00000001\n<\/code><\/pre>\n<ul>\n<li>Ex\u00e9cuter le REG et rebooter la machine<\/li>\n<li>V\u00e9rifier la pr\u00e9sence du partage SYSVOL dans l&rsquo;explorateur de fichiers <strong>&#092;dc2\\sysvol\\formation.fr<\/strong><\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/srvwin2008-sysvol.png\" alt=\"srvwin2008-sysvo\" \/><\/p>\n<ul>\n<li>La vid\u00e9o suivant d\u00e9tail la cr\u00e9ation d&rsquo;une tache automatique (\u00e9quivalent au RSYNC sous linux) afin de synchroniser de mani\u00e8re unidirectionnel le SYSVOL du DC1 vers la DC2 :<\/li>\n<\/ul>\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-136-4\" width=\"800\" height=\"600\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/webm\" src=\"https:\/\/www.domoinfo.fr\/wp-content\/uploads\/2018\/10\/srvwin2008-sysvolreplication.webm?_=4\" \/><a href=\"https:\/\/www.domoinfo.fr\/wp-content\/uploads\/2018\/10\/srvwin2008-sysvolreplication.webm\">https:\/\/www.domoinfo.fr\/wp-content\/uploads\/2018\/10\/srvwin2008-sysvolreplication.webm<\/a><\/video><\/div>\n<ul>\n<li>Se connecter au contr\u00f4leur de domaine Windows Server 2008 R2<\/li>\n<li>Cliquer sur \u00ab\u00a0D\u00e9marrer\u00a0\u00bb, \u00ab\u00a0Executer\u00a0\u00bb, saisir la commande \u00ab\u00a0taskschd.msc\u00a0\u00bb et \u00ab\u00a0Valider\u00a0\u00bb<\/li>\n<li>Clic droit sur la biblioth\u00e8que de taches \/ choisir \u00ab\u00a0Cr\u00e9er une tache\u00a0\u00bb<\/li>\n<li>D\u00e9finir un nom : par exemple \u00ab\u00a0SysVol Replication\u00a0\u00bb<\/li>\n<li>S\u00e9lectionner \u00ab\u00a0Ex\u00e9cuter m\u00eame si l&rsquo;utilisateur n&rsquo;est pas connect\u00e9\u00a0\u00bb<\/li>\n<li>Dans l&rsquo;onglet \u00ab\u00a0D\u00e9clencheur\u00a0\u00bb, cliquer sur le bouton \u00ab\u00a0nouveau\u00a0\u00bb<\/li>\n<li>S\u00e9lectionner \u00ab\u00a0Jour\u00a0\u00bb, cocher \u00ab\u00a0R\u00e9p\u00e9ter la tache toute les : 5 minutes\u00a0\u00bb, \u00ab\u00a0pour une dur\u00e9e : 1 jour\u00a0\u00bb et sauvegarder<\/li>\n<li>Dans l&rsquo;onglet \u00ab\u00a0Actions\u00a0\u00bb, cliquer sur le bouton \u00ab\u00a0nouveau\u00a0\u00bb<\/li>\n<li>Choose \u00ab\u00a0Start a program\u00a0\u00bb and fill the fields with following path\/arguments:<\/li>\n<\/ul>\n<pre><code>Program\/script:               C:\\Program Files (x86)\\Windows Resource Kits\\Tools\\robocopy.exe\nAdd arguments (optional):     \\\\dc1ad\\SYSVOL\\formation.fr\\ C:\\Windows\\SYSVOL\\domain\\ \/mir \/sec\n<\/code><\/pre>\n<ul>\n<li>Sauvegarder l&rsquo;action et sauvegarder la tache.<\/li>\n<li>Une fen\u00eatre vous demande de saisir les identifiants du compte \u00ab\u00a0Administrator\u00a0\u00bb, valider.<\/li>\n<\/ul>\n<p><strong>Afficher les statuts de r\u00e9plication sur Windows DC2<\/strong><\/p>\n<p>Pour afficher la r\u00e9plication entrante sur le Windows DC2 :<\/p>\n<ul>\n<li>Ouvrir une invite de commande.<\/li>\n<li>Utiliser l&rsquo;utilitaire <strong>repadmin<\/strong> pour afficher les \u00e9tats des connexions entrantes :<\/li>\n<\/ul>\n<pre><code>repadmin \/showrepl\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2019\/09\/srvwin2008-repadmin.png\" alt=\"srvwin2008-repadmin\" \/><\/p>\n<p>cf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Joining_a_Windows_Server_2008_\/_2008_R2_DC_to_a_Samba_AD<\/a><br \/>\ncf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Verifying_the_Directory_Replication_Statuses#Displaying_the_Replication_Statuses_on_a_Windows_DC<\/a><br \/>\ncf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Enabling_the_Sysvol_Share_on_a_Windows_DC<\/a><br \/>\ncf : <a href=\"\">https:\/\/wiki.samba.org\/index.php\/Robocopy_based_SysVol_replication_workaround<\/a><\/p>\n<h2>Appr\u00e9hender la m\u00e9thodologie pour r\u00e9ussir le d\u00e9ploiement ou la migration de SaMBa4 dans votre infrastructure : retour d&rsquo;exp\u00e9rience du CNRS \u2013 LCC <a name=\"chapitre5\"><\/a><\/h2>\n<p><a href=\"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-content\/uploads\/sites\/2\/2022\/05\/SaMBa4_retour_d_expe\u0301rience.pdf\">SaMBa4_retour_d_expe\u0301rience<\/a><\/p>\n<h2>R\u00e9f\u00e9rences <a name=\"chapitre6\"><\/a><\/h2>\n<ul>\n<li><a href=\"https:\/\/coagul.org\/drupal\/publication\/contr%C3%B4leur-domaine-samba-et-ldap-sous-debian-etch\">Contr\u00f4leur de domaine avec SaMBa et LDAP sous Debian ETCH<\/a><\/li>\n<li><a href=\"https:\/\/coagul.org\/drupal\/article\/installation-d%E2%80%99-serveur-dns-bind-9-sur-debian\">Installation d\u2019un serveur DNS Bind 9 sur Debian<\/a><\/li>\n<li><a href=\"http:\/\/www.ced-info.com\/administration-reseaux\/pdc-samba-ldap\">PDC Samba + LDAP<\/a><\/li>\n<li><a href=\"https:\/\/wiki.samba.org\/index.php\/Migrating_a_Samba_NT4_Domain_to_Samba_AD_(Classic_Upgrade)\">SambaWiki &#8211; Migrating a Samba NT4 Domain to Samba AD<\/a><\/li>\n<li><a href=\"\">https:\/\/debian-handbook.info\/browse\/fr-FR\/stable\/sect.ldap-directory.html<\/a><\/li>\n<li><a href=\"\">https:\/\/wiki.samba.org\/index.php\/Verifying_the_Directory_Replication_Statuses<\/a><\/li>\n<li><a href=\"\">https:\/\/wiki.samba.org\/index.php\/Client_specific_logging<\/a><\/li>\n<li><a href=\"https:\/\/dev.tranquil.it\/wiki\/SAMBA_-_Migration_Samba3_Samba4\">Tranquil IT &#8211; Migration Samba3 to Samba4 <\/a><\/li>\n<\/ul>\n<h3>Notes :<\/h3>\n<div class=\"footnotes\">\n<hr \/>\n<ol>\n<li id=\"fn-136-note\">\nCapacit\u00e9 d&rsquo;un syst\u00e8me \u00e0 fonctionner avec d\u2019autres produits de mani\u00e8re compatible&#160;<a href=\"#fnref-136-note\" title=\"Revenez au contenu principal.\">&#8617;<\/a>\n<\/li>\n<li id=\"fn-136-othernote\">\n<a href=\"\">http:\/\/pve.proxmox.com\/wiki\/Proxmox_VE_Cluster<\/a>&#160;<a href=\"#fnref-136-othernote\" title=\"Revenez au contenu principal.\">&#8617;<\/a> <a href=\"136-othernote\" title=\"Revenez au contenu principal.\">&#8617;<\/a>\n<\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Vous en avez toujours r\u00eav\u00e9 ! Aujourd\u2019hui, c\u2019est possible avec la solution alternative libre \u00ab SaMBa \u00bb. Disponible sur de nombreuses architectures Linux, SaMBa est le service indispensable de partage de fichiers et d&rsquo;imprimantes entre plateformes Windows et Unix. Depuis sa version 4, SaMBa est \u00e9galement contr\u00f4leur de domaine Active Directory et supporte les protocoles [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[11,12],"tags":[9,18,15,6,14,2,16,4,8,5,17],"class_list":["post-136","post","type-post","status-publish","format-standard","hentry","category-linux","category-samba","tag-active-directory","tag-admx","tag-bind9","tag-cifs","tag-dns","tag-linux","tag-rsync","tag-samba","tag-samba4","tag-smb","tag-sysvol"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paBEVZ-2c","jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":58,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":619,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/posts\/136\/revisions\/619"}],"wp:attachment":[{"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/homepages.lcc-toulouse.fr\/colombet\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}