Ajouter un serveur GNU/Linux dans un Active Directory

 

Second article sur l'intégration entre des serveurs GNU/Linux et des serveurs Active Directory.
Le but ici est d'intégrer notre serveur GNU/Linux dans l'Active Directory et d'avoir un mapping des utilisateurs et groupes de l'AD sur notre serveur GNU/Linux.

Infrastructure

L'infrastructure est la même que pour le précédent article. Un serveur Active Directory 2008 R2 et un serveur Debian 8.

Je repars d'une configuration "vierge" mais certains fichiers sont les mêmes que dans l'article précédent.

 

Configuration de Kerberos

# apt-get install krb5-user libpam-krb5

Configuration de kerberos dans le fichier /etc/krb5.conf

[libdefaults]
default_realm = GUIDTZ-WIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
GUIDTZ-WIN.LOCAL = {
kdc = srv-ad1.guidtz-win.local
admin_server = srv-ad1.guidtz-win.local
}
[domain_realm]
.domain.com = GUIDTZ-WIN.LOCAL
domain.com = GUIDTZ-WIN.LOCAL

 

Test sans la keytab

# kinit Administrator@GUIDTZ-WIN.LOCAL
Password for Administrator@GUIDTZ-WIN.LOCAL:

 

Lister les tickets obtenus

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@GUIDTZ-WIN.LOCAL

Valid starting       Expires              Service principal
19/04/2016 11:14:56  19/04/2016 21:14:56  krbtgt/GUIDTZ-WIN.LOCAL@GUIDTZ-WIN.LOCAL
renew until 26/04/2016 11:14:51

 

Ajouter le serveur au domaine

# apt-get install winbind samba

 

On configure Samba /etc/samba/smb.conf

[global]
workgroup = GUIDTZ-WIN
security = ads
realm = guidtz-win.local
password server = srv-ad1.guidtz-win.local
domain logons = no
template homedir = /home/%D/%U
template shell = /bin/bash
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
domain master = no
local master = no
prefered master = no
os level = 0
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431

On redémarre tout :

# service winbind stop
# service smbd restart
# service winbind start

Joindre le domaine

# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- GUIDTZ-WIN
Joined 'CLOUD' to dns domain 'guidtz-win.local'

# net ads info
LDAP server: 192.168.10.70
LDAP server name: SRV-AD1.guidtz-win.local
Realm: GUIDTZ-WIN.LOCAL
Bind Path: dc=GUIDTZ-WIN,dc=LOCAL
LDAP port: 389
Server time: mer., 20 avril 2016 14:23:04 CEST
KDC server: 192.168.10.70
Server time offset: -1

 

Notre serveur Linux fait partie du domaine Windows.

 

Autres tests :

# service winbind restart

# wbinfo -u
administrator
guest
krbtgt
gcheramy

# wbinfo -g
...
enterprise read-only domain controllers
dnsadmins
dnsupdateproxy
owncloud

 

Mapping des utilisateurs

# apt-get install libnss-winbind

 

On modifie /etc/nsswitch.conf :

passwd:         compat
group:          compat

à

passwd:         compat winbind
group:          compat winbind

 

On test :

# getent passwd
...
administrator:*:16777216:16777220:Administrator:/home/GUIDTZ-WIN/administrator:/bin/bash
guest:*:16777217:16777221:Guest:/home/GUIDTZ-WIN/guest:/bin/bash
krbtgt:*:16777218:16777220:krbtgt:/home/GUIDTZ-WIN/krbtgt:/bin/bash
gcheramy:*:16777219:16777220:Guillaume Chéramy:/home/GUIDTZ-WIN/gcheramy:/bin/bash

# getent group
...
read-only domain controllers:x:16777232:
enterprise read-only domain controllers:x:16777233:
dnsadmins:x:16777234:
dnsupdateproxy:x:16777235:
owncloud:x:16777236:

 

Configurer PAM

# apt-get install libpam-winbind

Ce qui configure pam correctement pour accepter la connexion des utilisateurs.

 

Juste à rajouter cette ligne dans /etc/pam.d/common-session (à la fin) :

session required pam_mkhomedir.so umask=0022 skel=/etc/skel

 

Ce qui va créer automatiquement le répertoire de l'utilisateur à sa première connexion.

# su - gcheramy
Création du répertoire « /home/GUIDTZ-WIN/gcheramy ».

 

On peut jouer ensuite avec sudo pour autoriser certains utilisateurs d'un groupe add particulier à devenir administrateur du serveur Linux.

# apt-get install sudo

# visudo
%admins.nux ALL=(ALL) ALL

Voilà notre serveur GNU/Linux fait partie du domaine.