Niveau :      
Résumé : pam_tally

Aujourd'hui un conseil qu'il faut éviter de suivre. C'est pour vous éveiller l'esprit ;-) C'est aussi l'occasion de vous montrer qu'il ne faut pas prendre pour argent comptant ce qu'on trouve sur le net, il faut savoir faire correspondre à vos besoins réels les solutions toutes faites qu'on vous y propose (sauf ici bien sûr).

Nous allons donc étudier un module indispensable : pam_tally. Ce module est un module pam, c'est à dire générique à toute authentification sur unix (où presque, on me siffle dans l'oreille que slackware refuse l'utilisation de pam ...). Il permet de mettre en place une politique de limitation de tentatives d'accès.

Ça part d'une bonne idée, si vous faite 20 erreurs en tapant votre mot de passe, c'est probablement que vous êtes un méchant pirate qui tente de forcer la connexion. Par conséquent, on vous la coupe.

Comme tout plugin pam, il est presque facile a configurer :

# pam.d/common-auth
...
# deny=20 visons gros
# unlock_time=3600 si vous l'oubliez, vous risquez des ennuis
auth     required       pam_tally.so    deny=20 unlock_time=3600
...

Maintenant supposons que vous soyez vraiment un méchant pirate, quelle est la première chose que vous feriez ? 50 accès sur chaque compte que vous connaissez et hop, on rigole un coup devant Bob qui ne peut plus se connecter. Donc dans le cas de la connexion à distance c'est plutôt à l'application de faire un blocage par IP (et encore :-). Et dans le cas d'une application locale ("xscreensaver") ? Euh, vous n'avez jamais eu un ami qui vous a fait un blague sur votre poste ?

Finalement, ce plugin est-il inutile ?
Non : il a toujours son utilité, mais dans des cas très particuliers : dans votre carte de crédit, sur votre téléphone ... Son usage est en fait restreint aux applications dont on maîtrise (veut maîtriser) l'unique personne qui y a un accès physique.

Non : il peut aussi être légèrement détourné pour n'interdire que les tentatives de connexions en rafale sans vraiment bloquer l'utilisateur.

# pam.d/ssh
# lock_time=1 la fonctionnalité qui nous intéresse
auth     required       pam_tally.so   lock_time=1

Mais encore une fois, c'est à l'application de faire ceci en utilisant au mieux les données dont elle dispose (ip source, ...).