Hello everyone.
I would like to provide some clarification on CVE-2016-6171 which has
been assigned to Knot DNS a few days ago. The CVE is basically about a
missing configuration option to limit the size of incoming AXFR. The
reporter claims that the master can generate infinite outgoing zone
transfer and thus exhaust the slave's resources.
We believe that master and slave servers should have appropriate trust
relationship. And therefore we think this problem rather fits
operational security that implementation security. If your master server
is trusted, then you should not be affected by this CVE.
Please note that the AXFR from untrusted master is not the only possibly
source of malicious zone transfer. The IXFR and DDNS qualify as well.
We have been requested to add a feature to limit incoming zone transfer
about a month ago [1]. The changes are almost finished and will cover
AXFR, IXFR, and DDNS. The feature will be included in Knot DNS 2.3 and
will be also backported for the older 1.6 release.
If you have any comments or questions, don't hesitate and tell us.
[1] https://gitlab.labs.nic.cz/labs/knot/issues/464
Best regards,
Jan
--
Jan Včelák, Knot DNS
CZ.NIC Labs https://www.knot-dns.cz
--------------------------------------------
Milešovská 5, 130 00 Praha 3, Czech Republic
WWW: https://labs.nic.czhttps://www.nic.cz
tl;dr: I've searched the Internets a lot these past days, but weren't
able to find a way to make kdig and knsupdate work with keys. How is
this handled?
Hello knot people,
I've got a problem with kdig and knsupdate, specifically using the -k
parameter.
I'm using:
- Debian 8.5
- dnssec-tools 2.2-2 (out of stretch)
- knot-dnsutils 2.2.0-2~bpo80+1 (out of j-bp)
- dnsutils 1:9.9.5.dfsg-9+deb8u6 (out of jessie)
I'm creating the key with:
# dnssec-keygen -a HMAC-MD5 -b 256 -n HOST -C host.example.com
which gives:
# cat Khost.example.com.+157+11483.*
host.example.com. IN KEY 512 3 157
42eRdcSUtT2opnOPVaGY9nEPsryde7snDaKLOPSjI9I=
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: 42eRdcSUtT2opnOPVaGY9nEPsryde7snDaKLOPSjI9I=
Bits: AAA=
Doing then:
# knsupdate -d -k Khost.example.com.+157+11483.
which gives:
;; ERROR: failed to parse keyfile 'Khost.example.com.+157+11483.'
;; DEBUG: srv_info_free: null parameter
I've found [1], and indeed, I'm running into the mentioned error if
using knot-dnsutils 1.6.0-1 out of jessie. Besides this, I wasn't able
to find anything useful.
But, doing this:
# knsupdate -y hmac-md5:host.example.com:42eRdcSUtT2opnOPVaGY9nEPsryde7snDaKLOPSjI9I=
works, the same as nsupdate does:
# nsupdate -k Khost.example.com.+157+11483.
Could someone shed some light on what I'm doing wrong?
Any help appreciated...
Thanks in advance and for your work on knot!
All the best,
Georg
[1] https://lists.nic.cz/pipermail/knot-dns-users/2015-February/000579.html
Hello,
Even if I force wget to accept your expired certificate I
can't get apt-get update to work when pointing to your servers. It has
been like this for a few days now.
Hit http://ftp.debian.org wheezy-updates/main Translation-en/DiffIndex
Err http://deb.knot-dns.cz wheezy/main amd64 Packages
301 Moved Permanently [IP: 217.31.192.140 80]
Ign http://deb.knot-dns.cz wheezy/main Translation-en
W: Failed to fetch
http://deb.knot-dns.cz/knot/dists/wheezy/main/binary-amd64/Packages 301
Moved Permanently [IP: 217.31.192.140 80]
E: Some index files failed to download. They have been ignored, or old
ones used instead.
Could someone have a look at this please?
DO you think that many users have just switched back to bind because of
this? or is it just me?
Regards,
Maren.
Hi,
I anyway wrote a patch for disabling PMTUD for UDP socket
(for both IPv4/IPv6), and posted to issue tracker:
https://gitlab.labs.nic.cz/labs/knot/issues/467#note_24304
This patch includes extra bonus for mitigating DNS fragmentation attack
for IPv4 UDP, by using Linux's newer sockopt IP_PMTUDISC_OMIT.
I tried to illustrate how PMTUD badly interact with DNS over UDP,
which draft-andrews-dnsext-udp-fragmentation is addressing.
Assuming that there is a small MTU link between DNS requester
and DNS responder. Responder is serving large response,
which size is exceeding that small MTU (1454):
Apparently many DNS operator don't want timeout and retransmission.
MTU MTU MTU
Requester--1500--[router1]--1454--[router2]--1500-- Responder
| . . |
| . . |
o --------------------------------------------->| 1. Requester initiates
| . . | DNS query.
| . . |
| . .<-------------o 2. Responder generates
| . . | large DNS resnponse
| . . | (packet size > 1454)
| . . |
| . o------------->| 3. Intermediate router
| . . | drops large packet
| . . | due to small MTU, and
| . . | generates ICMPv6
| . . | "Packet Too Big",
| . . | since the response
| . . | packet can't go
| . . | through the link.
| . . |
| . . | Responder would learn
| . . | smaller path MTU toward
| . . | requester, but
| . . | does not resend
| . . | the response. (It's UDP!)
~ ~ ~ ~
| . . |
o---------------------------------------------->| 4. After timeout
| . . | requester retries
| . . | query.
| . . |
|<----------------------------------------------| 5. Responder generates
| . . | fragmented DNS response
| . . | which can go throgh
| . . | the "MTU 1454" link.
| . . |
Regards,
--
Daisuke Higashi
Hello.
There has been a rather long discussion about the change in TC flag
setting for glue records after the Knot DNS 2.1.1 release. Based on the
feedback, we have decided to tune the server's behavior a little bit.
First of all, the definitions for "glue" differ and the recent RFC 7719
(DNS Terminology) doesn't help. So just to make this absolutely clear,
let's define "mandatory glue": Mandatory glue are non-authoritative
address records for the name servers in the delegation and within the
bailiwick of that delegation.
RFC 1034 Section 4.3.2 [1] describes the algorithm for response
construction. As per step 3.b, we include mandatory glue into the
additional section. If it doesn't fit, the TC flag is set. And as per
step 6., we include other authoritative address records for name servers
in the delegation. If these records don't fit, the TC flag is not set.
[1] https://tools.ietf.org/html/rfc1034#section-4.3.2
Let's show that on an example. Consider the following zone:
$ORIGIN tc.test.
@ SOA ns admin 1 60 60 1800 60
ns AAAA 2001:DB8::1
foo NS ns.foo
ns.foo AAAA 2001:DB8::10
bar NS bar
NS a.ns.bar
NS b.ns.bar
NS ns.foo
NS ns
NS foo.test.
bar AAAA 2001:DB8::20
a.ns.bar AAAA 2001:DB8::30
Now query for www.bar.tc.test would result in a response with
delegation. The authority section would contain NS records for
bar.tc.test. And the additional section will contain address records for
following names as follows:
- bar required (mandatory glue)
- a.ns.bar required (mandatory glue)
- ns optional (authoritative record, possibly with RRSIG)
- b.ns.bar omitted (mandatory glue but unavailable)
- ns.foo omitted (non-authoritative outside bailiwick)
- foo.test omitted (non-authoritative outside zone)
So what do you think? Is it better? This change is already included in
the master branch (in case you want to test it). But there is still some
time to change it before the next release.
Best regards,
Jan
Hello Everybody,
I am seeing a response from a knot name server that I am working on that has me a little confused. When I do zone transfer requests from clients that aren’t allowed to do a zone transfer I expect to receive rcode 5 REFUSED, but I am receiving rcode 9 NOTAUTH.
Is this the expected behaviour? Is this configurable?
Best Regards,
/rog
knotd (Knot DNS), version 2.2.1 on Ubuntu 14.04 installed from .cz package
knot:
Installed: 2.2.1-1+trusty+1
Candidate: 2.2.1-1+trusty+1
Version table:
*** 2.2.1-1+trusty+1 0
500 http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/ trusty/main amd64 Packages
Hello guys,
we are currently tuning the DNSSEC default parameters. And we haven't
settled on whether NSEC or NSEC3 should be used for authenticated
denial. Tough decision...
We would appreciate any comments from your point of view. :-)
Jan
Hi,
I recently started trying out Knot DNS and it has been a pleasure so
far. I like the query modules and how easy it is to construct a query plan.
I am thinking of putting knot as the public-facing server and enable RRl
on it. However, I noticed that rate limiting comes *before* forwarding
the unsatisfied query to the remote backend. This means effectively that
all the queries will be rate limited by error classification.
Wouldn't it be better to apply ratelimits after all stages of the query
plan have been processed? In other words, rate limit based on the final
response, rather than an intermediate state. This way you can truly use
knot as a rate-limiting, public-facing server protecting your backend
name server.
Thoughts?
Best regards,
Matthijs
Hello everyone.
CZ.NIC Labs has just released a patched version of Knot DNS. The 2.2.1
version contains some important bug fixes and a few small improvements.
Let's jump directly into it:
- The previous version was inconsistent in setting the TC flag for
delegations with a glue. We have decided to modify the behavior
slightly and the TC flag is now set always if a complete glue doesn't
fit the response.
- Logging of individual categories (server or zone) didn't work in the
previous release. This problem is now resolved. Logging all categories
(any configuration option) was not affected.
- We have eliminated data race in the code responsible for zone file
flushing. When more zone files were flushed concurrently, flushing of
some zones could fail. This problem is fixed in the new release.
- If you are running Knot DNS on OpenWRT, we advise you to update to the
new release. There has been a critical bug possibly making the server
to crash.
- There had been several issues with the control utility: The timeout
for reconfiguration is now parsed correctly. The "maxreaders limit
reached" error is gone. And the interactive mode now completes
multiple zone names if allowed by the command. The server will also
refuse to perform the reload, if there is an active configuration
transaction.
- We have removed switch for Link Time Optimization from the configure
script, because LTO is still rather problematic. If you want to use
LTO, set the CFLAGS and LDFLAGS appropriately.
- We have improved the logging and status messages to differentiate
between an unavailable zone and a zone with zero serial.
- We have added a list of PKCS #11 devices which had been tested with
automatic DNSSEC signing.
We are looking forward to your feedback.
The sources are available as usual:
Full changelog:
https://gitlab.labs.nic.cz/labs/knot/raw/v2.2.1/NEWS
Sources:
https://secure.nic.cz/files/knot-dns/knot-2.2.1.tar.xz
GPG signature:
https://secure.nic.cz/files/knot-dns/knot-2.2.1.tar.xz.asc
Cheers,
Jan
--
Jan Včelák, Knot DNS
CZ.NIC Labs https://www.knot-dns.cz
--------------------------------------------
Milešovská 5, 130 00 Praha 3, Czech Republic
WWW: https://labs.nic.czhttps://www.nic.cz
Hey Jake,
yes it does, RPZ is supported for views as is any other policy. There's an
example of setting RPZ for a source-address subnet view in the
documentation:
http://knot-resolver.readthedocs.io/en/latest/modules.html#id3
Cheers,
Marek
> Does KnotDNS Resolver support the use of different RPZ's per-view?
>
> Looking to create a DNS setup that allows recursion to two separate
> groups, one using one RPZ setup, the other using another.
>
> Is this possible with Knot?
>
> Thanks,
> -jake
> _______________________________________________
> knot-dns-users mailing list
> knot-dns-users(a)lists.nic.cz
> https://lists.nic.cz/cgi-bin/mailman/listinfo/knot-dns-users
>