Dans ce billet nous verrons comment installer un contrôleur de domaine samba sous Debian / Centos (Attention des petits subtilités existent entre les 2 !)
Petit Rappel sur samba
Samba est un vaste projet communautaire visant à rendre interopérable les système Microsoft et Unix/Linux
Il offre des services de partages de fichiers mais également de créer & gérer un domaine NT, depuis samba 4 la fonctionnalité majeure est de pouvoir gérer un contrôleur de domaine AD.
Il est aujourd’hui capable d’officier seul ou d’être ajouté à un domaine existant
- Création et stockage d’objet de domaine AD
- Authentification des utilisateurs et ordinateurs
- Prise en charge des GPO
- Résolution de noms et localisation des ressources d’un domaine AD
- Support du protocole SMB/CIFS
DNS
L’installation d’un premier DC nécessite obligatoirement l’hébergement local de la zone DNS liée à l’AD
Deux services DNS peuvent être utilisés par Samba :
- Module DNS intégré a samba, qui est plus simple à gérer mais beaucoup plus limité
- Bind, plus souple offrant beaucoup plus de fonctionnalités (Transfert de zone, exploiter plusieurs zones d’espaces de nom)
Kerberos
Les contrôleurs de domaine s’appuie sur le protocole Kerberos pour l’authentification, ils font office de centres de distribution de clef Kerberos et fournissent les services suivants :
- Service d’authentification (AS)
- Service d’émission de tickets (TGS)
L’utilisateur s’authentifie après du DC puis utilise ce ticket pour s’authentifier pour chaque service demandé (Partage de fichier, RDS, …)
Il ne transmet jamais son mot de passe au service auquel il souhaite accéder
- Le client s’authentifie après de l’AS (qui valide le login/password auprès de la base AD), le TGS fournit un ticket TGT permettant d’obtenir de futurs tickets de service TS
- Le client préserve le TGT obtenu et demande pour le service solicité un ticket TS
- Le ticket obtenu du TGS permet d’accéder aux ressources du serveur de fichier
A savoir : Le niveau de forêt de Samba ne dépasse pas le Windows Server 2008 R2 Attention si vous avez du 2012 ou 2016
Debian 9
Configurer la résolution de nom local
$ vi /etc/hosts
127.0.0.1 localhost
192.168.1.50 DEB9.domaine.fr DEB9 #Adapter selon votre IP / FQDN
$ vi /etc/hostname
DEB9.domaine.fr #Adapter selon votre FQDN
Redémarrez le serveur si vous changer la configuration réseau
Installer les paquets
apt-get update && apt-get install samba krb5-config winbind smbclient dnsutils ntp
Configurer NTP (Service de temps important dans le fonctionnement d’un domaine)
$vi /etc/ntp.conf
ntpsignsocket /var/lib/samba/ntp_signd #Ajouter la ligne suiante
restrict default nomodify notrap nopeer noquery mssntp # A modifier
Changer le proprietaire du répertoire /var/lib/samba/ntp_signd
chown :ntp /var/lib/samba/ntp_signd
systemctl restart ntpd
Sauvegarder le fichier /etc/samba/smb.conf & /etc/krb5.conf
mv /etc/samba/smb.conf /etc/samba/smb.conf.old
mv /etc/krb5.conf /etc/krb5.conf.old
Créer le domaine AD avec la commande samba-tool
samba-tool domain provision
Realm [DOMAINE]: domaine.fr #Nom de domaine AD
Domain [domaine]: domaine #Nom Netbios du domaine
Server Role (dc, member, standalone) [dc]: dc #Rôle du serveur
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: #Service DNS (Samba par défaut)
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.254]: #Serveur DNS redirecteur
Administrator password: #Mot de passe administrateur du domaine
Retype password:
A l’issue de cette commande auront été générés :
Le fichier de configuration samba «/etc/samba/smb.conf»
Le fichier de configuration kerberos «/var/lib/samba/private/krb5.conf»
Les fichiers de base de données «.ldb» et «.tdb» (Annuaire AD & DNS) dans «/var/lib/samba/private»
Créer un lien symbolique vers le fichier kerberos
ln -s /var/lib/samba/private/krb5.conf /etc/krb5.conf
Démarrez samba (Modifier l’organisation des services pour simplifier)
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc
Vérifier le fonctionnement du domaine
smbclient -L DEB9.domaine.fr -U administrator
Le résultat doit être similaire au suivant
Domain=[DOMAINE] OS=[Windows 6.1] Server=[Samba 4.5.12-Debian]
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.5.12-Debian)
Lister les services gérés par samba
$samba-tool processes
Service PID
-------------------
dnsupdate 599
cldap_server 593
rpc_server 589
nbt_server 590
winbind_server 602
kdc_server 594
notify-daemon 607
ldap_server 592
kccsrv 598
samba 0
dreplsrv 595
dnssrv 600
Vous pouvez vérifier également les enregistrement DNS
$dig DEB9.domaine.fr
DEB9.domaine.fr. IN A 192.168.1.50
$dig -t SRV _ldap._tcp.domaine.fr
;_ldap._tcp.domaine.fr. 900 IN SRV 0 100 389 DEB9.domaine.fr
Pour l’administration de l’annuaire la meilleure et la plus simple méthode est d’utiliser les RSAT windows (Eh oui, Samba 4 est capable de gérer un Contrôleur Active Directory ce qui permet à la plupart des RSAT de fonctionner sous réserve d’avoir rentré le poste windows dans le domaine ! )
Voici sinon quelques commandes utiles
Administration objet Samba
samba-tool user list # Visualiser les comptes utilisateurs
samba-tool user create kfla #Créer un compte utilisateur
samba-tool user delete klfa #Supprimer un compte utilisateur
Administration DNS Samba
samba-tool dns add DEB9 domaine.fr PC1 A 192.168.1.10 -U administrator #Créer un enregistrement A dans le DNS
samba-tool dns delete DEB9 domaine.fr PC1 A 192.168.1.10 -U administrator #Supprimer un enregistrement A dans le DNS
samba-tool dns update DEB9 domaine.fr SRV1 A 192.168.1.20 192.168.1.21 -U administrator #Créer un enregistrement A dans le DNS
samba-tool dns zonecreate DEB9 1.168.192.in-addr.arpa -U administrator #Créer la zone reverse
samba-tool dns add DEB9 1.168.192.in-addr.arpa 50 PTR DEB9.domaine.fr -U administrator #Créer l'enregistrement inverse
L’outil samba-tool est très complet et dispose d’une aide bien faite, n’hésitez pas à le consulter sans modération ;)
Utiliser bind en DNS
apt-get install bind9
samba_upgradedns --verbose --dns-backend=BIND9_DLZ
Génère « /var/lib/samba/private/named.conf » à adapter en fonction de la version de bind
Génère «/var/lib/samba/private/dns.keytab» qui permet a Bind de s’authentifier pour l’enregistrement dynamique
Utiliser le module de bind en fonction de la version utilisée
$vi /var/lib/samba/private/named.conf
#For BIND 9.9.x
#database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";
#For BIND 9.10.x
database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_10.so";
apt-cache show bind9 #Pour avoir la version de bind</pre></code>
Indiquer le fichier keytab a utiliser dans bind
```bash
$vi /etc/named.conf.options
options {
[...]
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
[...]
}
Inclure la directive dans la configuration de bind
$vi /etc/bind/named.conf
include "/var/lib/samba/private/named.conf";
Modifier la configuration de samba pour l’écoute DNS
#vi /etc/samba/smb.conf
[global]
[...]
server services = -dns
[...]
Redémarrer le service samba
systemctl restart samba-ad-dc
CentOS 7
CentOS 7 dispose des paquets firewalld (firewall réseau) et SElinux (firewall applicatif)
il est impératif de les configurer pour le bon fonctionnement Samba/DNS (Dans ce billet la porte ce sera open-bar je vous déconseille de faire la même en production sous peine d’avoir des risques de sécurité)
Ajouter les interfaces réseaux en zones de confiance
firewall-cmd --zone=trusted --change-interface=eth0 (votre interface)
firewall-cmd --reload
Autoriser les applications sur SElinux
Modifier le fichier de configuration /etc/sysconfig/selinux
SELINUX=permissive
Lancer la commande
setenforce 0
Pour la suite vous pouvez vous fier à la procédure ci-haute