2015-08-23 11:06:25 +02:00
|
|
|
---
|
2021-07-28 13:18:41 +02:00
|
|
|
# Ubuntu 20.04 will use nftables directly, with no firewalld.
|
2015-08-23 11:06:25 +02:00
|
|
|
|
2018-04-26 15:58:35 +02:00
|
|
|
- block:
|
2022-09-12 16:18:33 +02:00
|
|
|
- name: Install Ubuntu firewall packages
|
|
|
|
ansible.builtin.package:
|
|
|
|
name:
|
2021-07-28 13:18:41 +02:00
|
|
|
- fail2ban
|
|
|
|
- libnet-ip-perl # for aggregate-cidr-addresses.pl
|
|
|
|
- nftables
|
|
|
|
- python3-systemd
|
2021-07-29 09:24:32 +02:00
|
|
|
- curl # for nftables update scripts
|
2022-09-12 16:18:33 +02:00
|
|
|
state: present
|
|
|
|
cache_valid_time: 3600
|
2018-04-26 15:58:35 +02:00
|
|
|
|
2020-04-25 12:54:50 +02:00
|
|
|
- name: Remove ufw
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.package:
|
|
|
|
name: ufw
|
|
|
|
state: absent
|
2020-04-25 12:54:50 +02:00
|
|
|
|
2021-07-28 13:18:41 +02:00
|
|
|
- name: Copy nftables.conf
|
|
|
|
when: ansible_distribution_version is version('20.04', '>=')
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.template:
|
|
|
|
src: nftables.conf.j2
|
|
|
|
dest: /etc/nftables.conf
|
|
|
|
owner: root
|
|
|
|
mode: 0644
|
2020-04-25 13:21:17 +02:00
|
|
|
notify:
|
2021-08-01 13:23:00 +02:00
|
|
|
- restart nftables
|
2021-09-28 09:45:51 +02:00
|
|
|
- restart fail2ban
|
2021-07-28 13:18:41 +02:00
|
|
|
|
|
|
|
- name: Create /etc/nftables extra config directory
|
|
|
|
when: ansible_distribution_version is version('20.04', '>=')
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.file:
|
|
|
|
path: /etc/nftables
|
|
|
|
state: directory
|
|
|
|
owner: root
|
|
|
|
mode: 0755
|
2021-07-28 13:18:41 +02:00
|
|
|
|
|
|
|
- name: Copy extra nftables configuration files
|
|
|
|
when: ansible_distribution_version is version('20.04', '>=')
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.copy:
|
|
|
|
src: "{{ item.src }}"
|
|
|
|
dest: "/etc/nftables/{{ item.src }}"
|
|
|
|
owner: root
|
|
|
|
group: root
|
|
|
|
mode: 0644
|
|
|
|
force: "{{ item.force }}"
|
2021-07-28 13:18:41 +02:00
|
|
|
loop:
|
2021-09-08 08:58:13 +02:00
|
|
|
- { src: "spamhaus-ipv4.nft", force: "no" }
|
|
|
|
- { src: "spamhaus-ipv6.nft", force: "no" }
|
|
|
|
- { src: "abusech-ipv4.nft", force: "no" }
|
|
|
|
- { src: "abuseipdb-ipv4.nft", force: "yes" }
|
|
|
|
- { src: "abuseipdb-ipv6.nft", force: "yes" }
|
2021-07-28 13:18:41 +02:00
|
|
|
notify:
|
2021-08-01 13:23:00 +02:00
|
|
|
- restart nftables
|
2021-09-28 09:45:51 +02:00
|
|
|
- restart fail2ban
|
2020-04-25 13:21:17 +02:00
|
|
|
|
2021-07-29 09:16:00 +02:00
|
|
|
- name: Copy nftables update scripts
|
2021-07-28 13:18:41 +02:00
|
|
|
when: ansible_distribution_version is version('20.04', '>=')
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.copy:
|
|
|
|
src: "{{ item }}"
|
|
|
|
dest: "/usr/local/bin/{{ item }}"
|
|
|
|
mode: 0755
|
|
|
|
owner: root
|
|
|
|
group: root
|
2021-07-28 13:18:41 +02:00
|
|
|
loop:
|
|
|
|
- update-spamhaus-nftables.sh
|
|
|
|
- aggregate-cidr-addresses.pl
|
2021-07-29 09:16:00 +02:00
|
|
|
- update-abusech-nftables.sh
|
2021-07-28 13:18:41 +02:00
|
|
|
|
2021-07-29 09:16:00 +02:00
|
|
|
- name: Copy nftables systemd units
|
2021-07-28 13:18:41 +02:00
|
|
|
when: ansible_distribution_version is version('20.04', '>=')
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.copy:
|
|
|
|
src: "{{ item }}"
|
|
|
|
dest: "/etc/systemd/system/{{ item }}"
|
|
|
|
mode: 0644
|
|
|
|
owner: root
|
|
|
|
group: root
|
2021-07-28 13:18:41 +02:00
|
|
|
loop:
|
|
|
|
- update-spamhaus-nftables.service
|
|
|
|
- update-spamhaus-nftables.timer
|
2021-07-29 09:16:00 +02:00
|
|
|
- update-abusech-nftables.service
|
|
|
|
- update-abusech-nftables.timer
|
|
|
|
register: nftables_systemd_units
|
2021-07-21 08:34:51 +02:00
|
|
|
|
|
|
|
# need to reload to pick up service/timer/environment changes
|
|
|
|
- name: Reload systemd daemon
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.systemd:
|
|
|
|
daemon_reload: true
|
2022-09-10 22:26:55 +02:00
|
|
|
when: nftables_systemd_units is changed
|
2019-10-26 16:36:07 +02:00
|
|
|
|
2021-07-29 09:16:00 +02:00
|
|
|
- name: Start and enable nftables update timers
|
2021-07-28 13:18:41 +02:00
|
|
|
when: ansible_distribution_version is version('20.04', '>=')
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.systemd:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: started
|
|
|
|
enabled: true
|
2021-07-29 09:16:00 +02:00
|
|
|
loop:
|
|
|
|
- update-spamhaus-nftables.timer
|
|
|
|
- update-abusech-nftables.timer
|
2021-07-28 13:18:41 +02:00
|
|
|
|
2021-07-29 09:05:15 +02:00
|
|
|
- name: Start and enable nftables
|
|
|
|
when: ansible_distribution_version is version('20.04', '>=')
|
2022-09-12 16:18:33 +02:00
|
|
|
ansible.builtin.systemd:
|
|
|
|
name: nftables
|
|
|
|
state: started
|
|
|
|
enabled: true
|
2021-07-29 09:05:15 +02:00
|
|
|
|
2022-09-10 17:09:12 +02:00
|
|
|
- ansible.builtin.include_tasks: fail2ban.yml
|
2020-03-09 14:20:51 +01:00
|
|
|
when: ansible_distribution_version is version('16.04', '>=')
|
2018-04-25 17:58:31 +02:00
|
|
|
tags: firewall
|
2018-04-25 17:55:22 +02:00
|
|
|
|
|
|
|
# vim: set sw=2 ts=2:
|