From owner-freebsd-hackers Thu Apr 25 7:33:17 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by hub.freebsd.org (Postfix) with ESMTP id EEF2C37B434 for ; Thu, 25 Apr 2002 07:33:02 -0700 (PDT) Received: from fledge.watson.org (fledge.pr.watson.org [192.0.2.3]) by fledge.watson.org (8.11.6/8.11.6) with SMTP id g3PEWTw80677; Thu, 25 Apr 2002 10:32:29 -0400 (EDT) (envelope-from robert@fledge.watson.org) Date: Thu, 25 Apr 2002 10:32:28 -0400 (EDT) From: Robert Watson X-Sender: robert@fledge.watson.org To: Joshua Goodall Cc: Jordan Hubbard , hackers@FreeBSD.ORG Subject: Re: Erm, since everyone managed to HIJACK my sshd thread! ;) In-Reply-To: <20020425094528.GE86692@roughtrade.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Thu, 25 Apr 2002, Joshua Goodall wrote: > On Wed, Apr 24, 2002 at 09:08:08PM -0700, Jordan Hubbard wrote: > > > BTW, what I'm suggesting here is the equivilent of the "no_fake_prompts" > > > setting in pam_opie.so found in -CURRENT. Basically, if the flag is set, > > > > Again, by all means, generate some diffs and we'll look 'em over. I'm > > far less interest in debating this in abstract terms and at least > > Joshua provided a better implementation than what I was suggesting, > > which is why I'm now just going to take his proposed change unless > > someone gives me something better yet. > > n.b. this is actually an OPIE challenge, despite saying S/Key. > Unfortunately the openssh in -stable totally ignores pam and talks > directly to libopie, so we have to work inside sshd. > > Committing to -current was almost certainly unnecessary and regressing > since the version there honours pam.d/sshd which doesn't have pam_opie > on by default, and if you do put it in, you can use the no_fake_prompts > option. I recommend backing that out. Ack, if it was committed, it should definetely be backed out, since the sole effect would be to break OPIE, and there would really be no redeeming effect at all. A little bit of testing should have demonstrated as much; if not, well, more fixes might be required. > The following patch to -stable is opie & rwatson friendly, won't give a > challenge unless you actually have an entry in /etc/opiepasswd, and has > a knob for toggling fake challenges (which is off by default). > Hopefully that satisfies everyone! My only comment would be that you use the term "s/key" in the description in the configuration file, and that should probably read "OPIE" for all the reasons you identified. I realize this will make the source code look even more inconsistent, but who knows.. :-) Thanks for working through this one, Robert N M Watson FreeBSD Core Team, TrustedBSD Project robert@fledge.watson.org NAI Labs, Safeport Network Services > Index: auth-chall.c > =================================================================== > RCS file: /cvs/src/crypto/openssh/auth-chall.c,v > retrieving revision 1.2.2.1 > diff -u -r1.2.2.1 auth-chall.c > --- auth-chall.c 28 Sep 2001 01:33:33 -0000 1.2.2.1 > +++ auth-chall.c 25 Apr 2002 09:28:16 -0000 > @@ -28,6 +28,9 @@ > > #include "auth.h" > #include "log.h" > +#include "servconf.h" > + > +extern ServerOptions options; > > #ifdef BSD_AUTH > char * > @@ -77,9 +80,12 @@ > { > static char challenge[1024]; > struct opie opie; > + if (opie_haskey(authctxt->user) == 1 && > + options.fake_challenge != 1) > + return NULL; > if (opiechallenge(&opie, authctxt->user, challenge) == -1) > return NULL; > - strlcat(challenge, "\nS/Key Password: ", sizeof challenge); > + strlcat(challenge, "\nOPIE Password: ", sizeof challenge); > return challenge; > } > int > Index: servconf.c > =================================================================== > RCS file: /cvs/src/crypto/openssh/servconf.c,v > retrieving revision 1.3.2.12 > diff -u -r1.3.2.12 servconf.c > --- servconf.c 25 Apr 2002 05:58:53 -0000 1.3.2.12 > +++ servconf.c 25 Apr 2002 08:36:02 -0000 > @@ -88,6 +88,7 @@ > options->password_authentication = -1; > options->kbd_interactive_authentication = -1; > options->challenge_reponse_authentication = -1; > + options->fake_challenge = -1; > options->permit_empty_passwd = -1; > options->use_login = -1; > options->allow_tcp_forwarding = -1; > @@ -207,7 +208,9 @@ > if (options->kbd_interactive_authentication == -1) > options->kbd_interactive_authentication = 0; > if (options->challenge_reponse_authentication == -1) > - options->challenge_reponse_authentication = 0; > + options->challenge_reponse_authentication = 1; > + if (options->fake_challenge == -1) > + options->fake_challenge = 0; > if (options->permit_empty_passwd == -1) > options->permit_empty_passwd = 0; > if (options->use_login == -1) > @@ -248,7 +251,7 @@ > #ifdef AFS > sKrb4TgtPassing, sAFSTokenPassing, > #endif > - sChallengeResponseAuthentication, > + sChallengeResponseAuthentication, sFakeChallenge, > sPasswordAuthentication, sKbdInteractiveAuthentication, sListenAddress, > sPrintMotd, sPrintLastLog, sIgnoreRhosts, > sX11Forwarding, sX11DisplayOffset, > @@ -302,6 +305,7 @@ > { "kbdinteractiveauthentication", sKbdInteractiveAuthentication }, > { "challengeresponseauthentication", sChallengeResponseAuthentication }, > { "skeyauthentication", sChallengeResponseAuthentication }, /* alias */ > + { "fakechallenge", sFakeChallenge }, > { "checkmail", sCheckMail }, > { "listenaddress", sListenAddress }, > { "printmotd", sPrintMotd }, > @@ -647,6 +651,10 @@ > > case sChallengeResponseAuthentication: > intptr = &options->challenge_reponse_authentication; > + goto parse_flag; > + > + case sFakeChallenge: > + intptr = &options->fake_challenge; > goto parse_flag; > > case sPrintMotd: > Index: servconf.h > =================================================================== > RCS file: /cvs/src/crypto/openssh/servconf.h,v > retrieving revision 1.3.2.5 > diff -u -r1.3.2.5 servconf.h > --- servconf.h 28 Sep 2001 01:33:34 -0000 1.3.2.5 > +++ servconf.h 25 Apr 2002 06:49:12 -0000 > @@ -99,6 +99,7 @@ > * authentication. */ > int kbd_interactive_authentication; /* If true, permit */ > int challenge_reponse_authentication; > + int fake_challenge; > int permit_empty_passwd; /* If false, do not permit empty > * passwords. */ > int use_login; /* If true, login(1) is used */ > Index: sshd.8 > =================================================================== > RCS file: /cvs/src/crypto/openssh/sshd.8,v > retrieving revision 1.5.2.7 > diff -u -r1.5.2.7 sshd.8 > --- sshd.8 28 Sep 2001 01:33:35 -0000 1.5.2.7 > +++ sshd.8 25 Apr 2002 09:39:50 -0000 > @@ -414,6 +414,17 @@ > can be used as wildcards in the patterns. > Only user names are valid; a numerical user ID isn't recognized. > By default login is allowed regardless of the user name. > +.It Cm FakeChallenge > +Specifies whether OPIE challenges should be attempted (and thus > +randomly generated) if a user does not have an OPIE key setup > +and ChallengeResponseAuthentication is set to > +.Dq yes . > +The argument must be > +.Dq yes > +or > +.Dq no . > +The default is > +.Dq no . > .It Cm GatewayPorts > Specifies whether remote hosts are allowed to connect to ports > forwarded for the client. > Index: sshd_config > =================================================================== > RCS file: /cvs/src/crypto/openssh/sshd_config,v > retrieving revision 1.4.2.7 > diff -u -r1.4.2.7 sshd_config > --- sshd_config 25 Apr 2002 05:58:53 -0000 1.4.2.7 > +++ sshd_config 25 Apr 2002 08:36:19 -0000 > @@ -48,8 +48,10 @@ > PasswordAuthentication yes > PermitEmptyPasswords no > > -# Uncomment to enable s/key passwords > -#ChallengeResponseAuthentication yes > +# Uncomment to disable s/key passwords > +#ChallengeResponseAuthentication no > +# Uncomment to generate fake s/key challenges > +#FakeChallenge yes > > # To change Kerberos options > #KerberosAuthentication no > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message