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




2 commentaires:

  1. Est-il possible de procéder à ce type d'authentification quand on débute dans linux? Ca là, je suis encore à la création d'annuaire ldap. Et par l'occasion, pouvez-vous me dire s'il faut être certifié en linux pour avoir un bon poste en tant qu'admin system? Ou les diplomes d'études sont suffisant. On m'a dit que ce n'était pas nécessaire alors qu'un recruteur a dit que c'était important d'avoir un certificat, merci.

    RépondreSupprimer