[INFO] Créer le dépôt #1
69
README.md
69
README.md
@ -1,3 +1,68 @@
|
|||||||
# role_modele
|
# role_fail2ban
|
||||||
|
|
||||||
Modèle
|
Ce rôle permet d'installation, configurer et supprimer la configuration de fail2ban.
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
### fail2ban_destemail
|
||||||
|
|
||||||
|
Adresse IP où seront envoyé les alertes.
|
||||||
|
|
||||||
|
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
|
||||||
|
|
||||||
|
### fail2ban_ignoreip
|
||||||
|
|
||||||
|
Liste d'adresse IP qui seront ignorées et donc jamais bannis.
|
||||||
|
|
||||||
|
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
|
||||||
|
|
||||||
|
### fail2ban_ssh_port
|
||||||
|
|
||||||
|
Port d'écoute de SSH.
|
||||||
|
|
||||||
|
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
|
||||||
|
|
||||||
|
### fail2ban_templates_*
|
||||||
|
|
||||||
|
Liste de templates à déployer.
|
||||||
|
|
||||||
|
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
|
||||||
|
|
||||||
|
## Exemple d'utilisation
|
||||||
|
|
||||||
|
### inventory.yml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
|
||||||
|
all:
|
||||||
|
hosts:
|
||||||
|
host1.ykn.local:
|
||||||
|
host2.ykn.local:
|
||||||
|
children:
|
||||||
|
dnsservers:
|
||||||
|
hosts:
|
||||||
|
dnsmasq1.ykn.local:
|
||||||
|
dnsmasq2.ykn.local:
|
||||||
|
```
|
||||||
|
|
||||||
|
### group_vars/all.yml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
|
||||||
|
fail2ban_destemail: hostmaster@ykn.local
|
||||||
|
fail2ban_sender: "{{ inventory_hostname }} <fail2ban@ykn.local>"
|
||||||
|
fail2ban_ignoreip: []
|
||||||
|
fail2ban_ssh_port: 22
|
||||||
|
```
|
||||||
|
|
||||||
|
### playbook.yml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
|
||||||
|
- hosts: 'all'
|
||||||
|
roles:
|
||||||
|
- name: fail2ban
|
||||||
|
```
|
||||||
|
16
defaults/main.yml
Normal file
16
defaults/main.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
# defaults file for fail2ban
|
||||||
|
|
||||||
|
fail2ban_destemail: ""
|
||||||
|
fail2ban_sender: ""
|
||||||
|
fail2ban_ignoreip: []
|
||||||
|
fail2ban_ssh_port: 22
|
||||||
|
|
||||||
|
fail2ban_templates: []
|
||||||
|
#Exemple:
|
||||||
|
# - src: role_fail2ban/nginx_jail.conf.j2
|
||||||
|
# dest: /etc/fail2ban/jail.d/nginx.conf
|
||||||
|
# - src: role_fail2ban/seafile_jail.conf.j2
|
||||||
|
# dest: /etc/fail2ban/jail.d/seafile.conf
|
||||||
|
# - src: role_fail2ban/seafile_filter.conf.j2
|
||||||
|
# dest: /etc/fail2ban/filter.d/seafile.conf
|
8
handlers/main.yml
Normal file
8
handlers/main.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
# handlers file for fail2ban
|
||||||
|
|
||||||
|
- name: Redémarrer fail2ban.service
|
||||||
|
become: true
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
state: restarted
|
||||||
|
name: fail2ban.service
|
@ -1,7 +1,7 @@
|
|||||||
galaxy_info:
|
galaxy_info:
|
||||||
namespace: ykn
|
namespace: ykn
|
||||||
author: pulsar89.5
|
author: pulsar89.5
|
||||||
description: Rôle modèle
|
description: Rôle de déploiement de fail2ban
|
||||||
|
|
||||||
license: GPL-3.0-or-later
|
license: GPL-3.0-or-later
|
||||||
|
|
||||||
@ -12,4 +12,5 @@ galaxy_info:
|
|||||||
versions:
|
versions:
|
||||||
- all
|
- all
|
||||||
|
|
||||||
dependencies: []
|
dependencies:
|
||||||
|
- role: nftables
|
||||||
|
51
tasks/configuration.yml
Normal file
51
tasks/configuration.yml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
# tasks file for fail2ban
|
||||||
|
|
||||||
|
- name: Supprimer la configuration de Debian
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: absent
|
||||||
|
path: /etc/fail2ban/jail.d/defaults-debian.conf
|
||||||
|
become: true
|
||||||
|
notify: Redémarrer fail2ban.service
|
||||||
|
|
||||||
|
- name: Déployer la configuration contre la récidive
|
||||||
|
ansible.builtin.template:
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: u=rw,g=,o=
|
||||||
|
src: recidive.conf.j2
|
||||||
|
dest: /etc/fail2ban/fail2ban.d/recidive.conf
|
||||||
|
become: true
|
||||||
|
notify: Redémarrer fail2ban.service
|
||||||
|
|
||||||
|
- name: Déployer la configuration de base
|
||||||
|
ansible.builtin.template:
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: u=rw,g=,o=
|
||||||
|
src: 01-base.conf.j2
|
||||||
|
dest: /etc/fail2ban/jail.d/01-base.conf
|
||||||
|
become: true
|
||||||
|
notify: Redémarrer fail2ban.service
|
||||||
|
|
||||||
|
- name: Construire la liste des templates à déployer
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
fail2ban_templates: "{{ fail2ban_templates + specific }}"
|
||||||
|
when: specific | length > 0
|
||||||
|
loop: "{{ lookup('ansible.builtin.varnames', '^fail2ban_templates_.+', wantlist=True) }}"
|
||||||
|
vars:
|
||||||
|
specific: "{{ lookup('ansible.builtin.vars', item, default='') }}"
|
||||||
|
|
||||||
|
- name: Déployer les fichiers de configuration
|
||||||
|
ansible.builtin.template:
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: u=rw,g=,o=
|
||||||
|
src: "{{ item.src }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
when: fail2ban_templates | length > 0
|
||||||
|
loop: "{{ fail2ban_templates }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.dest }}"
|
||||||
|
become: true
|
||||||
|
notify: Redémarrer fail2ban.service
|
7
tasks/installation.yml
Normal file
7
tasks/installation.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
# tasks file for fail2ban
|
||||||
|
|
||||||
|
- name: Installer le paquet
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: fail2ban
|
||||||
|
become: true
|
10
tasks/main.yml
Normal file
10
tasks/main.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
# tasks file for dnsmasq
|
||||||
|
|
||||||
|
- name: Importer les tâches d'installation
|
||||||
|
tags: installation
|
||||||
|
ansible.builtin.import_tasks: installation.yml
|
||||||
|
|
||||||
|
- name: Importer les tâches de configuration
|
||||||
|
tags: configuration
|
||||||
|
ansible.builtin.import_tasks: configuration.yml
|
25
templates/01-base.conf.j2
Normal file
25
templates/01-base.conf.j2
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
# nftables
|
||||||
|
banaction = nftables-multiport
|
||||||
|
banaction_allports = nftables-allports
|
||||||
|
|
||||||
|
# rules
|
||||||
|
findtime = 3600
|
||||||
|
bantime = 86400
|
||||||
|
maxretry = 3
|
||||||
|
|
||||||
|
# notification
|
||||||
|
destemail = {{ fail2ban_destemail }}
|
||||||
|
sender = {{ fail2ban_sender }}
|
||||||
|
action = %(action_mwl)s
|
||||||
|
|
||||||
|
ignoreip = 127.0.0.1/8, ::1/128, {{ fail2ban_ignoreip | join(', ') }}
|
||||||
|
|
||||||
|
[sshd]
|
||||||
|
enabled = true
|
||||||
|
port = {{ fail2ban_ssh_port }}
|
||||||
|
|
||||||
|
[recidive]
|
||||||
|
enabled = true
|
5
templates/recidive.conf.j2
Normal file
5
templates/recidive.conf.j2
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
[Definition]
|
||||||
|
loglevel = ERROR
|
||||||
|
dbpurgeage = 8d
|
Loading…
Reference in New Issue
Block a user