rôle member server, security ADS

Je vais vous montrer une des configurations de samba le rôle member server, quand on veut faire un serveur de partage de fichier avec l'authentification dans un domaine windows existant, en gardant la possibilité de créer des logins locaux. Pour l'installation, regardé Installation d'un serveur SAMBA 4, car l'article est basé sur cet article.

D'abord, il nous faudra installer le service suivant :

installation d'un service NTP

Avant de récupérer un ticket auprès d'un contrôleur de domaine “DC” Windows, il faut configurer notre client NTP (/etc/ntp.conf) pour que notre serveur est la même heure que le DC Windows, cela peut éviter certain problème de synchronisation du temps. Installation de ntp:

aptitude install ntp ntpdate

Nous allons éditer la configuration de ntp qui est dans le fichier ntp.conf

 vim /etc/ntp.conf

Commenter les lignes server et ajoute vos DC:

 server XXX.XXX.XXX.XXX iburst
 server XXX.XXX.XXX.XXX iburst 

Relancer le service ntp pour prendre en compte la modification.

 /etc/init.d/ntp restart

Configuration réseau

il faut vérifier le fichier /etc/hosts, Si cela n'est pas déjà fait.

 127.0.0.1       localhost
 XXX.XXX.XXX.XXX    nom.domaine.loc nom

Ou - nom.domaine.loc: représente le nom de votre serveur sur le réseau. - xxx.xxx.xxx.xxx : représente son IP

Vérifier les DNS que vous avez saisis dans le fichier /etc/resolv.conf, Si cela n'est pas déjà fait.

 search domain.loc
 domain domain.loc
 nameserver XXX.XXX.XXX.XXX
 nameserver XXX.XXX.XXX.XXX

XXX.XXX.XXX.XXX : représente les IPs de vos DCs Windows.
Modifier le fichier /etc/network/interfaces pour lui donner une configuration IP static, Si cela n'est pas déjà fait.

 auto ethX
 iface ethX inet static
      address XXX.XXX.XXX.XXX
      netmask XXX.XXX.XXX.XXX
      gateway XXX.XXX.XXX.XXX

Relancer le service networking pour prendre la modification en compte.

/etc/init.d/networking restart

Configuration de Kerberos client

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

 [libdefaults]
  default_realm = DOMAINE.LOC
  
 [realms]
   DOMAINE.LOC = {
   kdc = DC.domain.loc
   admin_server = DC.domaine.loc
  }
  
 [domain_realms]
  .DC.domaine.fr = DOMAINE.LOC
  test.local = DOMAINE.LOC

Maintenant, nous allons récupérer un ticket sur le DC Windows:

 kinit administrator

Une fois cette étape passée vous pouvez vérifier que vous avez bien un ticket avec la commande:

 klist

Configuration de Samba

Édité ou créé le fichier smb.conf (/usr/local/samba/etc/smb.conf)

 vim /usr/local/samba/etc/smb.conf

Voici, la configuration :

 [global]
 workgroup = DOMAINE
 realm = domaine.loc
 security = ADS
 passdb backend = tdbsam
 auth methods = sam winbind
 server role = member server
 server string = samba %v
 netbios name = <NOM-SERVEUR>
 encrypt passwords = yes
 null passwords = yes
 machine password timeout = 604800
 obey pam restrictions = yes
 template homedir = /home/%D/%U
 winbind enum users = yes
 winbind enum groups = yes
 winbind separator = +
 idmap uid = 50-9999999
 idmap gid = 50-9999999
 template shell=/bin/sh
 load printers = no
 printcap name = /dev/null
 disable spoolss = yes
 log file = /var/log/samba/%m.log
 log level = 3
 max log size = 100
 
 [homes]
 comment = Home Directories
 read only = no
 create mask = 0770
 directory mask = 0770
 invalid users =
 valid users = %S,%D+%S
 write list = %S,%D+%S
 read list =
 
 [rep_partage]
 comment = rep_partage de test
 path = /share/rep_partage
 readonly = no
 create mask = 0770
 directory mask= 0770
 force user =
 force group = 
 invalid users = user2,DOMAINE+user4
 valid users = @groupe1,user1,user3,@DOMAINE+GROUPE
 write list = @group1,user1,@DOMAINE+GROUPE
 read list= user3
