Nombre total de pages vues

jeudi 26 février 2015

Tutoriel : Authentification Active Directory sous Debian Wheezy

Tutoriel :  Authentification Active Directory sous Debian Wheezy

Bonjour,
Voici un petit tutoriel sur comment  joindre une machine sous Linux Debian dans un domaine Active Directory.

Prérequis Hardware :

  • Avoir un contrôleur de  domaine AD sous Windows Server 2008 R2. IP : 192.168.20.x.x
  • Un Poste de travail installé avec une Debian Wheezy sans interface graphique : maMachineLinux
  • Connexion via putty.


Prérequis Sofware:

# aptitude install ntpdate vim sudo

NTPDATE : Synchronise l'heure de la machine via le protocole NTP

     # ntpdate IP_DE_VOTRE_SERVEUR_AD

1. Vérification du fichier hosts [FQDN)]

     # vi /etc/hosts
     127.0.0.1  localhost maMachineLinux.MonDomaine MonDomaine
     192.168.x.x  maMachineLinux.MonDomaine        maMachineLinux

2. Installation et Configuration de Kerberos


Kerberos  récupère un ticket auprès du contrôleur de domaine
      # aptitude install krb5-user libpam-krb5

Modification du fichier de configuration  /etc/krb5.conf
Copie de l'original :

      # cd /etc/
      # cp krb5.conf krb5.conf.ORI
      # vi krb5.conf

                [logging]
                               Default = FILE:/var/log/krb5.log

                [libdefaults]
                               ticket_lifetime = 24000
                               clock-skew = 300
                               default_realm = MonDomaine
                [realms]
                               MonDomaine = {
                               kdc = 192.168.x.x
                               admin_server = 192.168.x.x
                               default_domain = MonDomaine
                                                               }                                            
                [domain_realm]
                               .MonDomaine = MonDomaine
                                               MonDomaine = MonDomaine


***
ATTENTION ! le nom du domaine doit être en MAJUSCULE


Test de connexion vers l'AD

          # kinit administrateur

                              Password for administrateur@MonDomaine: xxxx

On vérifie si on a bien reçu un ticket:

                               # klist

                Ticket cache: FILE:/tmp/krb5cc_0
                Default principal: administrateur@MonDomaine

                Valid starting       Expires              Service principal
                26/02/2015 11:17:00  26/02/2015 17:57:00  krbtgt/MonDomaine@MonDomaine

 3. Intégration au domaine AD

          # aptitude install samba winbind samba-common-bin

Modification du fichier /etc/samba/smb.conf

 Backup de l'original :

          # cp smb.conf smb.conf.ori

          # vi smb.conf

                                               [global]
                                                        security = ads
                                                        realm = MonDomaine.local
                                                        workgroup = MonDomaine
                                                        idmap uid = 10000-20000
                                                        idmap gid = 10000-20000
                                                        winbind enum users = yes
                                                        winbind enum groups = yes
                                                        template homedir = /home/%D/%U
                                                        template shell = /bin/bash
                                                        client use spnego = yes
                                                        client ntlmv2 auth = yes
                                                        encrypt passwords = yes
                                                        winbind use default domain = yes
                                                        restrict anonymous = 2
                                                        domain master = no
                                                        local master = no
                                                        preferred master = no
                                                        os level = 0
                                                        winbind nss info = rfc2307

On redémarre les services :


          # /etc/init.d/winbind stop
          # /etc/init.d/samba restart
          # /etc/init.d/winbind start

Jonction au domaine :


                        # net ads join -U administrateur

Pour vérifie l'intégration, on peut aller voir sur le serveur AD si l'objet portant le nom de la machine est bien présent, généralement dans l' OU "Computer"
             
Test :
                        # wbinfo -u  -> retourne tous les utilisateurs de l'AD
          # wbinfo -g  -> tous les groupes de l'AD

          # wbinfo -n "nom d'un objet ad" -> donne le SID


 4. Authentification

           
        /etc/nsswitch.conf

                On ajoute « winbind » à la fin des deux lignes suivantes :

          passwd:         compat winbind
          group:          compat winbind
         
Test :
            
            # getent passwd  ->  listes des utilisateurs locaux et AD.

     # getent group -> idem mais pour les groupes


 5. PAM -> autorise les utilisateurs de l'AD à se connecter sur le poste Linux


Dans /etc/pam.d/

Normalement la bibliothèque  pam_winbind.so doit être présente dans chaque fichier de configuration suivant :


                # vi common-auth

auth    [success=3 default=ignore]      pam_krb5.so minimum_uid=1000
auth    [success=2 default=ignore]      pam_unix.so nullok_secure try_first_pass

auth    [success=1 default=ignore]      pam_winbind.so krb5_auth  krb5_ccache_type=FILE cached_login try_first_pass

      # vi 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

      # vi common-session
session optional                        pam_winbind.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel  <-- on ajoute cette ligne pour le creation automatique du dossier home de chaque utilisateurs

# end of pam-auth-update config

On essaie de se connecter via ssh en putty ou autre :

Login: bruce.lee
bruce.lee@192.168.x.x's password:

Le prompt se présente à nous :

Linux maMachineLinux 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Feb 26 10:46:50 2015 from maMachineLinux.MonDomaine
bruce.lee@maMachineLinux:~$

 6. Autoriser uniquement les membres d'un groupe AD à se connecter


Pour cela il faut éditer le fichier /etc/pam.d/common-auth et modifier la ligne suivante et ajouter le SID du groupe concerné:

auth    [success=1 default=ignore]      pam_winbind.so require_membership_of=S-1-5-21-796845957-1229272821-682003330-10184 krb5_auth krb5_ccache_type=FILE cached_login try_first_pass

Pour obtenir le SID d'un groupe AD :

     # wbinfo -n "nom du groupe" 
                               exemple  ~$ wbinfo -n debian

S-1-5-21-796845957-1229272821-682003330-10184 SID_DOM_GROUP (2)

Les Logs

En cas de problèmes vous pouvez regarder les logs dans /var/log/ notamment "messages"

Liens 

https://wiki.debian.org/fr/LDAP/NSS

https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto