Samba en intégration AD (Windows Server 2012) – Tutoriel N°3

Dans ce cours, nous allons voir comment intégrer un poste Linux avec des partages samba dans un domaine Active Directory ( Windows Server 2012 )

Rappel :
Active Directory (AD) est la mise en œuvre par Microsoft des services d’annuaire LDAP pour les systèmes d’exploitation Windows. AD fournit des services centralisés d’identification et d’authentification à un réseau d’ordinateurs WINDOWS et de contrôleur de domaines.
Une arborescence AD comprend :
La forêt : structure hiérarchique d’un ou plusieurs domaines indépendants .C’est l’ensemble de tous les sous domaines Active Directory.
AD utilise les services de Kerberos pour l’authentification et les informations de session.

Au préalable, nous aurons besoin :

D’une machine VM avec Windows Server 2012 (AD et DNS), nous avons créé un domaine comme ci-dessous représenté :

Capture

🙂 Je vous renvoie à l’excellent tutoriel de Benoit Jester pour installer AD 

Nous aurons besoin sur la machine VM linux d’installer les paquets Samba (et WinBind) , Kerberos et NTP.

Samba évidemment permet de gérer le partage en monde hétérogène … Kerberos gère l’authentification réseau sur le domaine AD.

I – NTP et /etc/resolv.conf:

NTP permet de synchroniser avec un serveur de temps la machine Linux et le serveur AD.

apt-get install ntp
vi /etc/ntp.conf
on y ajoute la ligne :
server winserver.formation.local
#server NomADServer.domaine.tld

Il faudra vérifier dans le /etc/resolv.conf que l’on ait bien reçu les informations des DNS du réseau !!!

 II – KRB5-USER

apt-get install krb5-user
# pour utiliser l’authentification Kerberos en tant que client du server AD
Attention à la casse dans l’édition de /etc/krb5.conf

 [libdefaults]

default_realm = FOMATION.LOCAL

[realms]

FOMATION.LOCAL = {
kdc = winserver.formation.local
admin_server =  winserver.formation.local
default_domain = formation.local
}
[domain_realm]
.formation.local=FORMATION.LOCAL
formation.local=FORMATION.LOCAL

[login]
krb4_convert = true
krb4_get_tickets = false

Pour créer le compte machine et faire partie de Active Directory de Windows Server 2012, Kerberos doit tout d’abord être initialisé comme serveur membre faisant partie du domaine AD

Pour créer un ticket administratif pour Kerberos :

[root@/home/tux] kinit michel@FORMATION.LOCAL
Password for michel@FORMATION.LOCAL:
[root@/home/tux] 

klist permet de vérifier l’intégrité du ticket 🙂

Si il n’y a pas de message d’erreur c’est OK.

III – SAMBA – SMB.CONF

[global]
workgroup = FORMATION #Nom de Domaine
password server = WINSERVER.formation.local #NomADServer.domain.tld
realm = FORMATION.LOCAL #domain.tld
security = ADS
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind separator = /
#on peut se connecter en console comme ci-dessous : le séparateur entre le nom de domaine et le user
# lorsqu’on teste le bind avec AD wbinfo -u, on verra
FORMATION+michel

Capture

 

 

template shell = /bin/bash
winbind use default domain = true
#on peut se passer de l’authentification \\domaine\login
winbind offline logon = false
netbios name = DEBIAN
preferred master = no
server string = Samba Server version %v
encrypt passwords = yes
log level = 3
log file = /var/log/samba/%m
max log size = 50
printcap name = cups
printing = cups
winbind enum users = Yes
#samba doit faire appel à Winbind pour gérer ses users
winbind enum groups = Yes
#samba doit faire appel à Winbind pour gérer ses groupes
template homedir = /home/%D/%U
# répertoire créé sur le serveur Linux samba sous home avec le nom de domaine puis le nom du user

[homes]
writable = yes
browsable = no
valid users = %S

[tmp]

comment = Partage SAMBA de tmp
path= /tmp
# NETWORK/USER_AD @NETWORK/GROUP_AD
Valid Users = @”Admins du domaine” , @TECHNIQUE , Administrateur
writable=yes
browseable=yes 

Capture

 

IV – NSSWITCH 

/etc/nsswitch permet d’indiquer comment et dans quel ordre la résolution des noms des machines va se faire, cela peut être le dns, un fichier de hosts 🙁 , etc … et surtout WinBind dans notre cas qui est capable de nous ‘lier’ à l’annuaire Windows 🙂

vi /etc/nsswitch.conf
passwd: files winbind
shadow: files winbind
group: files winbind

V – Règles d’authentification PAM – Pluggable Authentification Module

La machine Linux est régie par des règles d’authentification communes à plusieurs services.
Au lieu que chaque service utilise son propre système d’authentification d’utilisateurs, Linux PAM fournit une bibliothèque dynamique /lib/security contenant les fonctions appropriées à la méthode d’authentification utilisée.

Les fichiers de configuration de PAM sont stockés dans /etc/pam.d/ .Il existe un fichier pour chaque programme du système qui authentifie les utilisateurs.
Ces fichiers se composent de la manière suivante :

Mécanisme           Indicateur de contrôle                     chemin/module             Arguments
4 principaux mécanismes :
AUTH : identification classique(login+mdp)
ACCOUNT : vérification du compte
PASSWORD : vérification du mdp
SESSION : accès aux ressources pendant la session de connexion

Les contrôles (flags) :
SUFFICIENT : on attend 1 succès ou 1 échec du module
REQUIRED : le succès du module est nécessaire pour autoriser le service
REQUISITE : idem que REQUIRED mai sle test s’arrête illico après le 1er échec
OPTIONAL : le succès du module n’est pas vital !

commande cool 🙂 : pam-auth-update

[root@/etc/pam.d] cat common-account

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so
account requisite pam_deny.so
account required pam_permit.so

[root@/etc/pam.d] cat common-auth

auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so

[root@/etc/pam.d] cat common-password

password [success=2 default=ignore] pam_unix.so obscure sha512
password [success=1 default=ignore] pam_winbind.so use_authtok try_first_pass
password requisite pam_deny.so
password required pam_permit.so
password optional pam_gnome_keyring.so

[root@/etc/pam.d] cat common-session

session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_winbind.so
session optional pam_ck_connector.so nox11
session required pam_mkhomedir.so skel=/etc/skel

VI – Redémarrage des serveurs

/etc/init.d/samba restart
/etc/init.d/winbind/restart

VII – Intégration de la machine Linux au domaine AD

[root@/etc/pam.d] net join -U Administrateur
Enter Administrateur’s password: # le mot de passe administrateur de AD
Joined domain FORMATION.

Du côté de AD, on peut vérifier en regardant les machines intégrées et l’on voir bien le nom netBIOS de SMB.CONF (debian dans notre cas)

Capture

 

Pour tester et interroger l’annuaire LDAP :
wbinfo -u #montre tous les users du domaine
wbinfo -g #montre tous les groupes du domaine

VIII – LOGIN

Depuis un terminal Linux :
su – michel

… création du répertoire etc …
#pour tester la connexion

Il ne reste plus qu’à s’authentifier depuis une machine Windows …

Capture1