100 lines
3.5 KiB
Markdown
100 lines
3.5 KiB
Markdown
|
|
# NAMESERVER01: A name server should not be a recursor
|
||
|
|
|
||
|
|
## Test case identifier
|
||
|
|
**NAMESERVER01**
|
||
|
|
|
||
|
|
## Objective
|
||
|
|
|
||
|
|
To ensure consistency in DNS, an authoritative name server should not be
|
||
|
|
configured to do recursive lookups. Also, open recursive resolvers are
|
||
|
|
considered bad internet practice due to their capability of assisting in
|
||
|
|
large scale DDoS attacks. The introduction to [RFC 5358] elaborates on
|
||
|
|
mixing recursor and authoritative functionality, and the issue is further
|
||
|
|
elaborated by [D.J. Bernstein].
|
||
|
|
|
||
|
|
Section 2.5 of [RFC 2870] have very specific requirement on disabling
|
||
|
|
recursion functionality on root name servers.
|
||
|
|
|
||
|
|
## Scope
|
||
|
|
|
||
|
|
It is assumed that *Child Zone* is also tested by [Connectivity01]. This test
|
||
|
|
case will set DEBUG level on messages for non-responsive name servers.
|
||
|
|
|
||
|
|
## Inputs
|
||
|
|
|
||
|
|
* The domain name to be tested ("Child Zone").
|
||
|
|
|
||
|
|
## Ordered description of steps to be taken to execute the test case
|
||
|
|
|
||
|
|
1. Create A queries for the following domain names:
|
||
|
|
1. xn--nameservertest.iis.se
|
||
|
|
2. xn--nameservertest.icann.org
|
||
|
|
3. xn--nameservertest.ripe.net
|
||
|
|
|
||
|
|
2. Retrieve all name server IPs for the *Child Zone* using
|
||
|
|
[Method4] and [Method5].
|
||
|
|
|
||
|
|
3. Repeat the following steps for each name server IP.
|
||
|
|
1. Send the three A queries over UDP.
|
||
|
|
2. For each query do the following steps:
|
||
|
|
1. If the name server does not respond with a DNS
|
||
|
|
response, then emit *[NO_RESPONSE]*.
|
||
|
|
2. If the DNS response comes with the RA flag set, then
|
||
|
|
emit *[IS_A_RECURSOR]*.
|
||
|
|
3. If the RCODE is NXDOMAIN in the responses for all three
|
||
|
|
queries then emit *[IS_A_RECURSOR]*.
|
||
|
|
4. If neither *[NO_RESPONSE]* nor *[IS_A_RECURSOR]* has been emitted
|
||
|
|
for that server, then emit *[NO_RECURSOR]*.
|
||
|
|
|
||
|
|
## Outcome(s)
|
||
|
|
|
||
|
|
The outcome of this Test Case is "fail" if there is at least one message
|
||
|
|
with the severity level *ERROR* or *CRITICAL*.
|
||
|
|
|
||
|
|
The outcome of this Test Case is "warning" if there is at least one message
|
||
|
|
with the severity level *WARNING*, but no message with severity level
|
||
|
|
*ERROR* or *CRITICAL*.
|
||
|
|
|
||
|
|
In other cases the outcome of this Test Case is "pass".
|
||
|
|
|
||
|
|
Message | Default severity level (if message is emitted)
|
||
|
|
:-----------------------------|:-----------------------------------
|
||
|
|
NO_RESPONSE | DEBUG
|
||
|
|
IS_A_RECURSOR | ERROR
|
||
|
|
NO_RECURSOR | INFO
|
||
|
|
|
||
|
|
## Special procedural requirements
|
||
|
|
|
||
|
|
If either IPv4 or IPv6 transport is disabled, ignore the evaluation of the
|
||
|
|
result of any test using this transport protocol. Log a message reporting
|
||
|
|
on the ignored result.
|
||
|
|
|
||
|
|
The domain names used in the queries are selected to be almost certainly
|
||
|
|
nonexistent name since the names are chosen to violate the
|
||
|
|
[IDNA 2008 specification] under SLDs (second-level domains) expected to
|
||
|
|
respect that specification. The SLDs are selected so that the chance that
|
||
|
|
they are all hosted on the same servers is low.
|
||
|
|
|
||
|
|
## Intercase dependencies
|
||
|
|
|
||
|
|
None.
|
||
|
|
|
||
|
|
## Terminology
|
||
|
|
|
||
|
|
Valid domain names according to the "IDNA 2008 specification" is found in
|
||
|
|
[RFC 5890], section 2.3.1, page 7.
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
[Connectivity01]: ../Connectivity-TP/connectivity01.md
|
||
|
|
[D.J. Bernstein]: https://cr.yp.to/djbdns/separation.html
|
||
|
|
[IDNA 2008 specification]: #terminology
|
||
|
|
[IS_A_RECURSOR]: #outcomes
|
||
|
|
[Method4]: ../Methods.md#method-4-obtain-glue-address-records-from-parent
|
||
|
|
[Method5]: ../Methods.md#method-5-obtain-the-name-server-address-records-from-child
|
||
|
|
[NO_RECURSOR]: #outcomes
|
||
|
|
[NO_RESPONSE]: #outcomes
|
||
|
|
[RFC 2870]: https://datatracker.ietf.org/doc/html/rfc2870
|
||
|
|
[RFC 5358]: https://datatracker.ietf.org/doc/html/rfc5358
|
||
|
|
[RFC 5890]: https://datatracker.ietf.org/doc/html/rfc5890
|