]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Remove port 750 from the KDC default ports
authorSarah Day <sarahday@mit.edu>
Thu, 14 Jan 2016 18:11:21 +0000 (13:11 -0500)
committerGreg Hudson <ghudson@mit.edu>
Thu, 24 Mar 2016 15:55:56 +0000 (11:55 -0400)
The KDC was still listening on port 750 despite the fact that
this functionality was supposed to have been removed in the
past.  Remove port 750 from the list of UDP ports that the KDC
listens on.  Also remove port 750 from the default ports that
the client connects to, and from example config fragments.

ticket: 8388 (new)

14 files changed:
doc/admin/admin_commands/krb5kdc.rst
doc/admin/conf_files/krb5_conf.rst
doc/admin/install_kdc.rst
doc/mitK5defaults.rst
src/config-files/kdc.conf
src/config-files/services.append
src/include/osconf.hin
src/lib/krb5/os/locate_kdc.c
src/lib/krb5/os/sendto_kdc.c
src/lib/krb5/os/t_locate_kdc.c
src/lib/krb5/os/td_krb5.conf
src/man/krb5.conf.man
src/man/krb5kdc.man
src/util/profile/test.ini

index 711159b68243408c3bed6113adf6e59342473bd2..7ec4ee4d3151a4b699a543ef100f41b4956bbad0 100644 (file)
@@ -62,7 +62,7 @@ which the KDC should listen on for Kerberos version 5 requests, as a
 comma-separated list.  This value overrides the UDP port numbers
 specified in the :ref:`kdcdefaults` section of :ref:`kdc.conf(5)`, but
 may be overridden by realm-specific values.  If no value is given from
-any source, the default ports are 88 and 750.
+any source, the default port is 88.
 
 The **-w** *numworkers* option tells the KDC to fork *numworkers*
 processes to listen to the KDC ports and process requests in parallel.
index 0f398a64e66a4dcef4515fdab372bb3a9fd1f488..bf7d2407bd13e9590a916b0c39892986c161df3d 100644 (file)
@@ -1130,7 +1130,7 @@ Here is an example of a generic krb5.conf file::
         ATHENA.MIT.EDU = {
             kdc = kerberos.mit.edu
             kdc = kerberos-1.mit.edu
-            kdc = kerberos-2.mit.edu:750
+            kdc = kerberos-2.mit.edu
             admin_server = kerberos.mit.edu
             master_kdc = kerberos.mit.edu
         }
index af938993f017c56f971ff3426297a1e35fd408a4..1d8c4bc02a7b79880b17a196d689851e9874560e 100644 (file)
@@ -108,7 +108,7 @@ and location, and logging.
 An example kdc.conf file::
 
     [kdcdefaults]
