[PATCH] Add config option disabling drop_connection() behavior
Ben Lindstrom
mouring at etoh.eviladmin.org
Wed May 29 15:10:56 EST 2002
I'd rather see the following applied before yours. Mainly because
I don't want 'Yet another Fine Option' floating arounding. Plus
it touchs less code and acts the way 90% of what people expect.
The more options you provide the more chances someone will fuck up.
Besides this follows the KISS concept. =)
- Ben
[Against -current portable]
Index: sshd.c
===================================================================
RCS file: /var/cvs/openssh/sshd.c,v
retrieving revision 1.207
diff -u -r1.207 sshd.c
--- sshd.c 21 May 2002 17:59:13 -0000 1.207
+++ sshd.c 29 May 2002 05:12:07 -0000
@@ -721,6 +721,10 @@
{
double p, r;
+ /* If Max Startup is zero, then the feature is disabled */
+ if (options->max_startups == 0)
+ return 0;
+
if (startups < options.max_startups_begin)
return 0;
if (startups >= options.max_startups)
On Wed, 29 May 2002, Garry Zacheiss wrote:
> The patch below (against openssh 3.2.3p1) adds a
> CheckMaxStartups option, defaulting to yes, to determine whether sshd
> calls drop_connection().
>
> The motivation behind this is twofold. In our environment, our
> timesharing machines get enough incoming connections that will trigger
> spuriously with the default value (10 forked unauthenticated
> connections) as well as some significantly higher values, and I'd rather
> disable this feature than just configure it to some ridiculously high
> value.
>
> A secondary motivation is that this code is sometimes triggered
> when the machine's AFS client has gotten into a broken state (forked
> sshd tries to touch AFS for user homedir, loses), and I've already had
> at least one coworker get dragged down the wrong debugging path and "try
> to debug why sshd is accepting new connections and immediately dropping
> them" when the real problem the machine is experiencing is different.
>
> It didn't seem like being able to selectively disable this
> feature would be a bad thing, so please consider this patch for
> inclusion in a future version of OpenSSH.
>
> I'm not currently subscribed to this list, so please cc me on
> any replies. Thanks in advance for your consideration.
>
> Garry
>
> --- servconf.h 2002/05/29 03:50:01 1.1
> +++ servconf.h 2002/05/29 03:50:53
> @@ -112,6 +112,7 @@
> char *subsystem_name[MAX_SUBSYSTEMS];
> char *subsystem_command[MAX_SUBSYSTEMS];
>
> + int check_max_startups;
> int max_startups_begin;
> int max_startups_rate;
> int max_startups;
> --- servconf.c 2002/05/29 03:49:54 1.1
> +++ servconf.c 2002/05/29 03:54:09
> @@ -112,6 +112,7 @@
> options->protocol = SSH_PROTO_UNKNOWN;
> options->gateway_ports = -1;
> options->num_subsystems = 0;
> + options->check_max_startups = -1;
> options->max_startups_begin = -1;
> options->max_startups_rate = -1;
> options->max_startups = -1;
> @@ -228,6 +229,8 @@
> options->allow_tcp_forwarding = 1;
> if (options->gateway_ports == -1)
> options->gateway_ports = 0;
> + if (options->check_max_startups == -1)
> + options->check_max_startups = 1;
> if (options->max_startups == -1)
> options->max_startups = 10;
> if (options->max_startups_rate == -1)
> @@ -281,7 +284,8 @@
> sUseLogin, sAllowTcpForwarding,
> sAllowUsers, sDenyUsers, sAllowGroups, sDenyGroups,
> sIgnoreUserKnownHosts, sCiphers, sMacs, sProtocol, sPidFile,
> - sGatewayPorts, sPubkeyAuthentication, sXAuthLocation, sSubsystem, sMaxStartups,
> + sGatewayPorts, sPubkeyAuthentication, sXAuthLocation, sSubsystem,
> + sCheckMaxStartups, sMaxStartups,
> sBanner, sVerifyReverseMapping, sHostbasedAuthentication,
> sHostbasedUsesNameFromPacketOnly, sClientAliveInterval,
> sClientAliveCountMax, sAuthorizedKeysFile, sAuthorizedKeysFile2,
> @@ -353,6 +357,7 @@
> { "protocol", sProtocol },
> { "gatewayports", sGatewayPorts },
> { "subsystem", sSubsystem },
> + { "checkmaxstartups", sCheckMaxStartups },
> { "maxstartups", sMaxStartups },
> { "banner", sBanner },
> { "verifyreversemapping", sVerifyReverseMapping },
> @@ -835,6 +840,10 @@
> options->num_subsystems++;
> break;
>
> + case sCheckMaxStartups:
> + intptr = &options->check_max_startups;
> + goto_parse_flag;
> +
> case sMaxStartups:
> arg = strdelim(&cp);
> if (!arg || *arg == '\0')
> --- sshd.8 2002/05/29 03:50:10 1.1
> +++ sshd.8 2002/05/29 03:54:38
> @@ -656,6 +656,11 @@
> Multiple algorithms must be comma-separated.
> The default is
> .Dq hmac-md5,hmac-sha1,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 .
> +.It Cm CheckMaxStartups
> +Specifies whether the server should check the number of concurrent
> +unauthenticated connections to the daemon, and drop new incoming
> +connections if this number exceeds some threshold. See the
> +"MaxStartups" configuration option for more information.
> .It Cm MaxStartups
> Specifies the maximum number of concurrent unauthenticated connections to the
> .Nm
> --- sshd.c 2002/05/29 03:50:13 1.1
> +++ sshd.c 2002/05/29 03:55:59
> @@ -1243,7 +1243,8 @@
> close(newsock);
> continue;
> }
> - if (drop_connection(startups) == 1) {
> + if (options.check_max_startups &&
> + drop_connection(startups) == 1) {
> debug("drop connection #%d", startups);
> close(newsock);
> continue;
> _______________________________________________
> openssh-unix-dev at mindrot.org mailing list
> http://www.mindrot.org/mailman/listinfo/openssh-unix-dev
>
More information about the openssh-unix-dev
mailing list