** Description changed:

+ [Impact]
+ 
+ In trusty, there is only 1 version of dhclient, including #define NSUPDATE, 
which introduce DDNS functionnality.
+ The DDNS functionnality, generate 2 random extra ports between 1024-65535.
+ 
+ Impact reported by users :
+ 
+ "One impact of these random ports is that security hardening becomes more 
difficult. The purpose of these random ports and security implications are 
unknown."
+ "We have software that was using one of the lower udp ports but it happened 
to collide with dhclient which seems to allocate 2 random ports."
+ 
+ There is a randomization mechanism in libdns that prevent dhclient to take 
the sysctl values into account (net.ipv4.ip_local_port_range & 
net.ipv4.ip_local_reserved_ports) to workaround this, and after discussion 
isc-dhcp upstream doesn't want to rely on kernel for randomization.
+  
+ There is no realtime configuration to disable the feature or workaround this. 
The only possible way is at compile time.
+ 
+ I also talk with upstream maintainers, and there is no way they will
+ accept to reduce the range (1024-65535) for security reason. Reducing
+ the port range may facilitate the spoofing.
+ 
+ Xenial has separated dhclient in two packages :
+ 
+ isc-dhcp-client pkg : dhclient with DDNS functionality disabled (no random 
extra ports)
+ isc-dhcp-client-ddns : dhclient with DDNS functionality enabled (with random 
extra ports)
+ 
+ The goal here is to reproduce the same situation in Trusty, for this bug
+ to be less painful for at least users that doesn't require DDNS
+ functionnality.
+ 
+ [Test Case]
+ 
+ Run a Trusty image with following package :
+ isc-dhcp-client
+ isc-dhcp-common
+ 
+ ```
+ dhclient 1110 root 6u IPv4 11535 0t0 UDP *:bootpc
+ dhclient 1110 root 20u IPv4 11516 0t0 UDP *:64589 # <----------- extra random 
port
+ dhclient 1110 root 21u IPv6 11517 0t0 UDP *:7749  # <----------- extra random 
port
+ ```
+ 
+ 
+ [Regression Potential] 
+ 
+ * none expected
+ 
+ I did the split such that users will automatically get isc-dhcp-client-ddns 
installed but users bothered by this bug then will have the option to switch to 
the one without it by uninstalling (isc-dhcp-client-ddns), 
+ so existing Trusty users can continue to use this DDNS functionality after 
the SRU without any necessary intervention.
+ 
+ With  isc-dhcp-client-ddns :
+ dhclient 1110 root 6u IPv4 11535 0t0 UDP *:bootpc
+ dhclient 1110 root 20u IPv4 11516 0t0 UDP *:64589 # <----------- extra random 
port
+ dhclient 1110 root 21u IPv6 11517 0t0 UDP *:7749  # <----------- extra random 
port
+ 
+ Without isc-dhcp-client-ddns :
+ dhclient 1110 root 6u IPv4 11535 0t0 UDP *:bootpc
+ 
+ Note that this is how Xenial does it.
+ 
+ [Other Info]
+  
+  * See : 
https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1176046/comments/19 to 
look at my discussion with rbasak on if that approach would be acceptable for 
SRU.
+ 
+ [Original Description]
+ 
  Ubuntu 13.04 Server 64-bit.  Fresh install.  Only one network adapter.
  
  dhclient process is listening on two randomly chosen udp ports in
  addition to the usual port 68.  This appears to be a bug in the
  discovery code for probing information on interfaces in the system.
  
  Initial research of the code also suggested omapi, but adding omapi port
  9999 to /etc/dhcp/dhclient.conf only opened a forth port with the two
  random udp ports still enabled.
  
  Version of included distro dhclient was 4.2.4.  I also tested with the
  latest isc-dhclient-4.2.5-P1 and got the same results.
  
  Debian has the same bug:
  http://forums.debian.net/viewtopic.php?f=10&t=95273&p=495605#p495605
  
  One impact of these random ports is that security hardening becomes more
  difficult.  The purpose of these random ports and security implications
  are unknown.
  
- 
  Example netstat -lnp  output:
  
- udp        0      0 0.0.0.0:21117           0.0.0.0:*                         
  2659/dhclient   
- udp        0      0 0.0.0.0:68              0.0.0.0:*                         
  2659/dhclient   
+ udp        0      0 0.0.0.0:21117           0.0.0.0:*                         
  2659/dhclient
+ udp        0      0 0.0.0.0:68              0.0.0.0:*                         
  2659/dhclient
  udp6       0      0 :::45664                :::*                              
  2659/dhclient

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1176046

Title:
  isc-dhcp dhclient listens on extra random ports

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1176046/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to