-        kdc_ports = 88,750
+        kdc_ports = 88
 
     [realms]
         ATHENA.MIT.EDU = {
index 838dabbba16978ca72a24618af244bf473da1235..443bcc5f3e76d975475d00c489d1eceb6606c03c 100644 (file)
@@ -24,7 +24,6 @@ Master key default enctype                  |defmkey|
 Default :ref:`keysalt list<Keysalt_lists>`  |defkeysalts|
 Permitted enctypes                          |defetypes|
 KDC default port                            88
-Second KDC default port                     750
 Admin server port                           749
 Password change port                        464
 ========================================== =============================  ====================
index b17f3aaf99e950e44830148734af330416cf9535..e7ef0f93d1f98f5d0460e44a0451bb4d4cb439ca 100644 (file)
@@ -1,12 +1,12 @@
 [kdcdefaults]
-       kdc_ports = 750,88
+       kdc_ports = 88
 
 [realms]
        ATHENA.MIT.EDU = {
                database_name = /usr/local/var/krb5kdc/principal
                acl_file = /usr/local/var/krb5kdc/kadm5.acl
                key_stash_file = /usr/local/var/krb5kdc/.k5.ATHENA.MIT.EDU
-               kdc_ports = 750,88
+               kdc_ports = 88
                max_life = 10h 0m 0s
                max_renewable_life = 7d 0h 0m 0s
        }
index bd1010f5c07afabeb543f2ca6792c47032851636..a32fae6d06e32ac3a97a995494986c03d1e556dc 100644 (file)
@@ -1,25 +1,5 @@
-#
-# Note --- if you are using Kerberos V4 clients and you either (a)
-# haven't converted all your KDC's over to use V5, or (b) are worried
-# about inter-realm interoperability with other KDC's that are still
-# using V4, then you will have to switch the definition of kerberos and
-# kerberos-sec.
-#
-# The issue is that the official port assignement for the "kerberos"
-# port is port 88, yet the unofficial port that has been used for
-# Kerberos V4 is port 750.  The V5 KDC will respond to requests made on
-# either port, and if V4 compatibility is turned on, it will respond to
-# V4 requests on either port as well.
-#
-#
-# Hence, it is safe to switch the definitions of kerberos and
-# kerberos-sec; both should be defined, though, and one should be port
-# 88 and one should be port 750.
-#
 kerberos       88/udp          kdc             # Kerberos authentication--udp
 kerberos       88/tcp          kdc             # Kerberos authentication--tcp
-kerberos-sec   750/udp                         # Kerberos authentication--udp
-kerberos-sec   750/tcp                         # Kerberos authentication--tcp
 kerberos_master        751/udp                         # Kerberos authentication
 kerberos_master        751/tcp                         # Kerberos authentication
 kerberos-adm   749/tcp                         # Kerberos 5 admin/changepw
index 922d7960f1653f42c41562706cf9fdd39528f9f3..b2b355bdf4506b629b3e3cd22556cfa33a5adad8 100644 (file)
 #define KDCRCACHE               "dfl:krb5kdc_rcache"
 
 #define KDC_PORTNAME            "kerberos" /* for /etc/services or equiv. */
-#define KDC_SECONDARY_PORTNAME  "kerberos-sec" /* For backwards */
-/* compatibility with */
-/* port 750 clients */
 
 #define KRB5_DEFAULT_PORT       88
-#define KRB5_DEFAULT_SEC_PORT   750
 
 #define DEFAULT_KPASSWD_PORT    464
 
-#define DEFAULT_KDC_UDP_PORTLIST "88,750"
+#define DEFAULT_KDC_UDP_PORTLIST "88"
 #define DEFAULT_KDC_TCP_PORTLIST "88"
 
 /*
index 160a2d05b1470b7fd40ee74a035a1cb83768e3bd..196b42647b3d336ec7abead744a9f90a91e24d5e 100644 (file)
@@ -216,7 +216,7 @@ server_list_contains(struct serverlist *list, struct server_entry *server)
 static krb5_error_code
 locate_srv_conf_1(krb5_context context, const krb5_data *realm,
                   const char * name, struct serverlist *serverlist,
-                  k5_transport transport, int udpport, int sec_udpport)
+                  k5_transport transport, int udpport)
 {
     const char  *realm_srv_names[4];
     char **hostlist, *host, *port, *cp;
@@ -224,7 +224,7 @@ locate_srv_conf_1(krb5_context context, const krb5_data *realm,
     int i;
 
     Tprintf ("looking in krb5.conf for realm %s entry %s; ports %d,%d\n",
-             realm->data, name, ntohs (udpport), ntohs (sec_udpport));
+             realm->data, name, ntohs(udpport));
 
     if ((host = malloc(realm->length + 1)) == NULL)
         return ENOMEM;
@@ -250,7 +250,7 @@ locate_srv_conf_1(krb5_context context, const krb5_data *realm,
     }
 
     for (i=0; hostlist[i]; i++) {
-        int p1, p2;
+        int port_num;
         k5_transport this_transport = transport;
         char *uri_path = NULL;
 
@@ -276,14 +276,11 @@ locate_srv_conf_1(krb5_context context, const krb5_data *realm,
             /* L is unsigned, don't need to check <0.  */
             if (l > 65535)
                 return EINVAL;
-            p1 = htons (l);
-            p2 = 0;
+            port_num = htons(l);
         } else if (this_transport == HTTPS) {
-            p1 = htons(443);
-            p2 = 0;
+            port_num = htons(443);
         } else {
-            p1 = udpport;
-            p2 = sec_udpport;
+            port_num = udpport;
         }
 
         /* If the hostname was in brackets, strip those off now. */
@@ -292,15 +289,8 @@ locate_srv_conf_1(krb5_context context, const krb5_data *realm,
             *cp = '\0';
         }
 
-        code = add_host_to_list(serverlist, host, p1, this_transport,
+        code = add_host_to_list(serverlist, host, port_num, this_transport,
                                 AF_UNSPEC, uri_path);
-        /* Second port is for IPv4 UDP only, and should possibly go away as
-         * it was originally a krb4 compatibility measure. */
-        if (code == 0 && p2 != 0 &&
-            (this_transport == TCP_OR_UDP || this_transport == UDP)) {
-            code = add_host_to_list(serverlist, host, p2, UDP, AF_INET,
-                                    uri_path);
-        }
         if (code)
             goto cleanup;
     }
