Modules PAM

Transcription

Modules PAM
Table des matières
1
LES MODULES PAM ............................................................................................... 2
1.1 Introduction .......................................................................................................... 2
1.2 Configuration ....................................................................................................... 2
1.3 La syntaxe de configuration ................................................................................. 3
1.4 Modules à connaître (/lib/security) ...................................................................... 4
1.5 Documentation ..................................................................................................... 6
1.6 Exemples .............................................................................................................. 6
1.6.1
login........................................................................................................... 6
1.6.2
Mot de passe .......................................................................................... 6
1.6.3
Imposer le groupe wheel ............................................................... 8
1.6.4
Authentification .............................................................................. 10
_____________________________________________________________________
 2011 Hakim Benameurlaine
1
1 LES MODULES PAM
1.1 Introduction
Les PAM (pluggable module authentification) est un moyen
modulable d'authentifier des utilisateurs. On peut ainsi définir des stratégies
sans avoir à recompiler les programmes qui supportent PAM. En fait PAM,
évite que chaque application ne vous redemande une authentification avec
des règles différentes à chaque fois.
Si vous souhaitez renforcer la sécurité (obliger des mots de passe qui ne sont
pas dans un dictionnaire par exemple), l'uniformiser ou adopter une autre
méthode d'authentification (ldap par exemple) alors la réponse est oui.
1.2
Configuration
On peut mettre l'ensemble de la configuration dans /etc/pam.conf ou
bien avoir un fichier par service dans /etc/pam.d/ (par défaut).
Si le fichier PAM correspondant au service existe dans le répertoire
/etc/pam.d alors le fichier /etc/pam.conf est ignoré.
Le fichier principal dans le cas de l'existence de /etc/pam.d est systemauth.
Les modules appelés dans les différents fichiers de configuration se trouvent
dans /lib/security.
Enfin on trouve dans /etc/security des fichiers complémentaires
suivant qui sont utilisés par certaines applications :
access.conf
group.conf
limits.conf
time.conf
pam_env.conf
console.apps
...
utilisé par le module pam_access.so
utilisé par le module pam_group.so
utilisé par le module pam_limits.so
utilisé par le module pam_time.so
utilisé par le module pam_env.so
utilisé par le module pam_console.so
_____________________________________________________________________
 2011 Hakim Benameurlaine
2
1.3
La syntaxe de configuration
Il y a une petite différence si on utilise le fichier /etc/pam.conf ou le
répertoire /etc/pam.d mais le principe est le même.
Le fichier /etc/pam.conf contient une colonne supplémentaire qui
identifie le service.
login auth
login account
required
requisite
/lib/security/pam_securetty.so
/lib/security/pam_roles.so
a) La première colonne indique le nom du service ou l’application. Il n'existe
que pour le fichier /etc/pam.conf.
b) La deuxième colonne indique le type de module. Il peut prendre les
valeurs suivantes :
auth
account
password
session
Authentifie l'utilisateur par une demande de mot de passe ou
par une autre méthode.
Restriction du compte : expiration, en fonction de l'heure, de
la machine source, des ressources disponibles.
Gestion des mots de passe.
Tout ce qui concerne l'ouverture d'une session, avant et après.
c) La troisième colonne est l’indicateur de contrôle. Il peut prendre les
valeurs suivantes :
required
Doit réussir, mais on continue à tester les autres modules en
cas d’échec. Contrairement à requisite, on ne donne pas
la raison de l'échec de l’authentification.
requisite
Doit réussir, on ne continue pas à tester les autres modules.
L’échec est renvoyé immédiatement.
optional
Que le test réussisse ou pas cela ne change pas la suite (s’il
n’est pas seul).
sufficient
En cas de succès, l’authentification sera acceptée.
include
Inclure toutes les lignes du fichier spécifié comme argument.
substack
Inclure toutes les lignes du fichier spécifié comme argument.
(evaluer comme un seul module).
Une autre syntaxe plus complexe a la forme suivante :
[valeur1=action1 valeur2=action2 ...]
d) Le dernier champ indique l'endroit où se trouvent les modules.
_____________________________________________________________________
 2011 Hakim Benameurlaine
