Linux:Apache avec une authentification via un LDAP
De WIKI.minetti.org
Sommaire
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:
- de disposer d'un serveur LDAP,
- d'avoir testé un accès client vers le LDAP (voir Configuration du client LDAP).
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.