♻️: refactor allowlist
This commit is contained in:
@@ -42,10 +42,10 @@ frontend http
|
||||
acl letsencrypt path_beg /.well-known/acme-challenge
|
||||
redirect scheme https code 301 if !letsencrypt
|
||||
{% for server in groups['webservers'] | difference(groups['disabled_loadbalanced_webservers']) | sort %}
|
||||
{% for hostname in hostvars[server]['web_hostname'] | sort %}
|
||||
## {{ hostname }} configuration
|
||||
acl host_{{ hostname }} hdr(host) -i {{ hostname }}
|
||||
use_backend http_{{ server }} if letsencrypt host_{{ hostname }}
|
||||
{% for hostname in hostvars[server]['web_hostname'] | sort(attribute='host') %}
|
||||
## {{ hostname.host }} configuration
|
||||
acl host_{{ hostname.host }} hdr(host) -i {{ hostname.host }}
|
||||
use_backend http_{{ server }} if letsencrypt host_{{ hostname.host }}
|
||||
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
@@ -57,13 +57,14 @@ frontend https
|
||||
tcp-request inspect-delay 3s
|
||||
tcp-request content accept if { req.ssl_hello_type 1 }
|
||||
{% for server in groups['webservers'] | difference(groups['disabled_loadbalanced_webservers']) | sort %}
|
||||
{% for hostname in hostvars[server]['web_hostname'] | sort %}
|
||||
## {{ hostname }} configuration
|
||||
acl host_{{ hostname }} req.ssl_sni -i {{ hostname }}
|
||||
{% if hostname == "btf.mateu.be" %}
|
||||
acl network_allowed_{{ hostname }} src 88.175.123.77
|
||||
{% for hostname in hostvars[server]['web_hostname'] | sort(attribute='host') %}
|
||||
## {{ hostname.host }} configuration
|
||||
acl host_{{ hostname.host }} req.ssl_sni -i {{ hostname.host }}
|
||||
{% if hostname.allowlistv4 is defined %}
|
||||
acl network_allowed_{{ hostname.host }} src {% for addrv4 in hostname.allowlistv4 %}{{ addrv4 }}{% endfor %}
|
||||
|
||||
{% endif %}
|
||||
use_backend https_{{ server }} if host_{{ hostname }}{% if hostname == "btf.mateu.be" %} network_allowed_{{ hostname }}{% endif %}
|
||||
use_backend https_{{ server }} if host_{{ hostname.host }}{% if hostname.allowlistv4 is defined %} network_allowed_{{ hostname.host }}{% endif %}
|
||||
|
||||
|
||||
{% endfor %}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
|
||||
- name: Symlink vhosts
|
||||
ansible.builtin.file:
|
||||
src: "/etc/nginx/sites-available/{{ item }}.conf"
|
||||
dest: "/etc/nginx/sites-enabled/{{ item }}.conf"
|
||||
src: "/etc/nginx/sites-available/{{ item.host }}.conf"
|
||||
dest: "/etc/nginx/sites-enabled/{{ item.host }}.conf"
|
||||
force: true
|
||||
follow: false
|
||||
state: link
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
- name: Install vhosts
|
||||
ansible.builtin.template:
|
||||
src: "vhosts/{{ item }}.conf.j2"
|
||||
dest: "/etc/nginx/sites-available/{{ item }}.conf"
|
||||
src: "vhosts/{{ item.host }}.conf.j2"
|
||||
dest: "/etc/nginx/sites-available/{{ item.host }}.conf"
|
||||
mode: "0o644"
|
||||
notify:
|
||||
- Restart nginx
|
||||
|
@@ -1,10 +1,21 @@
|
||||
listen *:443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
|
||||
ssl_certificate /etc/x509/{{ item }}/fullchain.cer;
|
||||
ssl_certificate_key /etc/x509/{{ item }}/{{ item }}.key;
|
||||
server_name {{ item }};
|
||||
access_log /var/log/nginx/{{ item }}.access.log combined;
|
||||
ssl_certificate /etc/x509/{{ item.host }}/fullchain.cer;
|
||||
ssl_certificate_key /etc/x509/{{ item.host }}/{{ item.host }}.key;
|
||||
server_name {{ item.host }};
|
||||
access_log /var/log/nginx/{{ item.host }}.access.log combined;
|
||||
access_log syslog:server=unix:/dev/log combined;
|
||||
error_log /var/log/nginx/{{ item }}.error.log;
|
||||
error_log /var/log/nginx/{{ item.host }}.error.log;
|
||||
error_log syslog:server=unix:/dev/log;
|
||||
{% if item.allowlistv4 is defined %}
|
||||
allow {{ hostvars['haproxy.dmz.mateu.be'].ansible_default_ipv4.address }};
|
||||
{% endif %}
|
||||
{% if item.allowlistv6 is defined %}
|
||||
{% for addrv6 in item.allowlistv6 %}
|
||||
allow {{ addrv6 }};
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.allowlistv4 is defined or item.allowlistv6 is defined %}
|
||||
deny all;
|
||||
{% endif %}
|
||||
|
@@ -1,4 +1,3 @@
|
||||
{% set allowed_ips=['10.233.212.2/32','10.233.212.64/27', '2a01:e0a:9bd:2811::/64', '2a01:e0a:9bd:2810::/64', '2a01:e0a:fc:ebc0::/64', '2a01:cb00:8a0a:b700::/64', '2a01:e0a:d19:ef90::/64', '2001:910:13c8::/48', '2a01:e0a:bde:d350::/64', '2a01:cb00:f55:2d00::/64'] -%}
|
||||
server {
|
||||
{% include './templates/header.conf.j2' %}
|
||||
|
||||
@@ -6,10 +5,6 @@ server {
|
||||
root /net/;
|
||||
fancyindex on;
|
||||
fancyindex_exact_size off;
|
||||
{% for allowed_ip in allowed_ips -%}
|
||||
allow {{ allowed_ip }};
|
||||
{% endfor -%}
|
||||
deny all;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -2,7 +2,7 @@ server {
|
||||
{% include './templates/header.conf.j2' %}
|
||||
|
||||
location / {
|
||||
proxy_pass http://s3_backend_{{ item.split('.')|join('_') }};
|
||||
proxy_pass http://s3_backend_{{ item.host.split('.')|join('_') }};
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $host;
|
||||
# Disable buffering to a temporary file.
|
||||
@@ -10,7 +10,7 @@ server {
|
||||
}
|
||||
}
|
||||
|
||||
upstream s3_backend_{{ item.split('.')|join('_') }} {
|
||||
upstream s3_backend_{{ item.host.split('.')|join('_') }} {
|
||||
# If you have a garage instance locally.
|
||||
server [::1]:3900;
|
||||
}
|
||||
|
@@ -2,13 +2,13 @@ server {
|
||||
{% include './templates/header.conf.j2' %}
|
||||
|
||||
location / {
|
||||
proxy_pass http://web_backend_{{ item.split('.')|join('_') }};
|
||||
proxy_pass http://web_backend_{{ item.host.split('.')|join('_') }};
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $host;
|
||||
}
|
||||
}
|
||||
|
||||
upstream web_backend_{{ item.split('.')|join('_') }} {
|
||||
upstream web_backend_{{ item.host.split('.')|join('_') }} {
|
||||
# If you have a garage instance locally.
|
||||
server [::1]:3902;
|
||||
}
|
||||
|
@@ -11,8 +11,8 @@
|
||||
dns_serial: "{{ ansible_date_time.epoch }}"
|
||||
web_hostname_block: |-
|
||||
{% for webserver in groups['webservers'] | sort -%}
|
||||
{% for web_hostname in (hostvars[webserver]['web_hostname'] | select('match', '.+' ~ item.name) | sort) -%}
|
||||
{{ web_hostname | regex_replace('\.' ~ item.name ~ '$', '') }} IN CNAME {{ webserver }}.
|
||||
{% for web_hostname in (hostvars[webserver]['web_hostname'] | selectattr('host', 'match', '.+' ~ item.name) | sort(attribute='host')) -%}
|
||||
{{ web_hostname.host | regex_replace('\.' ~ item.name ~ '$', '') }} IN CNAME {{ webserver }}.
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
Reference in New Issue
Block a user