3
1.4

Modules à connaître (/lib/security)
pam_cracklib
Permet d'accepter ou de rejeter un mot de passe, si celui-ci se trouve dans
un dictionnaire ( /usr/lib/cracklib.pwd ). Il permet aussi de
vérifier que vous ne réutilisez pas le même mot de passe.
Vous pouvez le faire suivre des parametres suivants:
retry=n
minlen=n
difok=n
type=xxx

le nombre de tentatives
la longueur imposée
nombre de caractères qui sont dans le vieux mot de passe
et que l'on ne peut pas retrouver dans le nouveau
Le message ‘New xxx password :’ sera afficher lors du
changement de mot de passe.
pam_env
Permet de spécifier des variables d'environnements dans :
/etc/security/pam_env.conf à tout utilisateur qui se connecte
sur la machine.

pam_unix
Module de base. Gère à la mode Unix la politique d'authentification. Il
peut être avec les quatre types de modules :
account
auth
password
session
établi la validité utilisateur/mot de passe et peut forcer la
modification de celui-ci
compare avec la base le mot de passe
la politique de changement du mot de passe
pour loguer les connexions
Vous pouvez associer quelques options dont :
nullok
md5
debug
remember=n

pour autoriser un mot de passe vide
pour le type de cryptage
pour loguer les informations à syslog
pour ce souvenir des n derniers mots de passe utilisés
pam_time
Autorise un accès par heure. La configuration se faisant dans le fichier
/etc/security/time.conf

pam_wheel
Permet de limiter l'accès à l’usager root via la commande su qu'aux
seuls membres du groupe wheel. On peut changer le nom du groupe par
défaut avec l'option group=mon_group
_____________________________________________________________________
 2011 Hakim Benameurlaine
4

pam_limits
Permet de limiter les ressources mises à la disposition d'un utilisateur. Il
faut alors configurer le fichier /etc/security/limits.conf

pam_nologin
Permet d’interdire le login à tous les usagers sauf root. Il faut alors
créer le fichier /etc/nologin.

pam_access
Ce module permet de contrôler les utilisateurs par nom, machine,
domaine, adresse IP, terminal.
Vous
devez
alors
/etc/security/access.conf

configurer
le
fichier
pam_deny
Permet
d’interdire
l’accès.
Vous
pouvez
l'utiliser
dans
/etc/security/other pour auth, account, password et
session avec required. Si dans le répertoire /etc/security
vous avez des noms d'applications que vous n'utilisez pas vous pouvez
renommer ces fichiers avec un autre nom au cas..! Si quelqu'un cherche à
utiliser l'application le fichier other sera alors utilisé par défaut.

pam_securetty
Vérifie que le compte root a la possibilité de se connecter sur cette
console. Pour cela il faut qu'elle soit indiquée dans le fichier
/etc/securetty.

pam_warm
Permet de loguer les informations à syslog

pam_console
Permet de spécifier les autorisations d'accès à la console. Il faut alors
configurer /etc/security/console.perms.

pam_stack
Généralement suivi de service=system-auth, permet de renvoyer
sur system-auth.

pam_ldap
Permet d'effectuer l'authentification sur une base ldap.
_____________________________________________________________________
 2011 Hakim Benameurlaine
