mirror of
https://github.com/roles-ansible/ansible_role_unbound.git
synced 2024-08-16 13:39:49 +02:00
commit
e57adf7376
7 changed files with 73 additions and 18 deletions
|
@ -11,3 +11,20 @@ unbound_access_control:
|
||||||
- 'access-control: ::1 allow'
|
- 'access-control: ::1 allow'
|
||||||
|
|
||||||
unbound__state: 'present'
|
unbound__state: 'present'
|
||||||
|
|
||||||
|
# snippets for dns rebinding protection
|
||||||
|
unbount__dns_rebind_protection: true
|
||||||
|
unbound__protect_rebind_localhost: true
|
||||||
|
unbound__protect_rebind_rfc1918: true
|
||||||
|
unbound__protect_rebind_carrier_grade_nat: true
|
||||||
|
unbound__protect_rebind_v4_link_local: true
|
||||||
|
unbound__protect_rebind_unique_local: true
|
||||||
|
unbound__protect_rebind_v6_link_local: true
|
||||||
|
unbound__protect_rebind_rfc4291: true
|
||||||
|
|
||||||
|
# dns qname privacy
|
||||||
|
unbount__dns_qname_minimisation: true
|
||||||
|
|
||||||
|
# anchor file
|
||||||
|
unbound__auto_trust_anchor: true
|
||||||
|
unbound__auto_trust_anchor_file: "/var/lib/unbound/root.key"
|
||||||
|
|
|
@ -1,23 +1,44 @@
|
||||||
---
|
---
|
||||||
- name: Copy unbound configuration snippets
|
- name: Copy snipet to protect for DNS rebinding
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.copy:
|
ansible.builtin.template:
|
||||||
src: '{{ item }}'
|
src: 'templates/snippets/private-addresses.conf'
|
||||||
dest: '/etc/unbound/unbound.conf.d/'
|
dest: '/etc/unbound/unbound.conf.d/'
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 'u=rwX,g=rX,o=rX'
|
mode: 'u=rw,g=r,o=r'
|
||||||
with_fileglob:
|
notify: 'Systemctl restart unbound'
|
||||||
- 'files/snippets/*.conf'
|
when: unbount__dns_rebind_protection | bool
|
||||||
notify: Systemctl restart unbound
|
|
||||||
|
|
||||||
- name: Copy main unbound configuration
|
- name: Copy snipet for qname privacy
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: 'files/unbound.conf'
|
src: 'templates/snippets/qname-minimisation.conf'
|
||||||
|
dest: '/etc/unbound/unbound.conf.d/'
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 'u=rw,g=r,o=r'
|
||||||
|
notify: 'Systemctl restart unbound'
|
||||||
|
when: unbount__dns_qname_minimisation | bool
|
||||||
|
|
||||||
|
- name: Copy anchor snippet
|
||||||
|
become: true
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: 'templates/snippets/root-auto-trust-anchor-file.conf'
|
||||||
|
dest: '/etc/unbound/unbound.conf.d/'
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 'u=rw,g=r,o=r'
|
||||||
|
notify: 'Systemctl restart unbound'
|
||||||
|
when: unbound__auto_trust_anchor | bool
|
||||||
|
|
||||||
|
- name: Transfer main unbound configuration
|
||||||
|
become: true
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: 'templates/unbound.conf'
|
||||||
dest: '/etc/unbound/unbound.conf'
|
dest: '/etc/unbound/unbound.conf'
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 'u=rw,g=r,o=r'
|
mode: 'u=rw,g=r,o=r'
|
||||||
validate: unbound-checkconf %s
|
validate: unbound-checkconf %s
|
||||||
notify: Systemctl restart unbound
|
notify: 'Systemctl restart unbound'
|
||||||
|
|
|
@ -1,31 +1,44 @@
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
server:
|
server:
|
||||||
# Give IPv4 of IPv6 addresses or classless subnets. These are addresses on your private network,
|
# Give IPv4 of IPv6 addresses or classless subnets. These are addresses on your private network,
|
||||||
# and are not allowed to be returned for public internet names. Any occurrence of such addresses
|
# and are not allowed to be returned for public internet names. Any occurrence of such addresses
|
||||||
# are removed from DNS answers. Additionally, the DNSSEC validator may mark the answers bogus.
|
# are removed from DNS answers. Additionally, the DNSSEC validator may mark the answers bogus.
|
||||||
# This protects against so-called DNS Rebinding.
|
# This protects against so-called DNS Rebinding.
|
||||||
|
|
||||||
|
# Legacy IP
|
||||||
|
{% if unbound__protect_rebind_localhost | bool %}
|
||||||
# localhost
|
# localhost
|
||||||
private-address: 127.0.0.0/8
|
private-address: 127.0.0.0/8
|
||||||
|
{% endif %}
|
||||||
|
{% if unbound__protect_rebind_rfc1918 | bool %}
|
||||||
# private IPv4 address spaces (rfc 1918)
|
# private IPv4 address spaces (rfc 1918)
|
||||||
private-address: 10.0.0.0/8
|
private-address: 10.0.0.0/8
|
||||||
private-address: 172.16.0.0/12
|
private-address: 172.16.0.0/12
|
||||||
private-address: 192.168.0.0/16
|
private-address: 192.168.0.0/16
|
||||||
|
{% endif %}
|
||||||
|
{% if unbound__protect_rebind_carrier_grade_nat | bool %}
|
||||||
# carrier-grade NAT (rfc 6598)
|
# carrier-grade NAT (rfc 6598)
|
||||||
private-address: 100.64.0.0/10
|
private-address: 100.64.0.0/10
|
||||||
|
{% endif %}
|
||||||
|
{% if unbound__protect_rebind_v4_link_local | bool %}
|
||||||
# link-local addresses
|
# link-local addresses
|
||||||
private-address: 169.254.0.0/16
|
private-address: 169.254.0.0/16
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# IPv6
|
||||||
|
{% if unbound__protect_rebind_localhost | bool %}
|
||||||
# localhost
|
# localhost
|
||||||
private-address: ::/128
|
private-address: ::/128
|
||||||
|
{% endif %}
|
||||||
|
{% if unbound__protect_rebind_unique_local | bool %}
|
||||||
# unique local addresses (rfc 4193)
|
# unique local addresses (rfc 4193)
|
||||||
private-address: fd00::/8
|
private-address: fd00::/8
|
||||||
|
{% endif %}
|
||||||
|
{% if unbound__protect_rebind_v6_link_local | bool %}
|
||||||
# link-local addresses (rfc 4862, 4291)
|
# link-local addresses (rfc 4862, 4291)
|
||||||
private-address: fe80::/10
|
private-address: fe80::/10
|
||||||
|
{% endif %}
|
||||||
|
{% if unbound__protect_rebind_rfc4291 | bool %}
|
||||||
# IPv4-mapped addresses (rfc 4291)
|
# IPv4-mapped addresses (rfc 4291)
|
||||||
private-address: ::ffff:0:0/96
|
private-address: ::ffff:0:0/96
|
||||||
|
{% endif %}
|
|
@ -1,3 +1,4 @@
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
server:
|
server:
|
||||||
# Send minimum amount of information to upstream servers to enhance
|
# Send minimum amount of information to upstream servers to enhance
|
||||||
# privacy. Only sends minimum required labels of the QNAME and sets
|
# privacy. Only sends minimum required labels of the QNAME and sets
|
|
@ -1,4 +1,5 @@
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
server:
|
server:
|
||||||
# Perform cryptographic DNSSEC validation using the root trust anchor.
|
# Perform cryptographic DNSSEC validation using the root trust anchor.
|
||||||
# File with trust anchor for one zone, which is tracked with RFC5011 probes.
|
# File with trust anchor for one zone, which is tracked with RFC5011 probes.
|
||||||
auto-trust-anchor-file: "/var/lib/unbound/root.key"
|
auto-trust-anchor-file: "{{ unbound__auto_trust_anchor_file }}"
|
|
@ -1,3 +1,5 @@
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
|
|
||||||
include: "/etc/unbound/unbound.conf.d/*.conf"
|
include: "/etc/unbound/unbound.conf.d/*.conf"
|
||||||
|
|
||||||
remote-control:
|
remote-control:
|
|
@ -1,3 +1,3 @@
|
||||||
---
|
---
|
||||||
playbook_version_number: 69 # should be integer
|
playbook_version_number: 70 # should be integer
|
||||||
playbook_version_path: 'role-unbound_roles-ansible_github.com.version'
|
playbook_version_path: 'role-unbound_roles-ansible_github.com.version'
|
||||||
|
|
Loading…
Reference in a new issue