mirror of
https://github.com/google/nomulus.git
synced 2025-04-30 12:07:51 +02:00
Document TLD security restrictions
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=152399752
This commit is contained in:
parent
5127aeafb5
commit
783033c261
1 changed files with 107 additions and 0 deletions
107
docs/operational-procedures/tld-security-restrictions.md
Normal file
107
docs/operational-procedures/tld-security-restrictions.md
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
# Security restrictions for TLD
|
||||||
|
|
||||||
|
Nomulus provides several security features that allow registries to impose
|
||||||
|
additional restrictions on which domains are allowed on a TLD and which
|
||||||
|
registrant/nameservers they can have. The restrictions can be applied to an
|
||||||
|
entire TLD or on a per-domain basis. This document outlines the various
|
||||||
|
restrictions available, their intended use case, and how to use them.
|
||||||
|
|
||||||
|
## TLD-wide restrictions
|
||||||
|
|
||||||
|
Nomulus allows registry administrators to set registrant contact and nameserver
|
||||||
|
restrictions on a TLD. Use the following command to set the restrictions when
|
||||||
|
creating or updating a TLD:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ nomulus -e production [create_tld | update_tld] \
|
||||||
|
--allowed_nameservers {NS1},{NS2},... \
|
||||||
|
--allowed_registrants {REG1},{REG2},... \
|
||||||
|
{TLD1} {TLD2} ...
|
||||||
|
```
|
||||||
|
|
||||||
|
When nameserver or registrant restrictions are set on a TLD, any domain mutation
|
||||||
|
flow under that TLD will verify that the supplied nameservers or registrants
|
||||||
|
constitute a subset of the allowed nameservers or registrants on the TLD. Note
|
||||||
|
that an empty set is not considered a legitimate subset, and consequently when
|
||||||
|
the restrictions are set for one property, you **must** provide at least one
|
||||||
|
corresponding value that is allowed. If no restrictions are set, it is allowed
|
||||||
|
to create/update domains that do not have nameservers on it. Registrant, on the
|
||||||
|
other hand, is always required.
|
||||||
|
|
||||||
|
## Per-domain nameserver restrictions
|
||||||
|
|
||||||
|
Registries can also elect to impose per-domain nameserver restrictions in
|
||||||
|
Nomulus. This restriction is orthogonal to the TLD-wide nameserver restriction
|
||||||
|
detailed above, and the allowed nameserver list can be set to an arbitrary list
|
||||||
|
that is not related to the TLD-wide allowed nameservers list (if any). Any
|
||||||
|
domain mutation must pass both validations (if applicable). In practice, it is
|
||||||
|
always recommended to maintain consistency between the two types of lists, by
|
||||||
|
making the per-domain allowed nameserver list a subset of the TLD-wide one,
|
||||||
|
because any nameservers that are not included in both lists are effectively
|
||||||
|
disallowed.
|
||||||
|
|
||||||
|
The per-domain allowed nameserver lists are maintained in reserved lists with
|
||||||
|
reservation type `NAMESERVER_RESTRICTED`, using a csv format, which nameservers
|
||||||
|
delimited by colons. The following example has two allowed nameservers:
|
||||||
|
|
||||||
|
```
|
||||||
|
internaldomain,NAMESERVER_RESTRICTED,ns1.internal.tld:ns1.internal.tld
|
||||||
|
```
|
||||||
|
|
||||||
|
Reserved lists can also prohibit domain registrations for reasons other than
|
||||||
|
nameserver restrictions. For more details on reserved lists and how they work,
|
||||||
|
refer to the doc [here](reserved-list-management.md). Note that multiple
|
||||||
|
reserved lists can be applied to one TLD, and if they happen to contain
|
||||||
|
nameserver restrictions to the same label, the resulting restriction set is the
|
||||||
|
intersection of the all allowed nameserver lists for that label.
|
||||||
|
|
||||||
|
## Domain create restriction on closed TLDs
|
||||||
|
|
||||||
|
Nomulus offers the ability to "lock-down" a TLD so that domain registration is
|
||||||
|
by default forbidden unless the domain is whitelisted. The typical use case for
|
||||||
|
this feature is for a closed TLD that wants to enforce greater security by only
|
||||||
|
allowing registration of domains that are explicitly allowed. Such restriction
|
||||||
|
on domain creation is achieved by setting the TLD to be "domain create
|
||||||
|
restricted". The allowed list of domains are read from reserved lists applied on
|
||||||
|
the TLD, with `NAMESERVER_RESTRICTED` reservation. This means that each domain
|
||||||
|
will also need to have explicitly allowed nameservers configured in its reserved
|
||||||
|
list entry, and the per-domain nameserver validation is performed in related
|
||||||
|
flows.
|
||||||
|
|
||||||
|
To apply domain create restriction when creating/updating a TLD:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ nomulus -e production [create_tld | update_tld] \
|
||||||
|
--domain_create_restricted {TLD1} {TLD2} ...
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that you do **not** have to set a TLD-wide allowed nameservers list,
|
||||||
|
because it operates independently from the per-domain nameservers restriction
|
||||||
|
that `NAMESERVER_RESTRICTED` reservation invokes.
|
||||||
|
|
||||||
|
In addition to disabling registration of non-whitelisted domains, setting a TLD
|
||||||
|
as domain create restricted also applies `SERVER_UPDATE_PROHIBITED` and
|
||||||
|
`SERVER_TRANSFER_PROHIBITED` status to domains automatically when they are
|
||||||
|
created. Therefore any domains created under such a TLD is virtually immutable.
|
||||||
|
For more information on EPP status codes, see
|
||||||
|
[here](https://tools.ietf.org/html/rfc5731#section-2.3).
|
||||||
|
|
||||||
|
The consequence of applying these status code is that no registrar can send
|
||||||
|
request to modify an existing domain without the registry explicitly allowing it
|
||||||
|
on a case-by-case basis. If a change does need to be made, the registry must
|
||||||
|
explicitly remove the status, make changes, and then reapply the status. To
|
||||||
|
remove/reapply server status, use:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ nomulus -e production update_server_locks \
|
||||||
|
--[apply | remove] {STATUS1},{STATUS2},... \
|
||||||
|
--client {REGISTRAR}
|
||||||
|
--n {DOMAIN}
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that domain create restricted is intended for closed TLDs, as such, the
|
||||||
|
validation only happens in regular domain create/update flows. Domain
|
||||||
|
application and allocate are usually not applicable to closed TLDs because there
|
||||||
|
is no sunrise period. Therefore no domain whitelist validation against the
|
||||||
|
reserved lists is performed during these flows, nor are server prohibited status
|
||||||
|
applied.
|
Loading…
Add table
Reference in a new issue