@@ -313,13 +303,11 @@ cleanup:
 #ifdef TEST
 static krb5_error_code
 krb5_locate_srv_conf(krb5_context context, const krb5_data *realm,
-                     const char *name, struct serverlist *al, int udpport,
-                     int sec_udpport)
+                     const char *name, struct serverlist *al, int udpport)
 {
     krb5_error_code ret;
 
-    ret = locate_srv_conf_1(context, realm, name, al, TCP_OR_UDP, udpport,
-                            sec_udpport);
+    ret = locate_srv_conf_1(context, realm, name, al, TCP_OR_UDP, udpport);
     if (ret)
         return ret;
     if (al->nservers == 0)        /* Couldn't resolve any KDC names */
@@ -505,7 +493,7 @@ prof_locate_server(krb5_context context, const krb5_data *realm,
                    k5_transport transport)
 {
     const char *profname;
-    int dflport1, dflport2 = 0;
+    int dflport = 0;
     struct servent *serv;
 
     switch (svc) {
@@ -515,31 +503,30 @@ prof_locate_server(krb5_context context, const krb5_data *realm,
            have old, crufty, wrong settings that this is probably
            better.  */
     kdc_ports:
-        dflport1 = htons(KRB5_DEFAULT_PORT);
-        dflport2 = htons(KRB5_DEFAULT_SEC_PORT);
+        dflport = htons(KRB5_DEFAULT_PORT);
         break;
     case locate_service_master_kdc:
         profname = KRB5_CONF_MASTER_KDC;
         goto kdc_ports;
     case locate_service_kadmin:
         profname = KRB5_CONF_ADMIN_SERVER;
-        dflport1 = htons(DEFAULT_KADM5_PORT);
+        dflport = htons(DEFAULT_KADM5_PORT);
         break;
     case locate_service_krb524:
         profname = KRB5_CONF_KRB524_SERVER;
         serv = getservbyname("krb524", "udp");
-        dflport1 = serv ? serv->s_port : htons(4444);
+        dflport = serv ? serv->s_port : htons(4444);
         break;
     case locate_service_kpasswd:
         profname = KRB5_CONF_KPASSWD_SERVER;
-        dflport1 = htons(DEFAULT_KPASSWD_PORT);
+        dflport = htons(DEFAULT_KPASSWD_PORT);
         break;
     default:
         return EBUSY;           /* XXX */
     }
 
     return locate_srv_conf_1(context, realm, profname, serverlist, transport,
-                             dflport1, dflport2);
+                             dflport);
 }
 
 #ifdef KRB5_DNS_LOOKUP
index a2bc5915cff316bb37e13c84145b6f7263a91f24..952228c160e9818f2dc5c7351a5f6b616e7b224a 100644 (file)
@@ -1439,8 +1439,7 @@ service_fds(krb5_context context, struct select_state *selstate,
  * If P=3, Total = 3*U + T + 14.
  * If P=4, Total = 4*U + T + 30.
  *
- * Note that if you try to reach two ports (e.g., both 88 and 750) on
- * one server, it counts as two.
+ * Note that if you try to reach two ports on one server, it counts as two.
  *
  * There is one exception to the above rules.  Whenever a TCP connection is
  * established, we wait up to ten seconds for it to finish or fail before
index e986ae9d9cf23750fb06f9764ba904746b9c9d57..4bf9795c5a4ed8392aa533389d6f49792de75841 100644 (file)
@@ -121,8 +121,7 @@ main (int argc, char *argv[])
 
     switch (how) {
     case LOOKUP_CONF:
-        err = krb5_locate_srv_conf(ctx, &realm, "kdc", &sl,
-                                   htons(88), htons(750));
+        err = krb5_locate_srv_conf(ctx, &realm, "kdc", &sl, htons(88));
         break;
 
     case LOOKUP_DNS:
index cdee60945f9187212de18e9ad59df04b0a71a920..edf0353619c01146ea1e383324c36c4408452429 100644 (file)
@@ -3,7 +3,7 @@
 
 [realms]
        DEFAULT_REALM.TST = {
-               kdc = FIRST.KDC.HOST:750
+               kdc = FIRST.KDC.HOST
                kdc = SECOND.KDC.HOST:88
                admin_server = FIRST.KDC.HOST
                default_domain = MIT.EDU
index 65cc51cd3ce22aab56c7a67bcb3fa18366d73555..a4b30e941465c839840067397d66da360e923092 100644 (file)
@@ -1416,7 +1416,7 @@ Here is an example of a generic krb5.conf file:
     ATHENA.MIT.EDU = {
         kdc = kerberos.mit.edu
         kdc = kerberos\-1.mit.edu
-        kdc = kerberos\-2.mit.edu:750
+        kdc = kerberos\-2.mit.edu
         admin_server = kerberos.mit.edu
         master_kdc = kerberos.mit.edu
     }
index 663b2ec658ce4be908d80cca1d7f80f2da7cc607..505eff06a00545a77225a686204db57bfae4c461 100644 (file)
@@ -82,7 +82,7 @@ which the KDC should listen on for Kerberos version 5 requests, as a
 comma\-separated list.  This value overrides the UDP port numbers
 specified in the \fIkdcdefaults\fP section of \fIkdc.conf(5)\fP, but
 may be overridden by realm\-specific values.  If no value is given from
-any source, the default ports are 88 and 750.
+any source, the default port is 88.
 .sp
 The \fB\-w\fP \fInumworkers\fP option tells the KDC to fork \fInumworkers\fP
 processes to listen to the KDC ports and process requests in parallel.
index c1c8830aa37bc59dfd876aad53a5768374f9bf09..23ca896773e97a31fdeb845744137db0f7970907 100644 (file)
@@ -13,8 +13,8 @@ this is a comment.  Everything up to the first square brace is ignored.
 [realms]
 ATHENA.MIT.EDU = {
        server = KERBEROS.MIT.EDU:88
-       server = KERBEROS1.MIT.EDU:750
-       server = KERBEROS2.MIT.EDU:750
+       server = KERBEROS1.MIT.EDU
+       server = KERBEROS2.MIT.EDU
        admin = KERBEROS.MIT.EDU
        etype = DES-MD5
 }