On Sat, 2024-05-25 at 12:46 +0100, Sam Morris via FreeIPA-users wrote:
> On Sat, 2024-05-25 at 11:01 +0300, Alexander Bokovoy via FreeIPA-
> users
> wrote:
> > On Пят, 24 мая 2024, Sam Morris via FreeIPA-users wrote:
> > > On 24/05/2024 15:52, Alexander Bokovoy via FreeIPA-users wrote:
> > > > On Fri, 24 May 2024, Sam Morris via FreeIPA-users wrote:
> > > > > On 24/05/2024 13:07, Sam Morris via FreeIPA-users wrote:
> > > > > > On non-IPA clients I'm using AllowUsers/AllowGroups to
> > > > > > restrict 
> > > > > > which local users are able to SSH into a system.
> > > > > > 
> > > > > > On IPA clients I am using HBAC to control the same for IPA 
> > > > > > users. But what's the best way to control which local users
> > > > > > can 
> > > > > > SSH in to an IPA client?
> > > > > 
> > > > > Sorry, I forgot to add "... without disrupting access to the
> > > > > IPA 
> > > > > client for IPA users".
> > > > 
> > > > [...]
> > > > 
> > > > I don't understand why you cannot handle the access control
> > > > through HBAC
> > > > rules. These days glibc supports group merging feature (since
> > > > glibc
> > > > 2.24, around 2016), so you can have a group in IPA and a group
> > > > in
> > > > /etc/group, then include local user into that local group. With
> > > > appropriate configuration, SSSD will add local user into that
> > > > IPA
> > > > group
> > > > membership locally and thus you can use that IPA group in HBAC
> > > > rules.
> > > > 
> > > > See
> > > > https://sourceware.org/glibc/wiki/Proposals/GroupMerging and
> > > > man
> > > > page for nsswitch.conf(5), 'merge' ACTION for 'group'
> > > > database.>
> > > 
> > > Thanks for that, I haven't used group merging yet. But, hmm, I'm
> > > not 
> > > sure it will help here...
> > > 
> > > My goals are:
> > > 
> > > * Local user access to be controlled by group membership
> > > * IPA user access to be controlled via IPA HBAC
> > > * IPA user access to not be controlled by group membership
> > 
> > I don't know how you would get that working. What I suggest instead
> > is
> > to have both local and IPA users access done via IPA HBAC. This is
> > possible to achieve without modifying any PAM or SSH daemon setup.
> > 
> > [...]
> > 
> > Your IPA allow-ssh POSIX group will have no members in IPA.
> > Your local allow-ssh POSIX group will have local users that need to
> > be
> > logged in on a specific host.
> > 
> > Your HBAC rule for allow-ssh would include IPA allow-ssh group.
> > That
> > is
> > enough -- the rest is done by SSSD on the specific system.
> 
> Oh, I didn't know that HBAC rules could apply to local users!
> 
> I've now got an HBAC rule that has sshd added to it as well as my
> empty
> IPA POSIX group. And it applies to all hosts. I've not yet added my
> local user (id 1000) to it, but the local user can still log in.
> 
> I'm on Fedora 40 and I've got the standard authselect sssd profile
> selected and the "enable-with-files-access-provider" feature enabled.
> This gives me the following PAM configuration:
> 
> --- /etc/pam.d/sshd
> account    required     pam_sepermit.so
> account    required     pam_nologin.so
> account    include      password-auth
> 
> --- /etc/pam.d/password-auth
> account     required                     pam_unix.so
> account     sufficient                   pam_usertype.so issystem
> account     [default=bad success=ok user_unknown=ignore] pam_sss.so
> #account required pam_deny.so
> account     required                      pam_permit.so
> 
> By uncommenting and moving the pam_deny line around I can see that
> it's
> pam_sss that's letting my local user in, even though they are not a
> member of any groups added to any HBAC rules.
> 
> At debug_level 4 these messages are printed to sssd_pam.log:
> 
> (2024-05-25 12:39:49): [pam] [pam_cmd_acct_mgmt] (0x0100): [CID#11]
> entering pam_cmd_acct_mgmt
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> command: SSS_PAM_ACCT_MGMT
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> domain: not set
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> user: local
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> service: sshd
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11] tty:
> ssh
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> ruser: not set
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> rhost: ::1
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> authtok type: 0 (No authentication token available)
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> newauthtok type: 0 (No authentication token available)
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> priv: 1
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> cli_pid: 33797
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> child_pid: 0
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> logon name: local
> (2024-05-25 12:39:49): [pam] [pam_print_data] (0x0100): [CID#11]
> flags: 0

Aha, at debug_level = 5 this is logged just after the above:

(2024-05-25 15:05:00): [pam] [sss_parse_name_for_domains] (0x0200): [CID#32] 
name 'local' matched without domain, user is local
(2024-05-25 15:05:00): [pam] [sss_parse_name] (0x0200): [CID#32] Domain not 
provided!
(2024-05-25 15:05:00): [pam] [sss_parse_name_for_domains] (0x0200): [CID#32] 
name 'local' matched without domain, user is local
(2024-05-25 15:05:00): [pam] [pam_reply] (0x0200): [CID#32] blen: 8
(2024-05-25 15:05:00): [pam] [pam_reply] (0x0200): [CID#32] Returning [10]: 
User not known to the underlying authentication module to the client

So it looks like pam_sss is returning 'user_unknown' rather than
allow/deny. 


-- 
Sam Morris <s...@robots.org.uk>
--
_______________________________________________
FreeIPA-users mailing list -- freeipa-users@lists.fedorahosted.org
To unsubscribe send an email to freeipa-users-le...@lists.fedorahosted.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/freeipa-users@lists.fedorahosted.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to