Date: Thu, 20 Mar 2014 12:33:03 -0700 From: "Ronald F. Guilmette" <rfg@tristatelogic.com> To: freebsd-security@freebsd.org Subject: Re: NTP security hole CVE-2013-5211? Message-ID: <44680.1395343983@server1.tristatelogic.com> In-Reply-To: <201403201719.LAA29320@mail.lariat.net>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <201403201719.LAA29320@mail.lariat.net>, Brett Glass <brett@lariat.net> wrote: >At 09:56 PM 3/17/2014, Ronald F. Guilmette wrote: > >>(It was explained to me at the time that NTP operates a bit like DNS... >>with which I am more familiar... i.e. that all outbound requests originate >>on high numbered ports, well and truly away from all low numbered ports, >>including, in particular, 123. I am just re-verifying that my understanding >>in this regard is correct, and that my current blanket firewall rule is >>fine as it stands.) > >Different implementations do different things in this regard. Alas, newer >versions of ntpd seem to use UDP port 123 as the originating port when >synchronizing with outside servers while older versions did it right and >used high, ephemeral ports. This means that stateful firewalling is >required for security, and even with it spoofing is still possible if the >attacker can guess which servers you query. (The ones in the default FreeBSD >ntp.conf file are likely to work most of the time.) > >We should definitely patch the ntpd that's shipped with FreeBSD to issue >queries on randomly chosen ephemeral ports... I agree entirely with every part of that statement except one. In the immortal words of the Lone Ranger's trusted sidekick (Tonto)... "What do you mean WE kimo sabe?" I personally don't have commit privledges for any part of FreeBSD. Other than that, yes, all outbound NTP queries really should be sent out on high numbered ports, well and truly away from 123. (And also, the outbound port number should be well and truly randomized, I should think. If it's good for the goose, i.e. DNS, then it's probably good for the gander too.) Humm... Uh oh! Oh s**t! When I woke up one day and found all of my bandwidth gone... as a result of being & abused as an NTP reflector... I had rather blithely assumed that the solution that someone offered to me at that time, i.e. just simply blocking all inbound UDP to port 123, was the "right" answer. (It sure did give me my bandwidth back!) It never occured to me... until now... to go back after I made that firewall change and check to see if my local ntpd was still properly able to receive time from any of the servers it was querying. Now that I'm looking at it, it appears that maybe it isn't. If true, that is quite obviously a major bummer. I have a little clock/thermometer thingy in the other room that allegedly picks up and displays the NIST time signal that is broadcast from Colorado. Checking now, I see that the time on my server is slightly more than three full minutes off, relative to that clock/thermometer thingy. (Yikes!) Here is what I am seeing now in response to an ntpdc "peers" query. I am not really all that familiar with this stuff, so if anybody else here can tell me if this looks messed up or not, I'd sure appreciate it. remote local st poll reach delay offset disp ======================================================================= =nist.netservice 69.62.255.118 16 1024 0 0.00000 0.000000 3.99217 =rook.slash31.co 69.62.255.118 16 1024 0 0.00000 0.000000 3.99217 =96.44.142.5 69.62.255.118 16 1024 0 0.00000 0.000000 3.99217 Of course, if this *is* messed up, then I guess that I'll have to remove my firewall rule, and diddle my /etc/ntp.conf file at the same time, in order to make sure that the Evil Ones don't come back and use & abuse me again. And if _that_ is true, then it certainly does underscore the need for changes to the default /etc/ntp.conf file that has been distributed with FreeBSD.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44680.1395343983>