bin/71147: sshd(8) will allow to log into a locked account
yar at comp.chem.msu.su
Mon Aug 30 07:10:30 PDT 2004
The following reply was made to PR bin/71147; it has been noted by GNATS.
From: Yar Tikhiy <yar at comp.chem.msu.su>
To: Gleb Smirnoff <glebius at freebsd.org>
Cc: FreeBSD-gnats-submit at freebsd.org, des at freebsd.org
Subject: Re: bin/71147: sshd(8) will allow to log into a locked account
Date: Mon, 30 Aug 2004 18:00:21 +0400
On Mon, Aug 30, 2004 at 05:50:14PM +0400, Gleb Smirnoff wrote:
> On Mon, Aug 30, 2004 at 04:52:54PM +0400, Yar Tikhiy wrote:
> Y> In FreeBSD (and other BSDs,) the well-known way to lock out
> Y> a user's account is setting the user's encrypted password to
> Y> an asterisk character, `*', in master.passwd. Arguably, one
> Y> can also lock out a user by just _prefixing_ the password field
> Y> value with `*'. Anyway, sshd(8) will ignore either lock
> Y> and allow the user to log in if he authenticates himself by
> Y> means other than the Unix password, e.g., using his public key.
> This is not a bug, it's a feature! Any ssh (not only Open) has the
> same behavior on any unix operating system.
Has it? The sshd(8) manpage says a different thing! And I'll be
damned if the OpenSSH code doesn't check for OS-specific lock strings
in the password hash field.
> I'm utilizing this feature since I use pubkey authentification.
I'm afraid it's a dangerous feature to have. Personally, I like
the way described on the sshd(8) manpage: you set the password
field exactly to the dedicated value to lock out a user completely,
or you set it to a variant to just disable password-based auth for
him. In FreeBSD the dedicated value is `*' (or, perhaps, leading
`*', as I observed in some communities), while any other character in
front of a password hash or after it will effectively deny any password
since our hashes are fixed-length, so they can't be matched by
a string of a different length.
More information about the freebsd-bugs