summaryrefslogtreecommitdiff
path: root/servconf.c
diff options
context:
space:
mode:
authorSimon Wilkinson <simon@sxw.org.uk>2014-02-09 16:09:48 +0000
committerColin Watson <cjwatson@debian.org>2017-10-04 13:54:43 +0100
commit4e70490950e5c5134df48848affaf73685bf0284 (patch)
tree59de097e770693fb1f81268e85f7802df32cb58e /servconf.c
parent62f54f20bf351468e0124f63cc2902ee40d9b0e9 (diff)
GSSAPI key exchange support
This patch has been rejected upstream: "None of the OpenSSH developers are in favour of adding this, and this situation has not changed for several years. This is not a slight on Simon's patch, which is of fine quality, but just that a) we don't trust GSSAPI implementations that much and b) we don't like adding new KEX since they are pre-auth attack surface. This one is particularly scary, since it requires hooks out to typically root-owned system resources." However, quite a lot of people rely on this in Debian, and it's better to have it merged into the main openssh package rather than having separate -krb5 packages (as we used to have). It seems to have a generally good security history. Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1242 Last-Updated: 2017-10-04 Patch-Name: gssapi.patch
Diffstat (limited to 'servconf.c')
-rw-r--r--servconf.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/servconf.c b/servconf.c
index 2c321a4ad..8ba745170 100644
--- a/servconf.c
+++ b/servconf.c
@@ -113,8 +113,10 @@ initialize_server_options(ServerOptions *options)
113 options->kerberos_ticket_cleanup = -1; 113 options->kerberos_ticket_cleanup = -1;
114 options->kerberos_get_afs_token = -1; 114 options->kerberos_get_afs_token = -1;
115 options->gss_authentication=-1; 115 options->gss_authentication=-1;
116 options->gss_keyex = -1;
116 options->gss_cleanup_creds = -1; 117 options->gss_cleanup_creds = -1;
117 options->gss_strict_acceptor = -1; 118 options->gss_strict_acceptor = -1;
119 options->gss_store_rekey = -1;
118 options->password_authentication = -1; 120 options->password_authentication = -1;
119 options->kbd_interactive_authentication = -1; 121 options->kbd_interactive_authentication = -1;
120 options->challenge_response_authentication = -1; 122 options->challenge_response_authentication = -1;
@@ -268,10 +270,14 @@ fill_default_server_options(ServerOptions *options)
268 options->kerberos_get_afs_token = 0; 270 options->kerberos_get_afs_token = 0;
269 if (options->gss_authentication == -1) 271 if (options->gss_authentication == -1)
270 options->gss_authentication = 0; 272 options->gss_authentication = 0;
273 if (options->gss_keyex == -1)
274 options->gss_keyex = 0;
271 if (options->gss_cleanup_creds == -1) 275 if (options->gss_cleanup_creds == -1)
272 options->gss_cleanup_creds = 1; 276 options->gss_cleanup_creds = 1;
273 if (options->gss_strict_acceptor == -1) 277 if (options->gss_strict_acceptor == -1)
274 options->gss_strict_acceptor = 1; 278 options->gss_strict_acceptor = 1;
279 if (options->gss_store_rekey == -1)
280 options->gss_store_rekey = 0;
275 if (options->password_authentication == -1) 281 if (options->password_authentication == -1)
276 options->password_authentication = 1; 282 options->password_authentication = 1;
277 if (options->kbd_interactive_authentication == -1) 283 if (options->kbd_interactive_authentication == -1)
@@ -410,6 +416,7 @@ typedef enum {
410 sHostKeyAlgorithms, 416 sHostKeyAlgorithms,
411 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, 417 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile,
412 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, 418 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor,
419 sGssKeyEx, sGssStoreRekey,
413 sAcceptEnv, sPermitTunnel, 420 sAcceptEnv, sPermitTunnel,
414 sMatch, sPermitOpen, sForceCommand, sChrootDirectory, 421 sMatch, sPermitOpen, sForceCommand, sChrootDirectory,
415 sUsePrivilegeSeparation, sAllowAgentForwarding, 422 sUsePrivilegeSeparation, sAllowAgentForwarding,
@@ -484,12 +491,20 @@ static struct {
484#ifdef GSSAPI 491#ifdef GSSAPI
485 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, 492 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL },
486 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, 493 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL },
494 { "gssapicleanupcreds", sGssCleanupCreds, SSHCFG_GLOBAL },
487 { "gssapistrictacceptorcheck", sGssStrictAcceptor, SSHCFG_GLOBAL }, 495 { "gssapistrictacceptorcheck", sGssStrictAcceptor, SSHCFG_GLOBAL },
496 { "gssapikeyexchange", sGssKeyEx, SSHCFG_GLOBAL },
497 { "gssapistorecredentialsonrekey", sGssStoreRekey, SSHCFG_GLOBAL },
488#else 498#else
489 { "gssapiauthentication", sUnsupported, SSHCFG_ALL }, 499 { "gssapiauthentication", sUnsupported, SSHCFG_ALL },
490 { "gssapicleanupcredentials", sUnsupported, SSHCFG_GLOBAL }, 500 { "gssapicleanupcredentials", sUnsupported, SSHCFG_GLOBAL },
501 { "gssapicleanupcreds", sUnsupported, SSHCFG_GLOBAL },
491 { "gssapistrictacceptorcheck", sUnsupported, SSHCFG_GLOBAL }, 502 { "gssapistrictacceptorcheck", sUnsupported, SSHCFG_GLOBAL },
503 { "gssapikeyexchange", sUnsupported, SSHCFG_GLOBAL },
504 { "gssapistorecredentialsonrekey", sUnsupported, SSHCFG_GLOBAL },
492#endif 505#endif
506 { "gssusesessionccache", sUnsupported, SSHCFG_GLOBAL },
507 { "gssapiusesessioncredcache", sUnsupported, SSHCFG_GLOBAL },
493 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, 508 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL },
494 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, 509 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL },
495 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, 510 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL },
@@ -1253,6 +1268,10 @@ process_server_config_line(ServerOptions *options, char *line,
1253 intptr = &options->gss_authentication; 1268 intptr = &options->gss_authentication;
1254 goto parse_flag; 1269 goto parse_flag;
1255 1270
1271 case sGssKeyEx:
1272 intptr = &options->gss_keyex;
1273 goto parse_flag;
1274
1256 case sGssCleanupCreds: 1275 case sGssCleanupCreds:
1257 intptr = &options->gss_cleanup_creds; 1276 intptr = &options->gss_cleanup_creds;
1258 goto parse_flag; 1277 goto parse_flag;
@@ -1261,6 +1280,10 @@ process_server_config_line(ServerOptions *options, char *line,
1261 intptr = &options->gss_strict_acceptor; 1280 intptr = &options->gss_strict_acceptor;
1262 goto parse_flag; 1281 goto parse_flag;
1263 1282
1283 case sGssStoreRekey:
1284 intptr = &options->gss_store_rekey;
1285 goto parse_flag;
1286
1264 case sPasswordAuthentication: 1287 case sPasswordAuthentication:
1265 intptr = &options->password_authentication; 1288 intptr = &options->password_authentication;
1266 goto parse_flag; 1289 goto parse_flag;
@@ -2301,7 +2324,10 @@ dump_config(ServerOptions *o)
2301#endif 2324#endif
2302#ifdef GSSAPI 2325#ifdef GSSAPI
2303 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); 2326 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication);
2327 dump_cfg_fmtint(sGssKeyEx, o->gss_keyex);
2304 dump_cfg_fmtint(sGssCleanupCreds, o->gss_cleanup_creds); 2328 dump_cfg_fmtint(sGssCleanupCreds, o->gss_cleanup_creds);
2329 dump_cfg_fmtint(sGssStrictAcceptor, o->gss_strict_acceptor);
2330 dump_cfg_fmtint(sGssStoreRekey, o->gss_store_rekey);
2305#endif 2331#endif
2306 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication); 2332 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication);
2307 dump_cfg_fmtint(sKbdInteractiveAuthentication, 2333 dump_cfg_fmtint(sKbdInteractiveAuthentication,