Bug 1171630

Summary: NTP drops requests when sourceport is below 123
Product: Red Hat Enterprise Linux 6 Reporter: Konrad Mosoń <mosonkonrad>
Component: ntpAssignee: Miroslav Lichvar <mlichvar>
Status: CLOSED ERRATA QA Contact: Vaclav Danek <vdanek>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.6CC: ovasik, psklenar, vdanek
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: ntp-4.2.6p5-3.el6 Doc Type: Bug Fix
Doc Text:
The ntpd daemon dropped incoming NTP packets if their source port was lower than 123 (the NTP port). As a consequence, clients behind Network Address Translation (NAT) were unable to synchronize with the server if their source port was translated to ports below 123. With this update, ntpd no longer checks the source port number, and clients behind NAT are now able to correctly synchronize with the server.
Story Points: ---
Clone Of:
: 1171640 (view as bug list) Environment:
Last Closed: 2015-07-22 07:00:10 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1171640    

Description Konrad Mosoń 2014-12-08 09:20:02 UTC
Description of problem:

If NTP requests goes through NAT, NAT changes srcport of packet to something random. Sometimes it's below 123 and ntp drops it without any logging.

Source code says (ntpd/ntp_proto.c):

 332     /*
 333      * Bogus port check is before anything, since it probably
 334      * reveals a clogging attack.
 335      */
 336     sys_received++;
 337     if (SRCPORT(&rbufp->recv_srcadr) < NTP_PORT) {
 338         sys_badlength++;
 339         return;             /* bogus port */
 340     }


Version-Release number of selected component (if applicable):
ntp-4.2.6p5-1.el6.centos.x86_64

...but srcrpm for centos7 shows, that it's version have the same problem (ntp-4.2.6p5-18.el7.centos.src.rpm)



How reproducible:
Always when packet srcport is lower than NTP_PORT (123).
For testing purposes you can create NAT that changes srcport to - for example - 121.


Steps to Reproduce:
1. Install NTP server on server-host and client on client-host
2. Configure NAT for client-host so NTP will exit host with srcport lower than 123. (or you can use simple python ntp client found here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=691412)
3. Run `ntpq -p` on client-host. NTP is always in state .INIT. cause server dropped all requests. No logs at all in syslog. No debuglogs even with debuglevel=10.


Actual results:
NTP drops requests without any logging.


Expected results:
Packets are not dropped, or this option is configurable and should log something. Took me few weeks to debug why some servers have problems with ntp :(


Additional info:
http://lists.ntp.org/pipermail/hackers/2009-December/004758.html
http://bugs.ntp.org/show_bug.cgi?id=2174

Debian already fixed that:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=691412

Comment 5 errata-xmlrpc 2015-07-22 07:00:10 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2015-1459.html