|
Julien Thomas - TELECOM Bretagne
|
![]()
|
|
Informations
Déploiement d'applications
Sécurité des applications
Sécurité SELinux
|
Déploiement de PAM LDAPObjectifsLa maquette (voir la pages Objectifs) requiert que certains comptes, tel que l'utilisateur ayant accès aux mailbox des utilisateurs, soient partagés entre les serveurs. D'une manière plus général, il peut être intéressant de permettre à certains comptes d'avoir accès aux différents serveurs, pour des raisons de maintenance ou autres. Afin de satisfaire ses besoins, l'annuaire LDAP peut être utilisé. Sous Linux, le partage de compte peut être configuré via LDAP, en utilisant les modules NSS et PAM :
L'installation de ce deux modules se fait un simple emerge emerge -av nss_ldap pam_ldap. Les versions installées sur la maquette sont 0.78-r5 pour PAM et la 253 pour NSS_LDAP Principe de fonctionnementL'authentification PAM avec LDAP se fait en deux temps. Au niveau du client, la vérification du login se fait premièrement au niveau local. Ensuite, le module nsswitch (NameService Switch) détecte le lien avec LDAP et effectue une requête au serveur LDAP pour tester les identifiants de connexion. Configuration du serveur LDAPAu niveau du LDAP, les identifiants sont stockées de la manière suivante. Le DN base est ou=server,ou=accounts,ROOT_DN. Ensuite, les différents comptes sont classés suivants leur fonctionnalité. Les comptes utilisables sur tous les serveurs sont stockés dans la branche ou=all et chaque objet doit hériter des classes LDAP posixAccount et shadowAccount. Il est également possible de définir des groupes d'utilisateur (à la manière du fichier /etc/group). Dans l'annuaire LDAP, ils sont définis sur la branche ou=groups,ou=services,ROOT_DN. Chaque objet de cette branche doit hériter de l'objet LDAP posixGroup. Configuration des clientsPlusieurs modifications sont à apporter au client afin qu'il puisse utiliser l'authentification via l'annuaire LDAP. Lien avec LDAPLa première modification consiste à definir comment faire les liens avec l'annuaire.
# host 10.133.14.1 # The distinguished name of the search base. base ROOT_DN # Another way to specify your LDAP server is to provide an # uri with the server name. This allows to use # Unix Domain Sockets to connect to a local LDAP Server. uri ldaps ://URL_LDAP :636 # The LDAP version to use (defaults to 3 # if supported by client library) ldap_version 3 ... # The distinguished name to bind to the server with. binddn cn=Manager,ROOT_DN # The credentials to bind with. bindpw Managerpassword ... # The port. port 636 scope one ... # Filter to AND with uid= pam_filter objectclass=posixAccount ... # The user ID attribute (defaults to uid) pam_login_attribute uid ... # RFC2307bis naming contexts # Syntax : # nss_base_XXX base ?scope ?filter nss_base_passwd ou=servers, ou=accounts,ROOT_DN ?sub nss_base_shadow ou=servers, ou=accounts,ROOT_DN ?sub nss_base_group ou=groups,ou=services,ROOT_DN ?one
URI ldap ://auth.polux.org BASE ROOT_DN TLS_REQCERT allow Prise en compte des comptes distantsAprès avoir configuré les liens avec l'annuaire LDAP, il faut indiquer au système d'exploitation que l'identification doit également passer par LDAP. Pour ce faire, des modifications sont à apporter au fichier /etc/nsswitch.conf. En plus de l'identification classique (compat), on indique avec ldap qu'il faut passer par un annuaire LDAP. Il est à noter que le fait de mettre compat puis ldap fait que la première vérification se fait en local puis ensuite si nécessaire sur le serveur ldap.Gestion des droits des comptes distantsLa dernière modification concerne les droits des comptes distants. Il faut interfacer correctement les droits locaux avec ceux définis par le serveur LDAP. Les fichiers à modifier, et décrits plus bas, sont /etc/pam.d/system-auth, /etc/pam.d/common-auth et /etc/pam.d/common-account. L'ensemble des modifications consiste à rajouter les librairies (.so) du projet pam_ldap, en plus des librairies pam_unix.so (ou autres) déjà présentes. Comme on peut également le voir, ces ajouts se font soit en mode sufficient, soit en mode optionnal, ce qui permet de rajouter les librairies ldap sans provoquer des erreurs au niveau des systèmes d'authentification existant (si le fichier /etc/nsswitch verifie bien compat avant ldap). Le fichier common-auth définit permet d'effecuter un mapping des autorisations# host 10.133.14.1 # The distinguished name of the search base. base ROOT_DN # Another way to specify your LDAP server is to provide an # uri with the server name. This allows to use # Unix Domain Sockets to connect to a local LDAP Server. uri ldaps ://URL_LDAP:636 # The LDAP version to use (defaults to 3 # if supported by client library) ldap_version 3 ... # The distinguished name to bind to the server with. binddn cn=Manager,ROOT_DN # The credentials to bind with. bindpw Managerpassword ... # The port. port 636 scope one ... # Filter to AND with uid= pam_filter objectclass=posixAccount ... # The user ID attribute (defaults to uid) pam_login_attribute uid ... # RFC2307bis naming contexts # Syntax : # nss_base_XXX base ?scope ?filter nss_base_passwd ou=servers, ou=accounts,ROOT_DN ?sub nss_base_shadow ou=servers, ou=accounts,ROOT_DN ?sub nss_base_group ou=groups,ou=services,ROOT_DN ?one /etc/ldap.conf - Configuration de PAM-LDAP URI ldap ://auth.polux.org BASE ROOT_DN TLS_REQCERT allow /etc/openldap/ldap.conf - Configuration de PAM-LDAP Le fichier common-account définit permet d'effecuter un mapping des comptes utilisateurs : passwd : compat ldap shadow : compat ldap group : compat ldap configuration de NSSwitch auth required /lib/security/pam_env.so auth sufficient /lib/security/pam_unix.so likeauth nullok shadow auth sufficient /lib/security/pam_ldap.so use_first_pass auth required /lib/security/pam_deny.so account sufficient /lib/security/pam_unix.so account sufficient /lib/security/pam_ldap.so account required /lib/security/pam_deny.so password required /lib/security/pam_cracklib.so retry=3 password sufficient /lib/security/pam_unix.so nullok use_authtok shadow md5 password sufficient /lib/security/pam_ldap.so use_authtok password required /lib/security/pam_deny.so session required /lib/security/pam_limits.so session required /lib/security/pam_unix.so session optional /lib/security/pam_ldap.so /etc/pam.d/system-auth auth sufficient pam_ldap.so auth sufficient pam_unix.so nullok_secure use_first_pass auth required pam_deny.so /etc/pam.d/common-auth account sufficient pam_ldap.so account sufficient pam_unix.so use_first_pass /etc/pam.d/common-account
«Design-by-assumption works as long as assumptions hold. Assumptions are
shortcuts to useful efficiencies, provided they are not violated. »
|