Linux:Apache avec une authentification via un LDAP

De WIKI.minetti.org
Aller à : navigation, rechercher

But

Permettre à un serveur Apache d'authentifier des utilisateurs à travers un LDAP configuré en TLS.

Étape préliminaire

Pour pouvoir configurer Apache pour une authentification LDAP, il est impératif:

Installation

Taper la commande suivante pour installer les modules Apache nécessaires sur une CentOS/RedHat/Fedora:

yum install mod_authz_ldap

Configuration au niveau du serveur LDAP

  • Créer le compte que le serveur Apache va utiliser pour accéder au LDAP, pour cela, commencer par créer le fichier LDIF:
dn: cn=httpd,ou=sysaccount,ou=localnet,dc=minetti,dc=org
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: httpd
description: Compte serveur Apache HTTPD
userPassword: ....
  • REMARQUE: Ne jamais mettre le mot de passe en clair (userPassword). Utiliser la commande suivante pour chiffrer le mot de passe:
slappasswd
  • Taper la commande suivante pour importer le nouveau compte dans le LDAP:
ldapadd -x -v -ZZ -D "cn=Manager,dc=minetti,dc=org" -W -f httpd.ldif
  • puis vérifier l'accès:
ldapsearch -vx -ZZ -D "cn=httpd,ou=sysaccount,ou=localnet,dc=minetti,dc=org" -W "(objectClass=*)"

Configuration au niveau du serveur Apache

  • Tout d'abord il est impératif de modifier la ligne suivante dans le fichier /etc/init.d/httpd:
...
LANG=$HTTPD_LANG HOME=/var/www daemon --pidfile=${pidfile} $httpd $OPTIONS
...
  • Copier le fichier /root/.ldaprc dans /var/www:
cd /var/www
cp /root/.ldaprc .
chown root.apache .ldaprc
chmod 640 .ldaprc

Configuration pour chaque site web

  • Au niveau du serveur LDAP, créer le groupe d'utilisateurs que le serveur Apache va utiliser pour contrôler l'accès au site. Pour cela, commencer par créer le fichier LDIF:
dn: cn=administrators,ou=group,ou=localnet,dc=minetti,dc=org
objectClass: top
objectClass: posixGroup
cn: administrators
gidNumber: 10015
description: Administrateur système
memberUid: user1
memberUid: user2
...
  • puis taper la commande suivante pour importer le nouveau compte dans le LDAP:
ldapadd -x -v -ZZ -D "cn=Manager,dc=minetti,dc=org" -W -f groupe.ldif
  • Au niveau du serveur Apache, ajouter les directives d'accès suivantes dans le fichier de configuration du site (situé dans /etc/httpd/conf.d/):
<Directory ...>

  ...

  # Authentification LDAP
  AuthName "phpLDAPadmin Access"
  AuthType Basic
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative off
  AuthLDAPUrl ldap://ldap.srv.minetti.org/dc=minetti,dc=org?uid?sub?(&(objectClass=*)(!(loginShell=/bin/false))) STARTTLS
  AuthLDAPBindDN "cn=httpd,ou=sysaccount,ou=localnet,dc=minetti,dc=org"
  AuthLDAPBindPassword "....."

  # Autorisation LDAP
  AuthLDAPGroupAttribute memberUid
  AuthLDAPGroupAttributeIsDN off
  require ldap-group cn=administrators,ou=group,ou=localnet,dc=minetti,dc=org
  require ldap-group cn=accountOperators,ou=group,ou=localnet,dc=minetti,dc=org

  ...

</Directory>
  • Redémarrer le serveur Apache HTTPD:
service httpd restart
  • Tester l'accès au site.