5
1.5
Documentation
Sur votre machine : /usr/share/doc/pam-0.99.6.2/html
Sur le web: http://www.kernel.org/pub/linux/libs/pam
1.6 Exemples
1.6.1 login
Voici un exemple du fichier /etc/pam.d/login.
1:auth
2:auth
3:auth
4:account
5:password
6:password
7:session
required
required
required
required
required
required
required
/lib/security/pam_securetty.so
/lib/security/pam_unix.so shadow nullok
/lib/security/pam_nologin.so
/lib/security/pam_unix.so
/lib/security/pam_cracklib.so
/lib/security/pam_unix.so shadow nullok
/lib/security/pam_unix.so
Ligne 1 interdit à l’usager root de se connecter sur la console si elle n'est
pas autorisée dans /etc/securetty.
Ligne 2 vérifie le mot de passe, on peut aussi utiliser pam_pwdb
Ligne 3 vérifie l'existence du fichier /etc/nologin. Si celui-ci existe,
il n'est plus possible de ce loguer sauf pour root. Affiche son contenu.
Ligne 4 comptabilise la "vie" du mot de passe.
Ligne 5 teste la validité du mot de passe.
Ligne 6 impose les règles de modification du mot de passe.
Ligne 7 est utilisée pour gérer la session.
1.6.2 Mot de passe
Il est important que tous les mots de passe utilisateur soient bien choisis. Ils
doivent contenir plus de deux caractères et éviter d’avoir une signification
intrinsèque.
Nous allons décrire le fichier /etc/pam.d/passwd qui inclut une bonne mise
en vigueur des mots de passe.
Vérifier la présence du module /lib/security/pam_cracklib.so qui
permet de mettre en œuvre une bonne protection par mots de passe.
_____________________________________________________________________
 2011 Hakim Benameurlaine
6
Fichier /etc/pam.d/passwd par défaut :
auth
required /lib/security/pam_statck.so service=system-auth
account required /lib/security/pam_statck.so service=system-auth
passwd required /lib/security/pam_statck.so service=system-auth
Fichier /etc/pam.d/system-auth par défaut :
auth
required
auth
sufficient
auth
required
account required
password required
password sufficient
md5 shadow
password required
session required
session required
/lib/security/pam_env.so
/lib/security/pam_unix.so likeauth nullok
/lib/security/pam_deny.so
/lib/security/pam_unix.so
/lib/security/pam_cracklib.so retry=3 type=
/lib/security/pam_unix.so nullok use_authtok
/lib/security/pam_deny.so
/lib/security/pam_limits.so
/lib/security/pam_unix.so
Exemples:
Dans l’exemple suivant, deux modules sont appelés. Dans le premier module,
l’usager a droit à trois tentatives (retry=3) pour entrer un bon mot de passe.
Dans le deuxième module, l’utilisant de l’argument use_authtok, permet de
ne pas demander le mot de passe de nouveau mais d’utiliser celui fourni par
pam_cracklib.
passwd
passwd
password required
password required
pam_cracklib.so retry=3
pam_pwdb.so use_authtok
Si on veut utiliser le chiffrement MD5 :
#
#
#
#
#
#
These lines allow a md5 systems to support passwords of at
least 14 bytes with extra credit of 2 for digits and 2 for
others the new password must have at least three bytes that are
not present in the old password
password
password
required pam_cracklib.so \
difok=3 minlen=15 dcredit= 2 ocredit=2
required pam_pwdb.so use_authtok nullok md5
Si on ne veut pas utiliser les crédits :
_____________________________________________________________________
 2011 Hakim Benameurlaine
7
# These lines require the user to select a password with a
# minimum length of 8 and with at least 1 digit number, 1 upper
# case letter, and 1 other character
#
password required pam_cracklib.so \
dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
password required pam_pwdb.so use_authtok nullok md5
Un mot de passe avec une longueur minimale de 8 sans crédits :
password
password
required pam_cracklib.so \
dcredit=0 ucredit=0 ocredit=0 lcredit=0 minlen=8
required pam_pwdb.so use_authtok nullok md5
Fichier /etc/pam.d/passwd renforcé :
passwd required /lib/security/pam_cracklib.so type=usr retry=3
passwd required /lib/security/pam_pwdb.so use_authtok
Le mécanisme qui se cache derrière cette petite pile de passwd est le suivant :

Quand un utilisateur entre le mot de passe de son choix, vérifie le mot de passe à
l’aide du dictionnaire des termes courants. Cette tâche est effectuée par le module
pam_cracklib.so. Elle est requise pour continuer le traitement de la pile.

