Configuration Faillock PAM Debian 11

Tags: #<Tag:0x00007f63f243c8a0>

Bonjour a tous,
Je viens vers vous pour une question, je tiens a préciser que je suis novice en la matière.
J’essaie de configurer Faillock pour les tentatives de connexion ssh, j’aimerais bloquer pendant 1 minutes l’utilisateur après 4 tentative infructueuse.
Mon problème étant que quand je regarde des tuto sur internet il parle tous de fichier system-auth, password-auth, etc mais sur ma Debian dans le dossier /etc/pam.d je n’ai pas s’est fichier mais des fichiers types common-auth etc.
Voici ma configuration dans l’ordre,
les fichiers common-auth et sshd du dossier /etc/pam.d et le fichier /etc/security/faillock.conf
5
et enfin dans /etc/ssh/sshd_config
j’ai activer l’utilisation de PAM

Et avec cette configuration quand j’essaie une connexion ssh il ne me demande que 3 mots de passe et ne bloque pas l’utilisateur.
Si quelqu’un sait me dire ce qu’il me manque je lui en serais reconnaissant.
En attente de vos réponses avec impatience.

Bonjour et bienvenue dans cette communauté,

Pour des raisons techniques (différence de taille entre du texte et une image) et humaines (des personnes qui auraient pu t’aider ne le feront pas à cause d’un handicap visuel), mettre une capture d’écran pour du texte est une très mauvaise idée, d’autant que tu peux coller ce même texte directement dans le message.
Personnellement, j’ai beaucoup de mal à lire le noir sur blanc, je ne vois que des pattes de mouche sur un fond blanc.
Peux-tu modifier ton message et remplacer l’image par le texte tu auras copié depuis ton terminal ?

Peu importe le nom, tant que le fichier en question est importé par le fichier /etc/pam.d/sshd, ce n’est pas spécialement un problème.

Personnellement, je bloque plutôt l’adresse IP source pendant une minute. Si tu bloques l’utilisateur, ça veut dire qu’un attaquant peut bloquer en boucle un (ou plusieurs) utilisateur(s) en lançant des tests de mots de passe en boucle. Dans ce cas, c’est plutôt l’attaquant que le compte qu’il faut bloquer, cet utilisateur voulant sans doute se connecter par ailleurs.

Hello et merci :D.

Voici la configuration en écrit
pour common-auth

# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]      pam_unix.so nullok
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around

auth    required        pam_faillock.so preauth deny=4 unlock_time=60
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

Pour le fichier sshd

# PAM configuration for the Secure Shell service
# Standard Un*x authentication.
@include common-auth
# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so
# Uncomment and edit /etc/security/access.conf if you need to set complex
# access limits that are hard to express in sshd_config.
# account  required     pam_access.so
# Standard Un*x authorization.
@include common-account
# SELinux needs to be the first session rule.  This ensures that any
# lingering context has been cleared.  Without this it is possible that a
# module could execute code in the wrong domain.
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
# Set the loginuid process attribute.
session    required     pam_loginuid.so
# Create a new session keyring.
session    optional     pam_keyinit.so force revoke
# Standard Un*x session setup and teardown.
@include common-session
session required pam_faillock.so deny=4 unlock_time=60

Pour le faillock.conf

# Deny access if the number of consecutive authentication failures
# for this user during the recent interval exceeds n tries.
# The default is 3.
deny = 4
#
# The length of the interval during which the consecutive
# authentication failures must happen for the user account
# lock out is <replaceable>n</replaceable> seconds.
# The default is 900 (15 minutes).
 fail_interval = 3  
#
# The access will be re-enabled after n seconds after the lock out.
# The value 0 has the same meaning as value `never` - the access
# will not be re-enabled without resetting the faillock
# entries by the `faillock` command.
# The default is 600 (10 minutes).
 unlock_time = 60 
#

Mais ton message ma fait réaliser que effectivement bloquer un compte est quelque peu contre productif, je vais donc plutôt installer fail2ban pour bannir les IP pendants un laps de temps défini. C’est bien ce que tu conseille ?

je suis tout de même curieux de savoir pourquoi ca ne fonctionne pas

Oui, c’est typiquement le genre de solution dont tu as besoin pour cet usage, mais je n’ai jamais utilisé fail2ban, je ne saurais pas t’aider plus…

Alors là, mon serveur SSH n’accepte même pas les mots de passe et le plus complexe que j’ai fait en PAM était un intégration dans un domaine AD.

1 J'aime

Bonjour,

Visiblement tu as suivi des tutos pour RedHat / CentOS qui ne sont pas adaptés à Debian. L’organisation des fichiers de configuration y est très différente.

Pour le fichier common_auth, tu devrais modifier ainsi et ne pas passer les paramètres qui doivent être déjà dans faillock.conf :

# Added faillock preauth
auth    required        pam_faillock.so preauth
auth    [success=1 default=ignore]      pam_unix.so nullok
# here's the fallback if no module succeeds
# auth    requisite                       pam_deny.so
# replace the default directive above:
auth    [default=die]                   pam_faillock.so authfail
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so

Tu dois aussi modifier le fichier common-account (une directive ajoutée) :

# reset the fail record on authentication success
account required                        pam_faillock.so
# here are the per-package modules (the "Primary" block)
account	[success=1 new_authtok_reqd=done default=ignore]	pam_unix.so
# here's the fallback if no module succeeds
account	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account	required			pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

Cela devrait fonctionner, et tu pourras vérifier après des échecs multiples avec la commande faillock

1 J'aime

Bonjour Bruno1,
Merci je vais essayé ce que tu me dit

RE : ca a fonctionné le compte est effectivement bloquer.
Merci pour vous réponses a tout les deux.