570 lines
16 KiB
YAML
570 lines
16 KiB
YAML
---
|
|
|
|
# ===
|
|
# Install/Uodate git firewall repository
|
|
# ===
|
|
|
|
- meta: end_play
|
|
when: git_firewall_repository is not defined or git_firewall_repository|length < 1
|
|
|
|
|
|
- name: Install/update firewall repository
|
|
git:
|
|
repo: '{{ git_firewall_repository.repo }}'
|
|
dest: '{{ git_firewall_repository.dest }}'
|
|
when: git_firewall_repository is defined and git_firewall_repository|length > 0
|
|
|
|
|
|
# ===
|
|
# Some Checks
|
|
# ===
|
|
|
|
- name: Check if file '/etc/ipt-firewall/main_ipv6.conf' exists
|
|
stat:
|
|
path: /etc/ipt-firewall/main_ipv6.conf
|
|
register: main_ipv6_exists
|
|
|
|
- name: Check if file '/etc/ipt-firewall/main_ipv4.conf' exists
|
|
stat:
|
|
path: /etc/ipt-firewall/main_ipv4.conf
|
|
register: main_ipv4_exists
|
|
|
|
- name: Check if file '/etc/ipt-firewall/interfaces_ipv6.conf' exists
|
|
stat:
|
|
path: /etc/ipt-firewall/interfaces_ipv6.conf
|
|
register: interfaces_ipv6_exists
|
|
|
|
- name: Check if file '/etc/ipt-firewall/interfaces_ipv4.conf' exists
|
|
stat:
|
|
path: /etc/ipt-firewall/interfaces_ipv4.conf
|
|
register: interfaces_ipv4_exists
|
|
|
|
- name: Check if file '/etc/munin/munin-node.conf' exists
|
|
stat:
|
|
path: /etc/munin/munin-node.conf
|
|
register: munin_node_exists
|
|
|
|
|
|
# ===
|
|
# Adjust/Correct some values..
|
|
# ===
|
|
|
|
- name: addjust line 'munin_remote_ip' (IPv4)
|
|
lineinfile:
|
|
path: /etc/ipt-firewall/main_ipv4.conf
|
|
regexp: '^munin_remote_ip='
|
|
line: 'munin_remote_ip="{{ munin_remote_ipv4 }}"'
|
|
when:
|
|
- main_ipv4_exists.stat.exists
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
|
|
- name: addjust line 'munin_remote_ip' (IPv6)
|
|
lineinfile:
|
|
path: /etc/ipt-firewall/main_ipv6.conf
|
|
regexp: '^munin_remote_ip='
|
|
line: 'munin_remote_ip="{{ munin_remote_ipv6 }}"'
|
|
when:
|
|
- main_ipv6_exists.stat.exists
|
|
notify:
|
|
- Restart IPv6 Firewall
|
|
|
|
- name: addjust line 'vpn_ifs' (IPv4)
|
|
lineinfile:
|
|
path: /etc/ipt-firewall/interfaces_ipv4.conf
|
|
regexp: '^vpn_ifs='
|
|
line: 'vpn_ifs="tun+"'
|
|
when:
|
|
- interfaces_ipv4_exists.stat.exists
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
|
|
- name: addjust line 'vpn_ifs' (IPv6)
|
|
lineinfile:
|
|
path: /etc/ipt-firewall/interfaces_ipv6.conf
|
|
regexp: '^vpn_ifs='
|
|
line: 'vpn_ifs="tun+"'
|
|
when:
|
|
- interfaces_ipv6_exists.stat.exists
|
|
notify:
|
|
- Restart IPv6 Firewall
|
|
|
|
|
|
# ===
|
|
# Add some Code Block.
|
|
# ===
|
|
|
|
# ---
|
|
# Wireguard Service
|
|
# ---
|
|
|
|
- name: Check if String 'wg_ifs=..' is present in interfaces_ipv4.conf
|
|
shell: grep -q -E "^wg_ifs=" /etc/ipt-firewall/interfaces_ipv4.conf
|
|
register: wg_ifs_interfaces_ipv4_present
|
|
when: interfaces_ipv4_exists.stat.exists
|
|
failed_when: "wg_ifs_interfaces_ipv4_present.rc > 1"
|
|
changed_when: "wg_ifs_interfaces_ipv4_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/interfaces_ipv4.conf' (wg_ifs)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/interfaces_ipv4.conf
|
|
insertafter: '^#?\s*vpn_ifs'
|
|
block: |
|
|
|
|
# - Wireguard Interfaces
|
|
# - (comma separated list 'wg+' is also possible)
|
|
wg_ifs="wg+"
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (wg_ifs)"
|
|
when:
|
|
- interfaces_ipv4_exists.stat.exists
|
|
- wg_ifs_interfaces_ipv4_present is changed
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
|
|
|
|
- name: Check if String 'wg_ifs=..' is present in interfaces_ipv6.conf
|
|
shell: grep -q -E "^wg_ifs=" /etc/ipt-firewall/interfaces_ipv6.conf
|
|
register: wg_ifs_interfaces_ipv6_present
|
|
when: interfaces_ipv6_exists.stat.exists
|
|
failed_when: "wg_ifs_interfaces_ipv6_present.rc > 1"
|
|
changed_when: "wg_ifs_interfaces_ipv6_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/interfaces_ipv6.conf' (wg_ifs)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/interfaces_ipv6.conf
|
|
insertafter: '^#?\s*vpn_ifs'
|
|
block: |
|
|
|
|
# - Wireguard Interfaces
|
|
# - (comma separated list 'wg+' is also possible)
|
|
wg_ifs="wg+"
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (wg_ifs)"
|
|
when:
|
|
- interfaces_ipv6_exists.stat.exists
|
|
- wg_ifs_interfaces_ipv6_present is changed
|
|
notify:
|
|
- Restart IPv6 Firewall
|
|
|
|
|
|
- name: Check if String 'nat_devices=..' is present in interfaces_ipv4.conf
|
|
shell: grep -q -E "^nat_devices=" /etc/ipt-firewall/interfaces_ipv4.conf
|
|
register: nat_devices_interfaces_ipv4_present
|
|
when: interfaces_ipv4_exists.stat.exists
|
|
failed_when: "nat_devices_interfaces_ipv4_present.rc > 1"
|
|
changed_when: "nat_devices_interfaces_ipv4_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/interfaces_ipv4.conf' (nat_devices)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/interfaces_ipv4.conf
|
|
insertafter: '^#?\s*local_2_ip'
|
|
block: |
|
|
|
|
# - Devices given in list "nat_devices" will be natted
|
|
# -
|
|
# - Blank separated list
|
|
# -
|
|
nat_devices=""
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (nat_devices)"
|
|
when:
|
|
- interfaces_ipv4_exists.stat.exists
|
|
- nat_devices_interfaces_ipv4_present is changed
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
|
|
|
|
- name: Check if String 'nat_devices=..' is present in interfaces_ipv6.conf
|
|
shell: grep -q -E "^nat_devices=" /etc/ipt-firewall/interfaces_ipv6.conf
|
|
register: nat_devices_interfaces_ipv6_present
|
|
when: interfaces_ipv6_exists.stat.exists
|
|
failed_when: "nat_devices_interfaces_ipv6_present.rc > 1"
|
|
changed_when: "nat_devices_interfaces_ipv6_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/interfaces_ipv6.conf' (nat_devices)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/interfaces_ipv6.conf
|
|
insertafter: '^#?\s*local_2_ip'
|
|
block: |
|
|
|
|
# - Devices given in list "nat_devices" will be natted
|
|
# -
|
|
# - Blank separated list
|
|
# -
|
|
nat_devices=""
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (nat_devices)"
|
|
when:
|
|
- interfaces_ipv6_exists.stat.exists
|
|
- nat_devices_interfaces_ipv6_present is changed
|
|
notify:
|
|
- Restart IPv6 Firewall
|
|
|
|
|
|
- name: Check if String 'wireguard_server_ips=..' is present
|
|
shell: grep -q -E "^wireguard_server_ips=" /etc/ipt-firewall/main_ipv4.conf
|
|
register: wireguard_service_ipv4_present
|
|
when: main_ipv4_exists.stat.exists
|
|
failed_when: "wireguard_service_ipv4_present.rc > 1"
|
|
changed_when: "wireguard_service_ipv4_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/main_ipv4.conf' (wireguard_service)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/main_ipv4.conf
|
|
insertafter: '^#?\s*vpn_ports'
|
|
block: |
|
|
|
|
# - WireGuard Service
|
|
# -
|
|
wireguard_server_ips=""
|
|
forward_wireguard_server_ips=""
|
|
|
|
# - WireGuard Ports used by local Service
|
|
# -
|
|
# - Blank separated list
|
|
# -
|
|
wireguard_server_ports="$standard_wireguard_port"
|
|
|
|
# - Remote WireGuard Ports
|
|
# -
|
|
wireguard_out_ports="$standard_wireguard_port"
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (wireguard_service)"
|
|
when:
|
|
- main_ipv4_exists.stat.exists
|
|
- wireguard_service_ipv4_present is changed
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
|
|
|
|
- name: Check if String 'wireguard_server_ips=..' is present
|
|
shell: grep -q -E "^wireguard_server_ips=" /etc/ipt-firewall/main_ipv6.conf
|
|
register: wireguard_service_ipv6_present
|
|
when: main_ipv6_exists.stat.exists
|
|
failed_when: "wireguard_service_ipv6_present.rc > 1"
|
|
changed_when: "wireguard_service_ipv6_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/main_ipv6.conf' (wireguard_service)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/main_ipv6.conf
|
|
insertafter: '^#?\s*vpn_ports'
|
|
block: |
|
|
|
|
# - WireGuard Service
|
|
# -
|
|
wireguard_server_ips=""
|
|
forward_wireguard_server_ips=""
|
|
|
|
# - WireGuard Ports used by local Service
|
|
# -
|
|
# - Blank separated list
|
|
# -
|
|
wireguard_server_ports="$standard_wireguard_port"
|
|
|
|
# - Remote WireGuard Ports
|
|
# -
|
|
wireguard_out_ports="$standard_wireguard_port"
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (wireguard_service)"
|
|
when:
|
|
- main_ipv6_exists.stat.exists
|
|
- wireguard_service_ipv6_present is changed
|
|
notify:
|
|
- Restart IPv6 Firewall
|
|
|
|
|
|
# ---
|
|
# Mattermost (MM) Service
|
|
# ---
|
|
|
|
- name: Check if String 'mm_server_ips=..' is present
|
|
shell: grep -q -E "^mm_server_ips=" /etc/ipt-firewall/main_ipv4.conf
|
|
register: mattermost_service_ipv4_present
|
|
when: main_ipv4_exists.stat.exists
|
|
failed_when: "mattermost_service_ipv4_present.rc > 1"
|
|
changed_when: "mattermost_service_ipv4_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/main_ipv4.conf' (mattermost_service)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/main_ipv4.conf
|
|
insertafter: '^#?\s*http_ports'
|
|
block: |
|
|
|
|
# - Mattermost (MM) Service
|
|
# -
|
|
mm_server_ips=""
|
|
forward_mm_server_ips=""
|
|
|
|
# - UDP Ports IN and OUT used by MM Servive
|
|
# -
|
|
mm_udp_ports_in="$stansard_mattermost_udp_ports_in"
|
|
mm_udp_ports_out="$stansard_mattermost_udp_ports_out"
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (mattermost_service)"
|
|
when:
|
|
- main_ipv4_exists.stat.exists
|
|
- mattermost_service_ipv4_present is changed
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
|
|
|
|
- name: Check if String 'mm_server_ips=..' is present
|
|
shell: grep -q -E "^mm_server_ips=" /etc/ipt-firewall/main_ipv6.conf
|
|
register: mattermost_service_ipv6_present
|
|
when: main_ipv6_exists.stat.exists
|
|
failed_when: "mattermost_service_ipv6_present.rc > 1"
|
|
changed_when: "mattermost_service_ipv6_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/main_ipv6.conf' (mattermost_service)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/main_ipv6.conf
|
|
insertafter: '^#?\s*http_ports'
|
|
block: |
|
|
|
|
# - Mattermost (MM) Service
|
|
# -
|
|
mm_server_ips=""
|
|
forward_mm_server_ips=""
|
|
|
|
# - UDP Ports IN and OUT used by MM Servive
|
|
# -
|
|
mm_udp_ports_in="$stansard_mattermost_udp_ports_in"
|
|
mm_udp_ports_out="$stansard_mattermost_udp_ports_out"
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (mattermost_service)"
|
|
when:
|
|
- main_ipv6_exists.stat.exists
|
|
- mattermost_service_ipv6_present is changed
|
|
notify:
|
|
- Restart IPv6 Firewall
|
|
|
|
|
|
|
|
# ---
|
|
# Protection against and Limit Connections settings
|
|
# ---
|
|
|
|
- name: Check if String 'protection_against_syn_flooding=..' is present
|
|
shell: grep -q -E "^protection_against_syn_flooding=" /etc/ipt-firewall/main_ipv4.conf
|
|
register: protect_settings_ipv4_present
|
|
when: main_ipv4_exists.stat.exists
|
|
failed_when: "protect_settings_ipv4_present.rc > 1"
|
|
changed_when: "protect_settings_ipv4_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/main_ipv4.conf' (protect_settings)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/main_ipv4.conf
|
|
insertafter: '^#?\s*create_iperf_rules'
|
|
block: |
|
|
|
|
# -------------
|
|
# - Protection against ...
|
|
# -------------
|
|
|
|
# - Protection against syn-flooding
|
|
# -
|
|
protection_against_syn_flooding=true
|
|
|
|
# - Protection against port scanning
|
|
# -
|
|
protection_against_port_scanning=true
|
|
|
|
# - Protection against SSH brute-force attacks
|
|
# -
|
|
protection_against_ssh_brute_force_attacks=true
|
|
|
|
|
|
# -------------
|
|
# - Limit Connections
|
|
# -------------
|
|
|
|
# - Limit connections per source IP
|
|
# -
|
|
limit_connections_per_source_IP=true
|
|
|
|
# - Limit RST packets
|
|
# -
|
|
limit_rst_packets=true
|
|
|
|
# - Limit new TCP connections per second per source IP
|
|
# -
|
|
limit_new_tcp_connections_per_seconds_per_source_IP=true
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (protect_settings)"
|
|
when:
|
|
- main_ipv4_exists.stat.exists
|
|
- protect_settings_ipv4_present is changed
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
|
|
|
|
- name: Check if String 'protection_against_syn_flooding=..' is present
|
|
shell: grep -q -E "^protection_against_syn_flooding=" /etc/ipt-firewall/main_ipv6.conf
|
|
register: protect_settings_ipv6_present
|
|
when: main_ipv6_exists.stat.exists
|
|
failed_when: "protect_settings_ipv6_present.rc > 1"
|
|
changed_when: "protect_settings_ipv6_present.rc > 0"
|
|
|
|
- name: Adjust file '/etc/ipt-firewall/main_ipv6.conf' (protect_settings)
|
|
blockinfile:
|
|
path: /etc/ipt-firewall/main_ipv6.conf
|
|
insertafter: '^#?\s*create_iperf_rules'
|
|
block: |
|
|
|
|
# -------------
|
|
# - Protection against ...
|
|
# -------------
|
|
|
|
# - Protection against syn-flooding
|
|
# -
|
|
protection_against_syn_flooding=true
|
|
|
|
# - Protection against port scanning
|
|
# -
|
|
protection_against_port_scanning=true
|
|
|
|
# - Protection against SSH brute-force attacks
|
|
# -
|
|
protection_against_ssh_brute_force_attacks=true
|
|
|
|
|
|
# -------------
|
|
# - Limit Connections
|
|
# -------------
|
|
|
|
# - Limit connections per source IP
|
|
# -
|
|
limit_connections_per_source_IP=true
|
|
|
|
# - Limit RST packets
|
|
# -
|
|
limit_rst_packets=true
|
|
|
|
# - Limit new TCP connections per second per source IP
|
|
# -
|
|
limit_new_tcp_connections_per_seconds_per_source_IP=true
|
|
|
|
marker: "# Marker set by modify-ipt-server.yml (protect_settings)"
|
|
when:
|
|
- main_ipv6_exists.stat.exists
|
|
- protect_settings_ipv6_present is changed
|
|
notify:
|
|
- Restart IPv6 Firewall
|
|
|
|
|
|
# ===
|
|
# Remove Marker set by blockinfile
|
|
# ===
|
|
|
|
- name: Remove marker IPv4
|
|
replace :
|
|
path: /etc/ipt-firewall/main_ipv4.conf
|
|
regexp: "^# Marker set by modify-ipt-server.yml.*$"
|
|
replace: ""
|
|
register: marker_ipv4_removed
|
|
#failed_when: "marker_ipv4_removed.rc > 1"
|
|
#changed_when: "marker_ipv4_removed.rc < 1"
|
|
when:
|
|
- main_ipv4_exists.stat.exists
|
|
|
|
- name: Remove marker IPv6
|
|
replace :
|
|
path: /etc/ipt-firewall/main_ipv6.conf
|
|
regexp: "^# Marker set by modify-ipt-server.yml.*$"
|
|
replace: ""
|
|
register: marker_ipv6_removed
|
|
#failed_when: "marker_ipv6_removed.rc > 1"
|
|
#changed_when: "marker_ipv6_removed.rc < 1"
|
|
when:
|
|
- main_ipv6_exists.stat.exists
|
|
|
|
- name: Remove marker IPv4 from interfaces_ipv4.conf
|
|
replace :
|
|
path: /etc/ipt-firewall/interfaces_ipv4.conf
|
|
regexp: "^# Marker set by modify-ipt-server.yml.*$"
|
|
replace: ""
|
|
when:
|
|
- interfaces_ipv4_exists.stat.exists
|
|
|
|
- name: Remove marker IPv6 from interfaces_ipv6.conf
|
|
replace :
|
|
path: /etc/ipt-firewall/interfaces_ipv6.conf
|
|
regexp: "^# Marker set by modify-ipt-server.yml.*$"
|
|
replace: ""
|
|
when:
|
|
- interfaces_ipv6_exists.stat.exists
|
|
|
|
# ===
|
|
# Confiuration Files
|
|
# ===
|
|
|
|
- name: Check if configuration files are latest
|
|
shell: 'diff {{ git_firewall_repository.dest }}/conf/{{ item }} /etc/ipt-firewall/{{ item }} > /dev/null 2>&1'
|
|
changed_when: "diff_script_output.rc > 0"
|
|
# diff_output.rc
|
|
# 0 -> unchanged
|
|
# 1 -> changed
|
|
# 2 -> not present
|
|
failed_when: "diff_script_output.rc > 2"
|
|
when:
|
|
- git_firewall_repository is defined and git_firewall_repository|length > 0
|
|
loop:
|
|
- default_ports.conf
|
|
- include_functions.conf
|
|
- load_modules_ipv4.conf
|
|
- load_modules_ipv6.conf
|
|
- logging_ipv4.conf
|
|
- logging_ipv6.conf
|
|
- post_decalrations.conf
|
|
register: diff_script_output
|
|
|
|
- name: Ensure configuration files are latest
|
|
command: cp {{ git_firewall_repository.dest }}/conf/{{ item }} /etc/ipt-firewall/{{ item }}
|
|
loop:
|
|
- default_ports.conf
|
|
- include_functions.conf
|
|
- load_modules_ipv4.conf
|
|
- load_modules_ipv6.conf
|
|
- logging_ipv4.conf
|
|
- logging_ipv6.conf
|
|
- post_decalrations.conf
|
|
when:
|
|
- git_firewall_repository is defined and git_firewall_repository|length > 0
|
|
- diff_script_output.changed
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
- Restart IPv6 Firewall
|
|
|
|
# ===
|
|
# Firewall scripts
|
|
# ===
|
|
|
|
- name: Check if firewall scripts are latest
|
|
shell: 'diff {{ git_firewall_repository.dest }}/{{ item }} /usr/local/sbin/{{ item }} > /dev/null 2>&1'
|
|
changed_when: "diff_script_output.rc > 0"
|
|
# diff_output.rc
|
|
# 0 -> unchanged
|
|
# 1 -> changed
|
|
# 2 -> not present
|
|
failed_when: "diff_script_output.rc > 2"
|
|
when:
|
|
- git_firewall_repository is defined and git_firewall_repository|length > 0
|
|
loop:
|
|
- ipt-firewall-server
|
|
- ip6t-firewall-server
|
|
register: diff_script_output
|
|
|
|
- name: Ensure firewall scripts are latest
|
|
command: cp {{ git_firewall_repository.dest }}/{{ item }} /usr/local/sbin/{{ item }}
|
|
loop:
|
|
- ipt-firewall-server
|
|
- ip6t-firewall-server
|
|
when:
|
|
- git_firewall_repository is defined and git_firewall_repository|length > 0
|
|
- diff_script_output.changed
|
|
notify:
|
|
- Restart IPv4 Firewall
|
|
- Restart IPv6 Firewall
|
|
|