Demande un bon mot de passe jusqu`à trois fois avant d’abandonner (retry=3).

Si l’utilisateur entre un bon mot de passe (le module pam_cracklib.so
termine avec succès), met à jour le mot de passe à l’aide du module
pam_pwdb.so (responsable de la base de données des mots de passe).
1.6.3 Imposer le groupe wheel
Dans les systèmes de type Unix, la tradition est de ne permettre certaines actions
qu’aux utilisateurs du groupe wheel, réservé par convention aux utilisateurs
possédant un accès de type administration système.
Parmi les actions restreintes au groupe wheel, on trouve la commande su qui
permet à un utilisateur de prendre l’ID d’un autre utilisateur, souvent l’utilisateur
root.
Malheureusement sur Linux, le groupe wheel n’est pas mis en vigueur par
défaut, signifiant que n’importe quel utilisateur peut exécuter la commande su.
Ce qui présente un risque du point de vue de la sécurité. Nous allons remédier à
cette situation.
Nous allons modifier le fichier /etc/pam.d/su qui contrôle le comportement
de l’authentification de la commande su, afin qu’il :
_____________________________________________________________________
 2011 Hakim Benameurlaine
8

Permette uniquement aux membres du groupe wheel d’utiliser la
commande su.

Demande à tous les utilisateurs, même root, d’entrer un mot de passe
lorsqu’ils tentent d’utiliser su pour obtenir un accès au niveau du root.

Crée une entrée dans le journal pour chaque utilisation de la commande
su.
Voici le fichier /etc/pam.d/su par défaut :
auth sufficient /lib/security/pam_rootok.so
# Uncomment the following line to implicitly trust users in the
#"wheel" group.
#auth sufficient /lib/security/pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the
#"wheel" group.
#auth required
/lib/security/pam_wheel.so use_uid
auth required
/lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_xauth.so
Voici le fichier /etc/pam.d/su modifié :
auth
auth
auth
account
passwd
session
required
requisite
required
required
required
required
pam_warn.so
pam_wheel.so group=wheel
pam_pwdb.so
pam_pwdb.so
pam_pwdb.so use_authtok
pam_pwdb.so
Le module pam_wheel.so vérifie que l’utilisateur est bien membre du groupe
wheel.
Il est paramétré sur requisite donc si cette entrée échoue, la pile est
immédiatement quittée en échec. Sans continuation. Seuls les membres du groupe
wheel se verront demander un mot de passe. Tous les autres seront éconduits dès
le départ.
_____________________________________________________________________
 2011 Hakim Benameurlaine
9
1.6.4 Authentification
Le plus important des fichiers de configuration PAM est peut-être celui que l’on
pourrait appeler le fichier par défaut. Le fichier other contrôle l’authentification
de tous les services qui ne sont pas explicitement configurés sous d’autres noms
de services. Par conséquent, il est très important que le fichier other soit
configuré de manière crédible.
Voici le contenu du fichier /etc/pam.d/other par défaut:
auth
account
password
session
required
required
required
required
/lib/security/pam_deny.so
/lib/security/pam_deny.so
/lib/security/pam_deny.so
/lib/security/pam_deny.so
Voici le contenu du fichier /etc/pam.d/other:
auth
auth
account
account
passwd
passwd
session
session
required
required
required
required
required
required
required
required
pam_warn.so
pam_deny.so
pam_warn.so
pam_deny.so
pam_warn.so
pam_deny.so
pam_warn.so
pam_deny.so
L’indicateur de contrôle est le même pour tous les types de modules, required,
et deux modules sont invoqués :
D’abord, le module pam_warn.so est appelé pour enregistrer dans le journal
l’information sur la tentative en cours.
Ensuite, le module pam_deny.so est appelé pour simplement retourner un
échec et prévenir toutes sortes de connexions ou d’authentification. Ainsi, tout
service qui utilise PAM doit être explicitement paramétré pour autoriser
l’authentification, sinon les tentatives échoueront.
_____________________________________________________________________
 2011 Hakim Benameurlaine
10

Documents pareils