Modifier <NOM-SERVEUR> dans l'option netbios name
@DOMAINE_AD+groupe_AD : vous n'êtes pas obligé d'ajouter le groupe, le login suffit, mais c'est pour montrer la syntaxe

script de Lancement

Je me suis fabriqué un petit script de lancement samba.tar.gz, il vous suffit de le récupérer, de le décompresser :

tar -xvzf samba.tar.gz

De le mettre dans le répertoire de lancement init.d:

mv samba /etc/init.d/

Lui mettre les bons droits et le bon propriétaire, si ce n'est pas déjà fait.

chown root:root /etc/init.d/samba
chmod 755 /etc/init.d/samba

Et pour terminer d'activer le service afin que le script soit exécuté au démarrage.

update-rc.d samba defaults

J'ai fait exactement la même chose sur winbind

Pour le lancement de samba avec winbind winbind.tar.gz, il faut respecter un ordre
/etc/init.d/winbind stop; /etc/init.d/samba restart; /etc/init.d/winbind start

Joindre le domaine

Puis, nous allons pouvoir intégrer notre serveur SAMBA dans le domaine Windows.

 net ads join -U administrator

Pour vérifier, saisir ces quelques commandes :

 wbinfo -u 
 wbinfo -g

Si, elles donnent les login et les groupes du domaine, tout est ok.

On ne peut pas encore s'authentifier sur la debian avec les logins du domaine.
Donc, pour cela nous allons faire des liens symboliques vers la libnss_winbind.so

ln -s /usr/local/samba/lib/libnss_winbind.so /lib/
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
ldconfig

Modification de NSS

Nous allons ensuite modifier le Name Service Switch (NSS), c'est ce qui autorise le remplacement des traditionnels fichiers Unix/Linux de configuration (par exemple /etc/passwd, /etc/group, /etc/hosts) par une ou plusieurs bases de données centralisées.
Le fichier nsswitch.conf (/etc/nsswitch.conf) :

 passwd:         compat winbind
 group:          compat winbind
 shadow:         compat winbind

Démarrer les services winbind et samba

/etc/init.d/samba start; /etc/init.d/winbind start

Le petit test vous permettra de savoir si cela est bon.

su DOMAIN+administrator

Si vous avez un prompt, c'est bon

ACL

Penser à ajouter DOMAINE_AD+groupe_AD ou son groupe sur un répertoire partagé dans le fichier smb.conf
[rep_partage]
 comment = "rep_partage"
 path = /share/rep_partage
 readonly = no
 create mask = 0770
 directory mask = 0770
 force group = 
 force user =
 invalid users=
 valid users=DOMAINE_AD+user1 ,@DOMAINE_AD+groupe_AD, user2, @group2
 write list=DOMAINE_AD+user1 ,@DOMAINE_AD+groupe_AD, user2, @group2
 read list=

@DOMAINE_AD+groupe_AD : vous n'êtes pas obligé d'ajouter le groupe, le login suffit, mais c'est pour montrer la syntaxe

Activer les acl dans /etc/fstab:

 /dev/mapper/VG0-share /share          ext4    defaults,acl,user_xattr,barrier=1        0       2

Installer les acls:

 aptitude install acl

Puis modifier les acls:

 setfacl -R -m g:"DOMAINE_AD+groupe_AD":rwx /home/share
Pour les logins locaux :
Ajouter un login :
 addgroup sambausers
 useradd -m -g sambausers toto
 smbpasswd -a toto

Ensuite, vous n'avez plus qu'a ajouté les droits associé au répertoire de partage, sinon Samba autorisera l'accès, mais pas le système Linux.
exemple:

chown toto:sambausers /share/rep_partage

Pour changer le mot de passe :

 smbpasswd toto

Pour supprimer un login de la base Samba :

smbpasswd -x toto

Quand vous supprimez un login de la base de samba, il n'est supprimer de Linux

Autres

Affiché les connexions actives via Samba :

smbstatus -v

Pour effacer toutes la configuration de samba (fichier de configuration et base local)

rm -f /usr/local/samba/etc/smb.conf
rm -rf /usr/local/samba/private/*

Source: wikipedia samba.org