Configuration pam_time.so

Salut à tous,

Je souhaiterai mettre en place une double authentification avec googleauthenticator en ssh.
Je n’ai pas de problèmes pour ça, mais je voudrais ajouter des règles supplémentaires

Le but de la manip est de faire :
Si la connexion se fait à partir de certaines IP (définies avec pam_access.so ) et sur certaines plages horaires, pas besoin de l’authentification google.

J’ai réussi à configurer pam_access.so et cela fonctionne bien, par contre je galère avec les heures, je n’arrive pas à faire fonctionner time.so malgré mes recherches sur le net. J’ai testé pas mal de config différentes mais ce la ne fonctionne pas

J’ai rajouté à la fin du /etc/pam.d/sshd
auth [success=1 default=ignore] pam_time.so
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so nullok

Fichier /etc/security/
;:*;Wd0700-2100

J’ai volontairement mis Wd (samedi/dimanche) pour mes tests, après je veux mettre Wk pour autoriser la connexion sans google authentifcator en semaine de 7 à 21h

Merci

salut,

https://linux.die.net/man/5/time.conf

le premier champ est un nom de service
le deuxième champ c’est une liste de terminaux
le troisième champ est une liste d’utilisateurs

Pour interdire sshd de partout, à tout le monde, tous les jours de 2h à 4h, ça donne des exemples du genre

sshd;*;*;!Al0200-0400

voir aussi https://debian-administration.org/article/227/Restricting_server_access_by_time

Je n’avais pas vu dans mon post, mais j’ai eu un louper du copier coller, mais syntaxe était bien similaire à celle que tu m’a donnée

*;*;*;Wk0700-2100

Je pense plutôt que c’est mon /etc/pam.d/sshd qui pose problème.

Si à la place de
auth [success=1 default=ignore] pam_time.so

Je mets
account [success=2 default=ignore] pam_time.so

Je ne peux plus me connecter en ssh, le shell me demande deux fois le mot de passe avant de me déconnecter.

As tu vu cet exemple
http://www.tuxradar.com/answers/283

Merci pour l’exemple,
J’ai essayé de faire une modif simple en supprimant le google autentificator et access.so, et je peux toujours me connecter malgré mes modifications de la plage horaire.
pam_time.so ne semble pas fonctionner ni être pris en compte.

sur le modèle des exemples, pour que ce soit pris en compte as tu essayé

auth required pam_time.so

Je viens de modifier mon fichier de conf en suivant l’exemple précédent et j’arrive à bloquer la connexion si la plage horaire est pas bonne.

    @include common-auth

account    required     pam_nologin.so

account required pam_time.so ## LIGNE QUE J’AI RAJOUTEE

@include common-account


session [success=ok ignore=ignore module_unknown=ignore default=bad]
session    required     pam_loginuid.so
session    optional     pam_keyinit.so force revoke
@include common-session
session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate
session    optional     pam_mail.so standard noenv # [1]
session    required     pam_limits.so
session    required     pam_env.so # [1]
session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale

@include common-password

# DA
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access$
auth required pam_google_authenticator.so nullok

J’ai copié mon fichier de conf en laissant les options par défaut, j’ai mis la ligne
account required pam_time.so en début de fichier au lieu de la fin.

Quand l’heure est pas bonne il bloque totalement l’authentification, quand elle est bonne il continue la lecture du fichier et si il n’est pas dans le réseau que j’ai “approuvé” il bascule sur google authentification ce qui est un bon point.

Si l’heure n’est pas bonne, plutôt que de bloquer l’authentification, j’aimerai qu’il bascule sur l’authentification par google.

Dois je mettre quelque chose de type auth [success=1 default=ignore] pam_time.so et remettre
auth required pam_google_authenticator.so nullok après?

si j’en crois le manuel
http://www.linux-pam.org/Linux-PAM-html/sag-pam_time.html

