bugzilla-daemon at bugzilla.mindrot.org
2009-Dec-29 06:57 UTC
[Bug 1690] New: AllowUsers and DenyGroups directives are not parsed in the order specified
https://bugzilla.mindrot.org/show_bug.cgi?id=1690 Summary: AllowUsers and DenyGroups directives are not parsed in the order specified Product: Portable OpenSSH Version: 5.3p1 Platform: ix86 OS/Version: Linux Status: NEW Keywords: patch Severity: trivial Priority: P2 Component: sshd AssignedTo: unassigned-bugs at mindrot.org ReportedBy: pallenpost at gmail.com Created an attachment (id=1762) --> (https://bugzilla.mindrot.org/attachment.cgi?id=1762) Patch for src/auth.c to process AllowUsers/DenyGroups config directives correctly Details: When logging into the sshd server, if the server's sshd_config configuration file contains both "AllowUsers joe" and "DenyGroups joe", a user "joe" belonging to group "joe" will be denied access based on his group. However, the sshd_config man page states that AllowUsers should be processed before DenyGroups, thereby allowing joe to log in: "... The allow/deny directives are processed in the following order: DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups." To reproduce: 1) Create a user 'test' and give him a password. 2) Add these lines in sshd_config: AllowUsers test DenyGroups test 3) Restart sshd. 4) Attempt to SSH in as user 'test'. 5) Check /var/log/auth.log. The attempt will be reported as denied because the user is in a denied group. Solution: The solution depends on what the problem actually is: If the way it is currently working is the desired functionality, the man page just needs to be updated. However, if the order currently listed in the man page is desired, auth.c needs a quick patch. In that case, I have attached a patch for review. Basically, it tells allowed_user() to return true if the username is indeed present in the AllowUsers list. This falls in the correct order between DenyUsers and DenyGroups according to the man page. There was some ifdef'd auth check for AIX (?) that I also moved ahead so it would be checked before the user was authorized. -- Configure bugmail: https://bugzilla.mindrot.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2010-Jan-04 02:10 UTC
[Bug 1690] AllowUsers and DenyGroups directives are not parsed in the order specified
https://bugzilla.mindrot.org/show_bug.cgi?id=1690 Darren Tucker <dtucker at zip.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dtucker at zip.com.au --- Comment #1 from Darren Tucker <dtucker at zip.com.au> 2010-01-04 13:10:57 EST --- The problem is that the way these things work is that they only ever provide a way to deny a login, not allow it. That is to say if that if a given login would be denied by any one of the directives then it'll be denied. It's neither first-match nor last-match. Changing this would require changing the semantics of the directives, which would change the behaviour of existing configurations. We could maybe do this, but it would need to be well documented in the release notes, and it's almost inevitable that someone somewhere wants the current behaviour. Instead, I think we should (a) improve the documentation, and (b) add a new directive that can work with the Match directive which would allow the rules to be expressed as first-match in whichever order makes sense for your purpose. You would be able to express your rules as something like: Match User joe AllowLogin yes Match Group joe AllowLogin no Match rules are processed first-match per directive, so this should do what you want, and also allows easier use of Address rules and suchlike. -- Configure bugmail: https://bugzilla.mindrot.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug. You are watching someone on the CC list of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2011-Aug-25 04:40 UTC
[Bug 1690] AllowUsers and DenyGroups directives are not parsed in the order specified
https://bugzilla.mindrot.org/show_bug.cgi?id=1690 junk at buler.net changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |junk at buler.net --- Comment #2 from junk at buler.net 2011-08-25 14:40:39 EST --- I have to agree that this is a bug. The logical order of DenyUsers, AllowUsers, DenyGroups, AllowGroups that is noted in the documentation makes sense. The implementation does not. First off, DenyUsers works properly and can be ignored for this discussion. However, ask this: if an administrator SPECIFICALLY grants access to a user by listing their ID in AllowUsers, why should they be subject to further restrictions? In any case, here are the Allow/Deny tables for the existing and patched systems. The cases that would be changed are noted with an "*" AllowUsers DenyGroups AllowGroups Result F F F Deny F F T Allow F T F Deny F T T Deny T F F Deny T F T Allow T T F Deny T T T Deny New AllowUsers DenyGroups AllowGroups Result F F F Deny F F T Allow F T F Deny F T T Deny T F F *Allow* Case 1 T F T Allow T T F *Allow* Case 2 T T T *Allow* Case 3 Take each of the three cases: 1. User is AllowUser but not in DenyGroups or AllowGroups. This adds valuable functionality. Say you have users A and B in group 1 and users C, D, and E in group 2. You want to allow users A, C, D, E. If you define AllowUsers A and AllowGroups 2, user A will be rejected because they are not part of group 2. The only alternative is to AllowUsers A, C, D, E and not define AllowGroups. That is illogical. 2,3. The change in result from Deny to Allow where a user is an AllowedUser yet is a member of a DenyGroup is not as controversial a change as it may appear. Currently, the system is totally ignoring the AllowUser configuration when the user is a member of a DenyGroup. So the AllowUser configuration shouldn't even be in the configuration. Assuming most admins are smart enough to understand that, and don't have AllowedUsers that are also members of DenyGroups there should't be any significant repercussions. -- Configure bugmail: https://bugzilla.mindrot.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching the assignee of the bug. You are watching someone on the CC list of the bug.
Reasonably Related Threads
- ((AllowUsers || AllowGroups) && !(AllowUsers && AllowGroups))
- AllowUsers "logic" and failure to indicate bad configuration
- [Bug 2292] New: sshd_config(5): DenyUsers, AllowUsers, DenyGroups, AllowGroups should actually tell how the evaluation order matters
- AllowUsers Change
- AllowUsers not working under certain conditions