Guide d'administration du système Solaris Resource Manager 1.3

Sous-système PAM

A partir de la version 2.6, les systèmes Solaris prennent en charge les modules PAM (modules d'authentification enfichables). Lorsqu'un utilisateur veut effectuer une opération dans laquelle l'identité de l'utilisateur est modifiée ou définie (par exemple la connexion au système, l'exécution d'une commande "r" telle que rcp ou rsh, l'emploi de ftp ou de su), un ensemble de modules configurables est utilisé pour effectuer l'authentification, la gestion des comptes, la gestion des justificatifs d'identité et la gestion des sessions. Solaris Resource Manager comporte un module PAM permettant de comptabiliser les connexions et de modifier le comportement de la commande su.

Le programme servant à demander l'opération est appelé le service.

Le système PAM global est décrit dans les pages de manuel pam(3), pam.conf(4), pam_unix(5) et pam_srm(5SRM).

Le module PAM de Solaris Resource Manager effectue des fonctions de gestion des comptes et des sessions. Vous pouvez configurer le comportement du module PAM en modifiant le fichier /etc/pam.conf. Pour un comportement normal de Solaris Resource Manager, le module PAM devrait être configuré comme requisite pour tous les services de connexion, la gestion des sessions et la gestion des comptes pour tous les services PAM. Généralement, le module Solaris Resource Manager module doit être placé après tous les autres modules requis ou exigés et avant tout autre module suffisant ou optionnel.

Lors de l'installation, Solaris Resource Manager modifie le fichier /etc/pam.conf de manière à assurer un comportement approprié. Il insère des lignes comme celles-ci pour chaque service (y compris other) dont la gestion des sessions ou des comptes est déjà configurée :

login account requisite pam_srm.so.1 nolnode=/etc/srm/nolnode
other session requisite pam_srm.so.1
other account requisite pam_srm.so.1 nolnode=/etc/srm/nolnode

La première ligne indique que, pour la connexion des services, le module pam_share.so.1 doit être utilisé pour la gestion des comptes, qu'il doit permettre la connexion pour que celle-ci réussisse, et qu'il doit recevoir l'argument nolnode=/etc/srm/nolnode. Reportez-vous à la section pam.conf(4) pour une explication complète des divers indicateurs de contrôle (required, requisite, optional et sufficient).

La deuxième ligne indique que le service de connexion utilisera le module pam_share.so.1 pour la gestion des sessions.

La liste complète des arguments des modules de gestion des comptes et des sessions de Solaris Resource Manager est présentée à la section pam_srm (5SRM).

Gestion des comptes

Lorsque le module PAM de gestion des comptes de Solaris Resource Manager obtient le contrôle :

  1. Il détermine si Solaris Resource Manager est installé et activé ; sinon, il indique au système PAM de ne pas tenir compte de ce module.

  2. Il détermine si l'utilisateur possède un noeud limite ; sinon, il lance un script «no Inode» configurable par l'administrateur.

  3. Il détermine si l'utilisateur a la permission d'utiliser le service et le périphérique demandés.

  4. Il détermine si l'utilisateur a dépassé la limite d'avertissement ; le cas échéant, il lui interdit d'ouvrir une session.

  5. Il lance un script «every login» configurable par l'administrateur.

Si l'une de ces étapes échoue, les autres ne sont pas effectuées, et le module PAM de gestion des comptes de Solaris Resource Manager interdit l'utilisation du service. Si possible, un message explicatif est envoyé à l'utilisateur par le service.

Scripts

Le script «missing lnode» par défaut crée un noeud limite pour l'utilisateur et en avise l'administrateur de système par courrier. Le script par défaut est /etc/srm/nolnode, mais il peut être remplacé en modifiant le fichier /etc/pam.conf et en changeant la valeur de l'option nolnode dans les lignes du module de gestion des comptes de Solaris Resource Manager. Le script «every login» n'est habituellement pas configuré. Vous pouvez cependant le configurer en ajoutant une option [[everylogin=pathname]] à tout module de gestion des comptes de Solaris Resource Manager dans le fichier /etc/pam.conf. Vous exécutez les scripts en tant qu'utilisateur root. L'entrée, la sortie et l'erreur standard sont fermées. Si un script se termine avec une valeur non nulle, l'accès n'est pas accordé. Toutes les informations sont transmises sous forme de variables d'environnement, lesquelles sont dérivées directement des informations transmises au module PAM par le service.

USER

Nom de connexion fourni au programme. Il a été authentifié par consultation dans la table des mots de passe ; s'il est absent, le module de gestion des comptes a déjà envoyé un code d'erreur au module PAM.

UID

ID de l'utilisateur qui est authentifié. Dans le cas des services qui changent l'UID (par exemples su), il s'agit de l'UID de l'utilisateur qui appelle le service ; dans le cas des services qui définissent l'UID (par exemple login), il s'agit de l'UID cible (celui de USER).

RHOST

Lors des tentatives d'accès dans un réseau, cette variable contient le nom de l'hôte à l'origine de la tentative. Autrement, sa valeur dépend de la mise en ouvre.

SERVICE

Nom du service d'accès, par exemple rsh, login et ftp.

TTY

Nom du télétype où le service est appelé. Certains services n'ayant pas (strictement parlant) de terminal de contrôle (comme ftp) attribueront à cette variable de l'information de processus (par exemple ftp12345, où 12345 est l'identificateur de processus (PID) de ftpd; tandis que d'autres la laisseront vide ou la remplaceront par le nom du service.

DEBUG

Si debug a été précisé dans le fichier pam.conf, la variable DEBUG a la valeur "true" ; sinon, elle a la valeur "false". Comme aucune autre variable d'environnement n'est réglée, les scripts doivent définir leur propre variable PATH au besoin.

Le script par défaut 'no lnode' crée le noeud limite dans le groupe d'ordonnancement par défaut (other, si un tel utilisateur existe dans la table des mots de passe, sinon root) et rappelle par courrier à l'administrateur du système de déplacer le nouveau noeud limite à l'endroit approprié dans la hiérarchie d'ordonnancement. Pour consulter un exemple de script, reportez-vous à la rubrique Script 'no Inode' par défaut.

Interaction du module PAM avec des groupes de périphériques

Le module PAM de Solaris Resource Manager consulte les noms de terminal et de service dans la hiérarchie des périphériques ; si des limites sont dépassées ou qu'un indicateur de périphérique a la valeur activé, il envoie un message de refus de permission.

Les catégories de périphérique examinées sont terminal pour le nom du terminal et services pour le type de service demandé. Par exemple, une tentative de connexion rlogin peut essayer d'utiliser un fichier dans le groupe de périphériquesdu réseau ; ainsi, les indicateurs vérifiés pour l'utilisateur (en supposant que tous les indicateurs ont la valeur group) sont tels qu'indiqués ci-dessous. Les indicateurs suivants sont vérifiés dans l'ordre :

L'accès n'est accordé que si tous ces indicateurs ont la valeur set. En outre, les limites sont vérifiées en fonction des catégories correspondantes ( terminal et services).

Gestion des sessions

Pour les services de connexion (créant une entrée dans le fichier utmp), les fonctions de gestion des sessions du module PAM sont appelées, ainsi que les fonctions de gestion des comptes si les deux sont configurées dans /etc/pam.conf.

La fonction de gestion des sessions de Solaris Resource Manager effectue le chargement des périphériques. Elle vérifie si l'utilisateur a dépassé la limite de temps de connexion ou si son indicateur onelogin est activé et que l'utilisateur est déjà en session ; le cas échéant, elle l'empêche.

Autrement, elle envoie un message au processus limdaemon afin de l'informer de la connexion et du coût configuré pour le terminal où la connexion est effectuée. Elle indique ensuite au noyau que le processus courant est un "processus d'en-tête de session", dont le processus limdaemon doit être informé lors de sa terminaison.

Le processus limdaemon fait alors le suivi des limites de temps de connexion et génère des avertissements en cas de dépassement prochain.