new firewall system
Render the template system wide, then apply. This way, the appdefinition.yml can contain everything that is required, and we don't have to specify this anymore in the main config
This commit is contained in:
parent
cd8e0cbad7
commit
242a6d1cca
6 changed files with 39 additions and 33 deletions
|
|
@ -15,11 +15,6 @@ ppm_apps:
|
|||
- on_server: ppm.pfoe.be
|
||||
user: nginx
|
||||
chicken_egg_appdefinition: ../nginx/
|
||||
firewall_redirect:
|
||||
- from: 8080
|
||||
to: 80
|
||||
- from: 8443
|
||||
to: 443
|
||||
appconfig:
|
||||
appinfo:
|
||||
url: https://ppm.pfoe.be/ppm/nginx.git
|
||||
|
|
|
|||
22
roles/ppm/files/ppmfirewall
Normal file
22
roles/ppm/files/ppmfirewall
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
|
||||
# PPM Firewall
|
||||
|
||||
{% for app in otherapps -%}
|
||||
{%- if "firewall" in otherapps[app]["imports"] -%}
|
||||
{%- set oneapp = otherapps[app]["imports"]["firewall"] %}
|
||||
|
||||
{% for redirect in oneapp.redirect %}
|
||||
# Redirect {{ redirect.from }} to {{ redirect.to }} ({{ redirect.proto | default('tcp') }}) for {{ app }}
|
||||
iptables -A INPUT -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.to }} -j ACCEPT
|
||||
ip6tables -A INPUT -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.to }} -j ACCEPT
|
||||
iptables -t nat -A PREROUTING -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.from }} -j REDIRECT --to-ports {{ redirect.to }}
|
||||
ip6tables -t nat -A PREROUTING -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.from }} -j REDIRECT --to-ports {{ redirect.to }}
|
||||
{% endfor %}
|
||||
{% for openport in oneapp.open %}
|
||||
# Open port {{ openport.port }}/{{ openport.proto | default('tcp') }} for app {{ app }}
|
||||
iptables -A INPUT -p {{ openport.proto | default('tcp') }} --dport {{ openport.port }} -j ACCEPT
|
||||
ip6tables -A INPUT -p {{ openport.proto | default('tcp') }} --dport {{ openport.port }} -j ACCEPT
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
13
roles/ppm/tasks/firewall.yml
Normal file
13
roles/ppm/tasks/firewall.yml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
- name: Configure firewall options
|
||||
ansible.builtin.copy:
|
||||
dest: /home/.ppmfirewalltemplate
|
||||
group: root
|
||||
owner: root
|
||||
mode: "0755"
|
||||
src: ppmfirewall
|
||||
|
||||
- name: Render firewall
|
||||
ansible.builtin.shell: ppm template /home/.ppmfirewalltemplate /etc/firewall.d/ppmfirewall ; chmod 755 /etc/firewall.d/ppmfirewall
|
||||
register: firewall_render
|
||||
changed_when: "'content did not change' not in firewall_render.stdout"
|
||||
notify: Restart firewall
|
||||
|
|
@ -9,11 +9,5 @@
|
|||
label: "{{ ppm_app.user }}"
|
||||
when: ppm_app.on_server == inventory_hostname
|
||||
|
||||
- name: Configure firewall options
|
||||
ansible.builtin.template:
|
||||
dest: /etc/firewall.d/ppmfirewall
|
||||
group: root
|
||||
owner: root
|
||||
mode: "0755"
|
||||
src: ppmfirewall.j2
|
||||
notify: Restart firewall
|
||||
- name: Arrange firewall
|
||||
ansible.builtin.import_tasks: firewall.yml
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@
|
|||
- python3-jsonschema
|
||||
# Git is required for checking out the app definitions
|
||||
- git
|
||||
# Yeah we should use nftables, patches welcome. For now, we install iptables
|
||||
- iptables
|
||||
|
||||
- name: Create state directory
|
||||
ansible.builtin.file:
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# PPM Firewal, written by ansible
|
||||
|
||||
{% for ppm_app in ppm_apps %}
|
||||
# Firewall for {{ ppm_app.user }}
|
||||
{% for redirect in ppm_app.firewall_redirect | default([]) %}
|
||||
# Redirect {{ redirect.from }} to {{ redirect.to }} ({{ redirect.proto | default('tcp') }})
|
||||
iptables -A INPUT -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.from }} -j ACCEPT
|
||||
ip6tables -A INPUT -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.from }} -j ACCEPT
|
||||
iptables -t nat -A PREROUTING -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.to }} -j REDIRECT --to-ports {{ redirect.from }}
|
||||
ip6tables -t nat -A PREROUTING -p {{ redirect.proto | default('tcp') }} --dport {{ redirect.to }} -j REDIRECT --to-ports {{ redirect.from }}
|
||||
{% endfor %}
|
||||
{% for openport in ppm_app.firewall_openport | default([]) %}
|
||||
# Open port {{ openport.port }} ({{ openport.proto | default('tcp') }})
|
||||
iptables -A INPUT -p {{ openport.proto | default('tcp') }} --dport {{ openport.port }} -j ACCEPT
|
||||
ip6tables -A INPUT -p {{ openport.proto | default('tcp') }} --dport {{ openport.port }} -j ACCEPT
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue