254 lines
5.2 KiB
YAML
254 lines
5.2 KiB
YAML
---
|
|
- name: Add the nf_conntrack module
|
|
become: true
|
|
community.general.modprobe:
|
|
name: nf_conntrack
|
|
state: present
|
|
tags:
|
|
- conntrack
|
|
- sysctl
|
|
|
|
- name: Stat nf_conntrack_tcp_be_liberal
|
|
become: true
|
|
ansible.builtin.stat:
|
|
path: /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal
|
|
register: conntrackliberal
|
|
tags:
|
|
- conntrack
|
|
- sysctl
|
|
|
|
# https://github.com/ansible/ansible/issues/45446
|
|
- name: Enable nf_conntrack_tcp_be_liberal to keep connections alive
|
|
become: true
|
|
ansible.posix.sysctl:
|
|
name: net.netfilter.nf_conntrack_tcp_be_liberal
|
|
value: "1"
|
|
state: present
|
|
sysctl_set: true
|
|
sysctl_file: "{{ sysctl_conf_dir }}/zz-hardening.conf"
|
|
reload: true
|
|
when: conntrackliberal.stat.exists
|
|
tags:
|
|
- conntrack
|
|
- sysctl
|
|
|
|
- name: Debian family UFW installation
|
|
become: true
|
|
ansible.builtin.apt:
|
|
name: "ufw"
|
|
state: present
|
|
install_recommends: false
|
|
when: ansible_os_family == "Debian"
|
|
tags:
|
|
- ufw
|
|
- CCE-82998-6
|
|
- M1037
|
|
- CIS-UBUNTU2004-3.5.1.1
|
|
- CIS-UBUNTU2004-3.5.1.3
|
|
|
|
- name: RedHat family UFW installation
|
|
become: true
|
|
ansible.builtin.dnf:
|
|
name: "ufw"
|
|
state: present
|
|
when: ansible_os_family == "RedHat"
|
|
tags:
|
|
- ufw
|
|
- CCE-82998-6
|
|
- M1037
|
|
|
|
- name: Set UFW IPT_SYSCTL
|
|
become: true
|
|
ansible.builtin.lineinfile:
|
|
regexp: "^IPT_SYSCTL="
|
|
line: "IPT_SYSCTL={{ sysctl_conf_dir }}/zz-hardening.conf"
|
|
dest: /etc/default/ufw
|
|
mode: "0640"
|
|
state: present
|
|
create: false
|
|
backrefs: true
|
|
tags:
|
|
- ufw
|
|
- M1037
|
|
|
|
- name: Set UFW DEFAULT_FORWARD_POLICY
|
|
become: true
|
|
ansible.builtin.lineinfile:
|
|
regexp: "^DEFAULT_FORWARD_POLICY="
|
|
line: 'DEFAULT_FORWARD_POLICY="{{ ufw_default_forward_policy }}"'
|
|
dest: /etc/default/ufw
|
|
mode: "0640"
|
|
state: present
|
|
create: false
|
|
backrefs: true
|
|
tags:
|
|
- ufw
|
|
- M1037
|
|
|
|
- name: Enable UFW and set default deny incoming
|
|
become: true
|
|
community.general.ufw:
|
|
state: enabled
|
|
direction: incoming
|
|
policy: deny
|
|
log: true
|
|
comment: ansible managed
|
|
retries: 5
|
|
delay: 10
|
|
tags:
|
|
- ufw
|
|
- CIS-UBUNTU2004-3.5.1.7
|
|
- D3-ITF
|
|
- M1037
|
|
|
|
- name: Enable UFW and set default deny outgoing
|
|
become: true
|
|
community.general.ufw:
|
|
state: enabled
|
|
direction: outgoing
|
|
policy: deny
|
|
log: true
|
|
logging: low
|
|
comment: ansible managed
|
|
retries: 5
|
|
delay: 10
|
|
tags:
|
|
- ufw
|
|
- CIS-UBUNTU2004-3.5.1.7
|
|
- M1037
|
|
|
|
- name: Stat UFW rules
|
|
become: true
|
|
ansible.builtin.shell: |
|
|
set -o pipefail
|
|
ufw show added | grep '^ufw' | grep -v "'ansible\smanaged'" | sed 's/ufw //g'
|
|
args:
|
|
executable: /bin/bash
|
|
failed_when: ufw_not_managed.rc > 1
|
|
changed_when: false
|
|
register: ufw_not_managed
|
|
tags:
|
|
- ufw
|
|
- M1037
|
|
|
|
- name: Allow sshd port from administrator networks
|
|
become: true
|
|
community.general.ufw:
|
|
rule: limit
|
|
src: "{{ item }}"
|
|
port: "{{ sshd_port | int }}"
|
|
proto: tcp
|
|
comment: ansible managed
|
|
with_items:
|
|
- "{{ ssh_allowed_networks }}"
|
|
retries: 5
|
|
delay: 10
|
|
tags:
|
|
- ufw
|
|
- M1037
|
|
|
|
- name: Allow incoming specific ports
|
|
become: true
|
|
community.general.ufw:
|
|
rule: "{{ item.rule }}"
|
|
src: "{{ item.from | d('any') }}"
|
|
port: "{{ item.port | int }}"
|
|
proto: "{{ item.proto }}"
|
|
comment: ansible managed
|
|
with_items:
|
|
- "{{ fw_allowed_ports }}"
|
|
retries: 5
|
|
delay: 10
|
|
tags:
|
|
- ufw
|
|
- M1037
|
|
|
|
- name: Allow outgoing specified ports
|
|
become: true
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "{{ item | int }}"
|
|
direction: out
|
|
comment: ansible managed
|
|
with_items:
|
|
- "{{ ufw_outgoing_traffic }}"
|
|
retries: 5
|
|
delay: 10
|
|
tags:
|
|
- ufw
|
|
- CIS-UBUNTU2004-3.5.1.5
|
|
- D3-OTF
|
|
- M1037
|
|
|
|
- name: Deny loopback network traffic
|
|
become: true
|
|
community.general.ufw:
|
|
rule: deny
|
|
src: "{{ item }}"
|
|
comment: ansible managed
|
|
loop:
|
|
- 127.0.0.0/8
|
|
tags:
|
|
- ufw
|
|
- CIS-UBUNTU2004-3.5.1.4
|
|
- M1037
|
|
retries: 5
|
|
delay: 10
|
|
when: fw_loopback_traffic_deny
|
|
|
|
- name: Allow loopback traffic in
|
|
become: true
|
|
community.general.ufw:
|
|
rule: allow
|
|
interface: lo
|
|
direction: in
|
|
comment: ansible managed
|
|
retries: 5
|
|
delay: 10
|
|
tags:
|
|
- ufw
|
|
- CIS-UBUNTU2004-3.5.1.4
|
|
- M1037
|
|
|
|
- name: Allow loopback traffic out
|
|
become: true
|
|
community.general.ufw:
|
|
rule: allow
|
|
interface: lo
|
|
direction: out
|
|
comment: ansible managed
|
|
retries: 5
|
|
delay: 10
|
|
tags:
|
|
- ufw
|
|
- CIS-UBUNTU2004-3.5.1.4
|
|
- M1037
|
|
|
|
- name: Delete unmanaged UFW rules
|
|
become: true
|
|
ansible.builtin.command: ufw delete {{ item }} # noqa no-changed-when
|
|
when: ufw_not_managed.stdout_lines | length > 0 and not ansible_os_family == "RedHat" and ufw_delete_unmanaged
|
|
with_items:
|
|
- "{{ ufw_not_managed.stdout_lines }}"
|
|
tags:
|
|
- ufw
|
|
- D3-OTF
|
|
- M1037
|
|
|
|
- name: Configure conntrack sysctl
|
|
become: true
|
|
environment:
|
|
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
ansible.posix.sysctl:
|
|
name: "{{ item.key }}"
|
|
value: "{{ item.value | int }}"
|
|
state: present
|
|
sysctl_set: true
|
|
sysctl_file: "{{ sysctl_conf_dir }}/zz-hardening.conf"
|
|
with_dict: "{{ conntrack_sysctl_settings }}"
|
|
notify:
|
|
- Restart sysctl
|
|
tags:
|
|
- conntrack
|
|
- sysctl
|