KDC/kadmind may fail to start on IPv4-only systems
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| krb5 (Debian) |
Fix Released
|
Unknown
|
|||
| krb5 (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
| Zesty |
Fix Released
|
High
|
Andreas Hasenack | ||
Bug Description
This is fixed in artful in krb5 1.15-2
- upstream: http://
- debian: conflated into https:/
- debian patch: 0011-Fix-
[Impact]
getaddrinfo() called on a wildcard address might return the IPv6 "::1" address. On machines without IPv6 support, binding to it will most likely fail and the kdc/kadmin services won't start.
The provided patch is applied upstream and in Debian testing.
[Test Case]
Steps to reproduce the problem on zesty:
a) install krb5-kdc krb5-admin-server
$ sudo apt install krb5-kdc krb5-admin-server
when prompted, use EXAMPLE.ORG (all caps) as the default realm
when prompted, use the IP of this machine for the KDC and the Admin servers
b) configure a new realm called EXAMPLE.ORG
$ sudo krb5_newrealm
use any password of your liking when prompted
c) confirm the kdc and admin services are running.
$ ps faxw|grep -E "(krb5kdc|
4275 ? Ss 0:00 /usr/sbin/krb5kdc -P /var/run/
4306 ? Ss 0:00 /usr/sbin/kadmind -nofork
d) create a principal and obtain a ticket to confirm kerberos is working properly:
$ sudo kadmin.local addprinc -pw ubuntu +requires_preauth ubuntu
$ kinit
Password for <email address hidden>:
$ klist
Ticket cache: FILE:/tmp/
Default principal: <email address hidden>
Valid starting Expires Service principal
05/04/2017 14:20:17 05/05/2017 00:20:17 <email address hidden>
renew until 05/05/2017 14:20:13
e) Confirm the kerberos services are bound to IPv6 local sockets:
$ sudo netstat -anp|grep -E "^(tcp|
tcp6 0 0 :::88 :::* LISTEN 1078/krb5kdc
tcp6 0 0 :::749 :::* LISTEN 1065/kadmind
tcp6 0 0 :::464 :::* LISTEN 1065/kadmind
udp6 0 0 :::88 :::* 1078/krb5kdc
udp6 0 0 :::464 :::* 1065/kadmind
udp6 0 0 :::750 :::* 1078/krb5kdc
f) configure the system to not support IPv6. There are probably many ways to do this, but the one sure way is to reboot it with ipv6.disable=1 in the kernel command line:
e.1) edit /etc/default/grub
e.2) add "ipv6.disable=1" to GRUB_CMDLINE_LINUX and save
e.3) run sudo update-grub
e.4) reboot
f) Confirm the kdc and admin services are NOT running:
$ ps faxw|grep -E "(krb5kdc|
$
g) /var/log/auth.log will contain the reason:
$ sudo grep -E "(kadmind|
May 4 14:11:54 22-96 krb5kdc[1087]: Failed setting up a UDP socket (for ::.750)
May 4 14:11:54 22-96 kadmind[1085]: Failed setting up a UDP socket (for ::.464)
May 4 14:15:36 22-96 krb5kdc[1510]: Failed setting up a UDP socket (for ::.750)
May 4 14:16:36 22-96 krb5kdc[1652]: Failed setting up a UDP socket (for ::.750)
May 4 14:25:54 22-96 kadmind[1085]: Failed setting up a UDP socket (for ::.464)
May 4 14:25:54 22-96 krb5kdc[1079]: Failed setting up a UDP socket (for ::.750)
With the updated packages, krb5-kdc and krb5-admin-server will startup just fine in the same conditions.
[Regression Potential]
We now tolerate a EAFNOSUPPORT error as long as at least one socket was bound to correctly. Maybe there could be a scenario when this one bound socket is useless, or unexpected: in that case, bailing out because of the EAFNOSUPPORT error could be seen as a more robust approach because it's immediately visible, instead of silently listening on the useless socket.
That being said, I believe single stack systems (only IPv4, or only IPv6) take an extra configuration effort and most systems are dual stack. Zesty certainly is, out of the box.
| Changed in krb5 (Ubuntu): | |
| assignee: | Andreas Hasenack (ahasenack) → nobody |
| status: | In Progress → Fix Released |
| Changed in krb5 (Ubuntu Zesty): | |
| status: | New → In Progress |
| assignee: | nobody → Andreas Hasenack (ahasenack) |
| Changed in krb5 (Debian): | |
| status: | Unknown → Fix Released |
| description: | updated |
| description: | updated |
| Changed in krb5 (Ubuntu): | |
| importance: | Undecided → High |
| Changed in krb5 (Ubuntu Zesty): | |
| importance: | Undecided → High |
| tags: | added: verification-done |

Hello Andreas, or anyone else affected,
Accepted krb5 into zesty-proposed. The package will build now and be available at https:/ /launchpad. net/ubuntu/ +source/ krb5/1. 15-1ubuntu0. 1 in a few hours, and then in the -proposed repository.
Please help us by testing this new package. See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification- failed. In either case, details of your testing will help us make a better decision.
Further information regarding the verification process can be found at https:/ /wiki.ubuntu. com/QATeam/ PerformingSRUVe rification . Thank you in advance!