Jakub Svoboda píše v Po 26. 09. 2016 v 17:36 +0200: > > Hi, > > > nologin is listed in /etc/shells since 2002 [1]. Hi, based on the discussion, I think it is really time to remove nologin from /etc/shells in Rawhide. Only one person objecting against the removal is J.C. Cleaver , primarily because "bug becomes expected feature after 14 years". I don't think we should change this in released Fedoras ( I don't think this is critical security hole, when you have access to local shell, it is usually enough anyway ;) ), but adjustment in Rawhide seems reasonable. Any objections (other than "bug becomes expected")? Regards, Ondrej > > > This is in conflict with: > > man 5 shells > DESCRIPTION > /etc/shells is a text file which contains the full pathnames > of valid > login shells. > > > > man 8 nologin > DESCRIPTION > nologin displays a message that an account is not available > and exits > non-zero. It is intended as a replacement shell field to > deny login > access to an account. > > NOTES > nologin is a per-account way to disable login (usually used for > system > accounts like http or ftp). > > > man 1 su > OPTIONS > -s, --shell=shell > Run the specified shell instead of the default. > > [snip] > > If the target user has a restricted shell (i.e. not > listed in > /etc/shells), the --shell option and the SHELL > environment vari‐ > ables are ignored unless the calling user is root. > > > Actual behavior and man pages are consistent for su and nologin and > their behavior is affected indirectly by /etc/shells. The > inconsistency lies in /etc/shells containing nologin and man 5 shells > semantically telling the opposite. > > > Let's fix it. > > > The stated reason for including nologin in shells is "so that 'chsh' > and other tools will allow its use without manual edit > of /etc/passwd" [1]. This is argument is inaccurate. Tests on RHEL 6.0 > and fc24 showed that the man page for chsh is correct - > when /sbin/nologin is not in /etc/shells, root can successfully run > chsh -s /sbin/nologin username. It prints a warning but it does change > the default shell to /sbin/nologin. man 1 chsh: > > VALID SHELLS > chsh will accept the full pathname of any executable file on > the sys‐ > tem. However, it will issue a warning if the shell is not > listed in > the /etc/shells file. On the other hand, it can also be > configured > such that it will only accept shells listed in this file, > unless you > are root. > > > > Removing /sbin/nologin from /etc/shells would prohibit a regular user > to set /sbin/nologin as the default shell for themselves - an action > that makes little sense. > > > /sbin/nologin being in /etc/shells poses security and logical > problems: > > > - su -s /bin/bash - nologinuser (if "nologinuser" has /sbin/nologin as > the default shell) succeeds with /bin/bash if auth is successful [2], > even though man 1 su, man 8 nologin, and man 5 shells suggest that > such a user is a restricted user and logging in with an alternate > specified shell should be forbidden. > > > - Red Hat Enterprise Linux 7 Security Guide advises [3] > that /sbin/nologin should be used to prevent direct login to an > account - the root account in this example. Presumably, this should be > prevented in the case where the attacker has valid login credentials > for the account. In that very case, however, the attacker can use an > ordinary account to run su -s /bin/bash - root because the protection > for this very attack present in su is rendered useless > by /sbin/nologin being listed in /etc/shells. > > > - selinux has a workaround for /sbin/nologin - > https://www.redhat.com/archives/fedora-maintainers/2007-May/msg00893.html > > - gdm has a workaround for /sbin/nologin - > https://www.redhat.com/archives/fedora-maintainers/2007-May/msg00894.html > > > - Debian doesn't list nologin in /etc/shells. An opinion from a Debian > developer [4]: "The point of having a shell that's not in /etc/shells > isn't that you can't use it to log in, but that it's not a normal > shell and that users with that shell set can't change it to something > else. Adding nologin to /etc/shells would be very likely to open > security vulnerabilities, and I will not do it." > > > > > It seems as though /sbin/nologin is listed in /etc/shells as a > workaround to some issues without even documenting it in the man > pages. These issues are not important enough for those distributions > and OSes that don't list /sbin/nologin in /etc/shells. Maybe fedora > should be on the same boat. > > > The rabbit hole of the past bugs and discussions about this starts > here [5]. > > > > This is a bug that either lies solely in the setup package (which > lists /sbin/nologin in the /etc/shells file) or it is an inter-package > bug where multiple packages that are correct on their own exhibit an > incorrect behavior together. In any case, it is clear *something* is > wrong here. > > > > What can we do to fix this issue or to at least to make man pages > consistent with the actual behavior? Are there serious reasons to > continue listing /sbin/nologin in /etc/shells? > > > [1] https://bugzilla.redhat.com/show_bug.cgi?id=53963 > [2] https://bugzilla.redhat.com/show_bug.cgi?id=1378893#c0 > [3] > https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Controlling_Root_Access.html#sec-Disallowing_Root_Access > [4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=419132#32 > [5] https://bugzilla.redhat.com/show_bug.cgi?id=1378893#c1 > > > Thanks, > > > > -- > Jakub Svoboda / Red Hat Product Security > > > _______________________________________________ > devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx