[gull] Authentification differente pour utilisateur local et distant

Marc SCHAEFER schaefer at alphanet.ch
Thu Jan 29 20:41:06 CET 2004


On Thu, Jan 22, 2004 at 10:03:17AM +0100, schaefer wrote:
> SSH permet de faire AllowGroups ou DenyGroups: créer un groupe

J'ajouterai qu'avec cette méthode il faut faire attention aux autres
manières de se connecter sur le système (console, FTP, etc). Dans ces
cas-là, la méthode historique était de mettre un shell non listé dans
/etc/shells (ou pour FTP de mettre l'utilisateur dans /etc/ftpusers).

Des versions modernes de FTP permettent des configurations plus fines
ainsi que des équivalents de DenyGroup.

Tout cela est fort complexe et il est facile de faire des erreurs. C'est
pour cela que PAM a été créé (Pluggable Authentification Modules).
L'idée était de sortir la partie identification des programmes, de
manière à pouvoir facilement corriger des problèmes de sécurité et
ajouter de nouvelles méthodes d'authentification globalement.

Les bibliothèques PAM sont des fichiers .so (shared objects, objets
partagés: sorte de bibliothèques partagées chargées à la demande, les
personnes sous Microsoft Windows compareront au concept de DLL).

PAM se configure en général dans le fichier /etc/pam.conf. Certaines
distributions (p.ex. Debian) ont plutôt un répertoire /etc/pam.d/ dont
chacun des fichiers -- à la mode de /etc/cron.d/ par exemple appartient
à un package donné (p.ex. ssh, proftpd, etc) et contient les
configurations par défaut de ce package.

Il y a aussi une configuration particulier, others, situé dans ce cas
dans /etc/pam.d/others et qui donne les paramètres par défaut lorsque
rien n'est spécifié.

En tous cas sur la Debian et pour SSH, par défaut c'est others qui
s'applique car toutes les configurations spécifiques dans /etc/pam.d/ssh
sont commentées.

On pourrait donc modifier /etc/pam.d/others pour interdire certains
utilisateurs globalement, et adapter si nécessaire pour POP et/ou FTP
par exemple.

Exemple simple: (à ajouter dans /etc/pam.d/ssh)

   interdire les utilisateurs listés dans un fichier donné, sinon passer
   par authentification UNIX

   auth required /usr/lib/security/pam_unix_auth.so
   auth    required    pam_listfile.so \
                    onerr=succeed item=user sense=deny \
                    file=/etc/blacklisted_users
   
Autre exemple:

   interdire les connexions sous `root' via SSH ne provenant pas
   de machines spécifiquement listées.

      /etc/security/access.conf

         -:root:ALL EXCEPT 1.2.3.4

      /etc/pam.d/ssh

        account required pam_access.so

Malgré tout, comme on joue avec l'identification système globalement, il
est conseillé de faire des essais de connexion (console, SSH, su) avant de
quitter sa session `root' si on modifie la configuration PAM.

Je n'ai pas vérifié s'il faut redémarrer les daemons concernés (p.ex.
/etc/init.d/ssh reload ou restart) si l'on modifie PAM.

Plus d'informations dans le package libpam-doc (en tous cas sous
Debian), notamment sur chacun des modules existants.




More information about the gull mailing list