diff options
| -rw-r--r-- | ansible/group_vars/all/linode.yml | 12 | ||||
| -rw-r--r-- | ansible/group_vars/all/nftables.yml | 22 | 
2 files changed, 26 insertions, 8 deletions
| diff --git a/ansible/group_vars/all/linode.yml b/ansible/group_vars/all/linode.yml index a5dde48..08b73d4 100644 --- a/ansible/group_vars/all/linode.yml +++ b/ansible/group_vars/all/linode.yml @@ -1,9 +1,5 @@  --- -lke_ipv4_addresses: -  - 172.105.65.136 -  - 139.162.171.26 -  - 139.162.171.39 -lke_ipv6_addresses: -  - 2a01:7e01::f03c:94ff:fe7d:6afb/128 -  - 2a01:7e01::f03c:94ff:fe7d:99b4/128 -  - 2a01:7e01::f03c:94ff:fe7d:99fd/128 +lke_all_addresses: "{{ lookup('ansible.builtin.url', 'https://geoip.linode.com/', wantlist=True) }}" +lke_frankfurt_addresses: "{{ lke_all_addresses | select('search', '^.*Frankfurt.*$') | map('split', ',') | map(attribute=0) | list }}" +lke_frankfurt_ipv4_addresses: "{{ lke_frankfurt_addresses | select('search', '^.*\\..*$') }}" +lke_frankfurt_ipv6_addresses: "{{ lke_frankfurt_addresses | select('search', '^.*:.*$') }}" diff --git a/ansible/group_vars/all/nftables.yml b/ansible/group_vars/all/nftables.yml index 53a7239..0f1b8bb 100644 --- a/ansible/group_vars/all/nftables.yml +++ b/ansible/group_vars/all/nftables.yml @@ -14,6 +14,21 @@ nftables_configuration: |        }      } +  {% if inventory_hostname == 'lovelace' %} +    # Access control for database server +    set possible_lke_ipv4_addrs { +      type ipv4_addr +      flags interval +      elements = { {{ lke_frankfurt_ipv4_addresses | join(", ") }} } +    } + +    set possible_lke_ipv6_addrs { +      type ipv6_addr +      flags interval +      elements = { {{ lke_frankfurt_ipv6_addresses | join(", ") }} } +    } +  {% endif %} +      chain input {        type filter hook input priority 0 @@ -45,6 +60,13 @@ nftables_configuration: |        iifname {{ ansible_default_ipv6.interface }} udp dport {{ wireguard_port }} ct state new accept    {% endif %} +  {% if inventory_hostname == 'lovelace' %} +      # PostgreSQL connections +      iifname {{ ansible_default_ipv4.interface }} ip saddr @possible_lke_ipv4_addrs tcp dport postgresql ct state new accept +  {% if ansible_default_ipv6 is defined %} +      iifname {{ ansible_default_ipv6.interface }} ip6 saddr @possible_lke_ipv6_addrs tcp dport postgresql ct state new accept +  {% endif %} +  {% endif %}      }      chain forward { | 
