Samba en mode ADS pour un file server

samba ads jpg

Vous voulez monter un serveur de fichier dans un domaine Active-Directory mais sans devoir payer des licences à prix d'or pour un Windows serveur ?

Simplement: utilisez Samba en mode ADS.

Prérequis :

  • Connaître un tant soit peu Active Directory, sur le principe et sur le fonctionnement.
  • Connaître Linux un minimum également et pouvoir s'y retrouver sur les principes réseaux.

Objectif :

Réaliser et comprendre toutes les étapes de l'intégration d'une machine dans un domaine Active Directory sous Windows 2003 d'une machine Linux sous Debian Lenny.

Matériel :

  • Deux machines en virtuel ou en physique.
  • De quoi faire communiquer les deux machines (switch, câbles UTP, etc)
  • Avoir un Domain Controler sous Windows 2003 server

Sur la machine debian, il faut d'abord installer un certain nombre de paquet.

apt-get install krb5-user krb5-clients ntpdate resolvconf samba smbclient smbfs winbind

Normalement vous allez avoir une fenêtre en ncurse qui vous posera une question: WORKGROUP. Répondez TEST. Il vous posera aussi deux autres questions: administrative server et kerberos server. Répondez par le nom complet du DC. Dans mon cas: dc1.test.local.

Ces paquets installent le client kerberos qui permet d'obtenir un ticket auprès du domain controler une fois configuré, ntpdate permet de se synchroniser au niveau du temps avec le DC, samba permet d'intégrer la machine linux dans le domain et winbind permet de s'authentifier depuis un linux avec user/password de l'AD

Tout d'abord, il faut vérifier le fichier /etc/hosts

127.0.0.1   	data.test.local  data
192.168.2.2	data.test.local  data

et modifier le fichier /etc/network/interfaces pour lui donner la bonne configuration IP. Attention, la machine Linux qui veut s'intégrer dans le domaine doit utiliser le DNS du domaine (donc, l'ip du DC)

auto eth0
iface eth0 inet static
	address 192.168.2.2
	netmask 255.255.255.0
	gateway 192.168.2.1
	dns-nameservers 192.168.2.3
	dns-search test.local

relancez votre service réseau pour prendre en compte ces paramètres :

/etc/init.d/networking restart

Vérifiez que tout est bon et essayer de pinger le DC avec son nom court :

ping dc1

Si ça fonctionne, c'est qu'on est sur le bon chemin. Si ce n'est pas bon, vérifiez le fichier /etc/resolv.conf qui donne les ip des serveurs DNS à contacter et le domain dns dont fait partie la machine.

nameserver 192.168.2.3
search test.local

Après, nous allons pouvoir commencer à configurer kerberos pour qu'il aille chercher un ticket auprès du DC. Editez le fichier /etc/krb5.conf et modifier le pour avoir ceci :

[libdefault]
	default_realm = TEST.LOCAL

[realms]
	TEST.LOCAL = {
			kdc = dc1.test.local
			admin_server = dc1.test.local
	}

[domain_realm]
	.test.local = TEST.LOCAL
	test.local = TEST.LOCAL

Dès que c'est fait, nous allons pouvoir tenter de récupérer un ticket grâce à cette commande après avoir synchronisé sa machine au niveau temps avec le serveur Windows :

ntpdate dc1.test.local
kinit administrator

Il vous sera demandé le password pour administrator. Une fois cette étape passée, vous pouvez vérifier que vous avez bien un ticket avec la commande

klist

Cool jusque là ? On passe alors à la suite qui se traduira par la configuration de Samba, Winbind et PAM. Éditez maintenant le fichier /etc/samba/smb.conf

[global]
server string = data.test.local
workgroup = TEST
realm = TEST.LOCAL

encrypt passwords = yes
security = ADS

idmap uid = 10000-20000
idmap gid = 10000-20000
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
template shell = /bin/bash
template homedir= /home/TEST/%u
obey pam restrictions = yes

[Homes]

comment = User Homes Directories
browseable = yes
writable = yes
read only = no

Sauvegardez et quittez le fichier. Éditez ensuite le fichier /etc/nsswitch.conf pour demander au système d'aller chercher les users qui veulent s'authentifier pas uniquement sur la machine linux mais aussi avec winbind (qui ira se fournir dans l'AD).

passwd  compat winbind
group    compat winbind

Dès que vous aurez modifié ce fichier et redémarré samba et winbind, nous allons pouvoir intégrer notre debian dans l'AD

/etc/init.d/samba  restart; /etc/init.d/winbind  restart
net ads join -U administrator

Encore une fois il demande le mot de passe et ensuite vous indique que tout c'est bien passé. Pour vérifier, utiliser ces quelques commandes :

wbinfo -u
wbinfo -g

getent passwd
geten group

Si elles donnent comme retour le user les users de l'AD et les groupes de l'AD, tout est ok :)

C'est bien beau tout ça, mais on ne peut pas encore s'authentifier sur la debian avec les users du domaine. A partir de maintenant, vous allez faire très attention à ce que vous modifiez parce qu'une erreur pour vous créer beaucoup de problème comme l'impossibilité total de se logger sur la machine linux avec le user root.

Tout d'abord on va faire un backup de quelques fichiers que nous allons modifier :

cp /etc/pam.d/{common-auth,common-account,common-session}  ./

Maintenant, modifions ces fichiers sans avoir trop peur mais gardez autant que possible une console ouverte avec le user root afin de pouvoir revenir en arrière si on fait une bêtise.

Le premier fichier à éditer, c'est /etc/pam.d/common-auth

Il faut ajouter une ligne avant celle qui contient pam_unix.so afin de dire au système que si quelqu'un veut s'authentifier, il faudra aussi interroger winbind.

auth  sufficient  pam_winbind.so

Dans le même ordre d'idée, avant la même ligne pam_unix.so il faudra ajouter la même chose à un détail près pour le fichier /etc/pam.d/common-account

account   sufficient   pam_winbind.so

A ce stade-ci, nous pouvons nous connecter dans debian avec le user administrator. Vous pouvez tester mais vous verrez que le système vous donne une erreur. Il vous averti que vous n'avez pas de home directory. Pour régler se problème, vous pouvez soit le créer à la main pour chaque user (long et chiant), soit modifier pam pour qu'il le crée automatiquement s'il n'existe pas.

Modifiez le dernier fichier /etc/pam.d/common-session et ajoutez à la fin du fichier :

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

Normalement, tout roule maintenant.

Si vous avez des questions n'hésitez pas, nous y répondrons avec plaisir dans la mesure du possible.

Premier article de ToTo, merci à lui !

Vus : 552
Publié par System Linux : 211