Or one can use TSIG with a well known key to get a cryptograph hash of the response. Below is how how the servers for the Alexa to 1 Million handle unexpected TSIG. It’s well under a day to add this to a recursive server that supports TSIG already. It’s a couple of minutes of configuration time to add it to a authoritative server that supports TSIG already.
Count, without WKK, with WWK. https://ednscomp.isc.org/compliance/alexa1m-tsig-wkk.txt 2019-02-24T00:00:05Z 2 dns=ok dnswkk=eof 39 dns=failed dnswkk=failed 348 dns=ok dnswkk=formerr,notsig 65 dns=timeout dnswkk=formerr,notsig 10 dns=nosoa,noaa dnswkk=formerr,notsig 7 dns=servfail dnswkk=formerr,notsig 3 dns=formerr dnswkk=formerr,notsig 3 dns=nosoa,noaa,rd dnswkk=formerr,notsig 3 dns=refused dnswkk=formerr,notsig 2 dns=noaa dnswkk=formerr,notsig 1 dns=nxdomain dnswkk=formerr,notsig 9 dns=ok dnswkk=formerr,notsig,opt (non RFC compliant: OPT record in response) 2 dns=refused dnswkk=formerr,notsig,opt (non RFC compliant: OPT record in response) 786 dns=ok dnswkk=formerr,tsig-bad-sig (non RFC compliant: TSIG record in response) 33 dns=refused dnswkk=formerr,tsig-bad-sig (non RFC compliant: TSIG record in response) 6 dns=servfail dnswkk=formerr,tsig-bad-sig (non RFC compliant: TSIG record in response) 3 dns=noaa dnswkk=formerr,tsig-bad-sig (non RFC compliant: TSIG record in response) 3 dns=timeout dnswkk=formerr,tsig-bad-sig (non RFC compliant: TSIG record in response) 1 dns=ok dnswkk=formerr,tsig-bad-sig,proxy (non RFC compliant: TSIG record in response) 9 dns=rd dnswkk=formerr,tsig-bad-sig,rd (non RFC compliant: TSIG record in response) 156 dns=refused dnswkk=malformed (non RFC compliant: malformed) 135 dns=ok dnswkk=malformed (non RFC compliant: malformed) 38 dns=servfail dnswkk=malformed (non RFC compliant: malformed) 13 dns=malformed dnswkk=malformed (non RFC compliant: malformed) 13 dns=timeout dnswkk=malformed (non RFC compliant: malformed) 10 dns=nosoa dnswkk=malformed (non RFC compliant: malformed) 8 dns=nxdomain,ad dnswkk=malformed (non RFC compliant: malformed) 3 dns=nosoa,noaa dnswkk=malformed (non RFC compliant: malformed) 4 dns=ok dnswkk=noerror,badkey,nosoa,noaa (non RFC compliant: rcode != NOTAUTH) 4 dns=ok dnswkk=noerror,badkey,tsig-wrong-alg,nosoa,noaa (non RFC compliant: rcode != NOTAUTH) 3 dns=ok dnswkk=noerror,badkey,tsig-wrong-alg,tsig-bad-time,nosoa,noaa (non RFC compliant: rcode != NOTAUTH) 142252 dns=ok dnswkk=notauth,badkey 2483 dns=refused dnswkk=notauth,badkey 694 dns=servfail dnswkk=notauth,badkey 369 dns=timeout dnswkk=notauth,badkey 295 dns=nosoa,noaa dnswkk=notauth,badkey 176 dns=rd dnswkk=notauth,badkey 43 dns=nosoa dnswkk=notauth,badkey 9 dns=noaa dnswkk=notauth,badkey 2 dns=nxdomain dnswkk=notauth,badkey 2 dns=opt dnswkk=notauth,badkey 2 dns=refused,rd dnswkk=notauth,badkey 5 dns=opt dnswkk=notauth,badkey,opt (non RFC compliant: OPT record in response) 318 dns=ok dnswkk=notauth,badkey,proxy 6 dns=refused dnswkk=notauth,badkey,proxy 3 dns=servfail dnswkk=notauth,badkey,proxy 2 dns=nosoa,noaa dnswkk=notauth,badkey,proxy 2 dns=timeout dnswkk=notauth,badkey,proxy 1 dns=rd dnswkk=notauth,badkey,rd,proxy (non RFC compliant: RD=1 in response) 8238 dns=ok dnswkk=notauth,badkey,tsig-bad-time 159 dns=refused dnswkk=notauth,badkey,tsig-bad-time 118 dns=servfail dnswkk=notauth,badkey,tsig-bad-time 37 dns=nosoa,noaa dnswkk=notauth,badkey,tsig-bad-time 30 dns=rd dnswkk=notauth,badkey,tsig-bad-time 17 dns=timeout dnswkk=notauth,badkey,tsig-bad-time 3 dns=noaa dnswkk=notauth,badkey,tsig-bad-time 2 dns=nosoa dnswkk=notauth,badkey,tsig-bad-time 31 dns=ok dnswkk=notauth,badkey,tsig-bad-time,proxy 2 dns=nosoa,noaa dnswkk=notauth,badkey,tsig-bad-time,proxy 1 dns=refused dnswkk=notauth,badkey,tsig-bad-time,proxy 27 dns=ok dnswkk=notauth,badkey,tsig-bad-time,tsig-bad-fudge 105 dns=ok dnswkk=notauth,badkey,tsig-wrong-alg 5 dns=nosoa,noaa dnswkk=notauth,badkey,tsig-wrong-alg 1 dns=ok dnswkk=notauth,badkey,tsig-wrong-alg,proxy 30 dns=ok dnswkk=notauth,badkey,tsig-wrong-alg,tsig-bad-time 11401 dns=ok dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 278 dns=refused dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 82 dns=timeout dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 18 dns=nosoa,noaa dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 5 dns=servfail dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 2 dns=nxdomain dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 2 dns=reset dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 1 dns=nosoa dnswkk=notauth,notsig (non RFC compliant: NOTAUTH without TSIG) 445 dns=ok dnswkk=notimp,notsig 45 dns=refused dnswkk=notimp,notsig 2 dns=notimp dnswkk=notimp,notsig 2 dns=timeout dnswkk=notimp,notsig 41201 dns=ok dnswkk=notsig 284 dns=timeout dnswkk=notsig 33 dns=servfail dnswkk=notsig 15 dns=opt dnswkk=notsig 6 dns=refused dnswkk=notsig 4 dns=noaa dnswkk=notsig 2 dns=malformed dnswkk=notsig 1 dns=cd dnswkk=notsig 1 dns=nosoa,noaa,rd dnswkk=notsig 3 dns=cd dnswkk=notsig,cd 1 dns=ok dnswkk=notsig,cd 54 dns=noaa dnswkk=notsig,noaa 13 dns=ok dnswkk=notsig,noaa 4 dns=opt dnswkk=notsig,noaa 3 dns=noaa,rd dnswkk=notsig,noaa,rd 123 dns=nosoa dnswkk=notsig,nosoa 3 dns=nosoa,noaa,rd dnswkk=notsig,nosoa 2 dns=nosoa,noaa dnswkk=notsig,nosoa 311 dns=nosoa,noaa dnswkk=notsig,nosoa,noaa 78 dns=nosoa,noaa,rd dnswkk=notsig,nosoa,noaa,rd 8 dns=ok dnswkk=notsig,nosoa,noaa,rd 3 dns=nosoa dnswkk=notsig,nosoa,noaa,rd 5 dns=nosoa,rd dnswkk=notsig,nosoa,rd 15 dns=opt dnswkk=notsig,opt 1 dns=timeout dnswkk=notsig,opt 1 dns=opt,cd dnswkk=notsig,opt,cd 1 dns=nosoa,noaa dnswkk=notsig,opt,nosoa,noaa 27 dns=rd dnswkk=notsig,rd 6 dns=timeout dnswkk=notsig,rd 21 dns=nxdomain dnswkk=nxdomain,notsig 3 dns=ok dnswkk=ok 121 dns=ok dnswkk=refused,badkey (non RFC compliant: rcode != NOTAUTH) 20 dns=servfail dnswkk=refused,badkey (non RFC compliant: rcode != NOTAUTH) 19 dns=refused dnswkk=refused,badkey (non RFC compliant: rcode != NOTAUTH) 1 dns=nosoa,noaa dnswkk=refused,badkey (non RFC compliant: rcode != NOTAUTH) 1 dns=timeout dnswkk=refused,badkey (non RFC compliant: rcode != NOTAUTH) 5 dns=refused dnswkk=refused,badkey,tsig-bad-time (non RFC compliant: rcode != NOTAUTH) 996 dns=refused dnswkk=refused,notsig 2 dns=ok dnswkk=refused,notsig (non RFC compliant: REFUSED when plain DNS not REFUSED) 33 dns=refused dnswkk=refused,tsig-bad-sig (likely non RFC compliant) 1 dns=ok dnswkk=reset 1 dns=reset dnswkk=reset 1258 dns=ok dnswkk=servfail,notsig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 139 dns=servfail dnswkk=servfail,notsig 21 dns=refused dnswkk=servfail,notsig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 10 dns=nosoa,noaa dnswkk=servfail,notsig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 10 dns=timeout dnswkk=servfail,notsig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 2 dns=nxdomain,soa dnswkk=servfail,notsig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 1 dns=noaa dnswkk=servfail,notsig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 1 dns=rd dnswkk=servfail,notsig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 48 dns=ok dnswkk=servfail,tsig-bad-sig (non RFC compliant: SERVFAIL when plain DNS not SERVFAIL) 9 dns=servfail dnswkk=servfail,tsig-bad-sig 17621 dns=timeout dnswkk=timeout 1305 dns=ok dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 22 dns=refused dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 6 dns=servfail dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 5 dns=malformed dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 4 dns=rd dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 2 dns=nosoa dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 2 dns=nosoa,noaa dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 2 dns=nosoa,noaa,rd dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 1 dns=nosoa,rd dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 1 dns=opt dnswkk=timeout (non RFC compliant: timeout on request containing TSIG) 46 dns=ok dnswkk=tsig-bad-sig 4 dns=timeout dnswkk=tsig-bad-sig 4 dns=update dnswkk=tsig-bad-sig 7 dns=nosoa dnswkk=tsig-bad-sig,nosoa 1 dns=timeout dnswkk=tsig-bad-sig,nosoa 1 dns=nosoa,noaa dnswkk=tsig-bad-sig,nosoa,noaa 1 dns=ok dnswkk=tsig-not-last,tsig-bad-sig (non RFC compliant: TSIG not last record in additional section) > On 1 Mar 2019, at 11:14 pm, fujiw...@jprs.co.jp wrote: > > Dear DNSOP, > > I submitted draft-fujiwara-dnsop-fragment-attack-01. > > https://tools.ietf.org/html/draft-fujiwara-dnsop-fragment-attack-01 > > It summarized DNS cache poisoning attack using IP fragmentation > and countermeasures. > > If the draft is interested, I will request timeslot at IETF 104. > > I think it is time to consider to avoid IP Fragmentation in DNS. > It is possible to avoid IP fragmentation as much as possible. > > It is not good that DNS is the biggest user of IP fragmentation. > > Regards, > > -- > Kazunori Fujiwara, JPRS <fujiw...@jprs.co.jp> > > A new version of I-D, draft-fujiwara-dnsop-fragment-attack-01.txt > has been successfully submitted by Kazunori Fujiwara and posted to the > IETF repository. > > Name: draft-fujiwara-dnsop-fragment-attack > Revision: 01 > Title: Measures against cache poisoning attacks using IP > fragmentation in DNS > Document date: 2019-03-01 > Group: Individual Submission > Pages: 13 > URL: > https://www.ietf.org/internet-drafts/draft-fujiwara-dnsop-fragment-attack-01.txt > Status: > https://datatracker.ietf.org/doc/draft-fujiwara-dnsop-fragment-attack/ > Htmlized: > https://tools.ietf.org/html/draft-fujiwara-dnsop-fragment-attack-01 > Htmlized: > https://datatracker.ietf.org/doc/html/draft-fujiwara-dnsop-fragment-attack > Diff: > https://www.ietf.org/rfcdiff?url2=draft-fujiwara-dnsop-fragment-attack-01 > > Abstract: > Researchers proposed practical DNS cache poisoning attacks using IP > fragmentation. This document shows feasible and adequate measures at > full-service resolvers and authoritative servers against these > attacks. To protect resolvers from these attacks, avoid > fragmentation (limit requestor's UDP payload size to 1220/1232), drop > fragmented UDP DNS responses and use TCP at resolver side. To make a > domain name robust against these attacks, limit EDNS0 Responder's > maximum payload size to 1220, set DONTFRAG option to DNS response > packets and use good random fragmentation ID at authoritative server > side. > > _______________________________________________ > DNSOP mailing list > DNSOP@ietf.org > https://www.ietf.org/mailman/listinfo/dnsop -- Mark Andrews, ISC 1 Seymour St., Dundas Valley, NSW 2117, Australia PHONE: +61 2 9871 4742 INTERNET: ma...@isc.org _______________________________________________ DNSOP mailing list DNSOP@ietf.org https://www.ietf.org/mailman/listinfo/dnsop