pam-time va renvoyer
PAM_PERM_DENIED
Access was not granted.

que tu peux tester
http://www.linux-pam.org/Linux-PAM-html/sag-configuration-file.html

du genre perm_denied=ignore

J’ai essayé plusieurs méthodes dont celle ci

auth [success=2 default=ignore] sufficient pam_access.so accessfile=/etc/security/access-local.conf
auth [success=1 default=ignore] sufficient pam_time.so
auth required pam_google_authenticator.so nullok

Dans le cas là, ça me demande authentification google même si je suis sur le bon reseau et si l’heure est bonne.
Dans une autre config, j’ai aussi testé perm_denied=ignore mais cela n’a pas fonctionné non plus.
J’avoue être perdu, j’ai lu dans une doc que si un sufficient de la pile répond ok, pam considère que tout est bon.
La ligne success=2 veut dire que si pam_access.so répond ok, il n’exécute pas les lignes d’en dessous.

La config suivante (juste avec le test pam_access.so) fonctionne; si je suis sur le bon réseau il n’exécute pas pam_google_authenticator.so

auth [success=1 default=ignore] required pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so nullok

http://www.linux-pam.org/Linux-PAM-html/sag-configuration-file.html
N (an unsigned integer)
equivalent to ok with the side effect of jumping over the next N modules in the stack. Note that N equal to 0 is not allowed (and it would be identical to ok in such case).

en effet ça permet de sauter N ligne

mais attention

sufficient (suffisant)
if such a module succeeds and no prior required module has failed the PAM framework returns success to the application or to the superior PAM stack immediately without calling any further modules in the stack. A failure of a sufficient module is ignored and processing of the PAM module stack continues unaffected.

Si un test suffisant est ok ça arrete le traitement et on ne lit pas le reste de la pile

Donc logiquement si le
auth [success=2 default=ignore] sufficient pam_access.so accessfile=/etc/security/access-local.conf
est ok,ça devrait pas lire les lignes suivantes et pourtant ça me réclame quand même l’authentification google.
Dans l’exemple qui fonctionne précédemment, ils mettent un required et lui font sauter la linge suivante si c’est OK.
Je ne comprend pas pourquoi quand j’applique le même modèle avec time.so, ça fonctionne pas.

Sauf si
sufficient (suffisant)
if such a module succeeds and no prior required module has failed…

N’y a t-il pas un test en required qui a échoué avant le test pam_access.so?

Salut,
Les choses avant sont les paramètres par défaut.
Je voudrais bien tout supprimer et repartir d’un fichier de configuration de base, mais y’a t’il un strict minimum à avoir?

tout est là http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_SAG.html

J’ai vu cette doc mais j’ai pas tout compris, c’est peu être pas possible de faire ce que je veux.
Il y à moyen de loguer ou de suivre pas à pas des action du fichier PAM?

voir http://www.linux-pam.org/Linux-PAM-html/sag-pam_debug.html

En cherchant pam_debug, ce lien me permets d’accéder à un manuel, le chapitre 4 concerne pam

https://books.google.fr/books?id=xeBjWEy6yL4C&pg=PT129&lpg=PT129&dq=pam_debug&source=bl&ots=Ju8Yesgg5s&sig=8u8-Gx6wizvR2WyW2vGxYxAixu8&hl=fr&sa=X&ved=0ahUKEwiej8mlj6zUAhVHVhoKHU_dD-U4ChDoAQgvMAI#v=onepage&q=pam_debug&f=false

Je te remercie pour l’info, j’avais mis ça de coté aujourd’hui., je vais y jeter un œil en espérant avancer un peu.

Salut,

En ajoutant la commande debug, pam à remonté deux erreurs :
Jun 8 12:42:20 da sshd[1425]: PAM unable to resolve symbol: pam_sm_authenticate
Jun 8 12:42:20 da sshd[1425]: PAM unable to resolve symbol: pam_sm_setcred

Est-ce normal ou pas?