ansibleguy.linux_ufw
DÉPRÉCIÉ
Utiliser UFW comme intermédiaire dans l'automatisation n'a pas de véritable sens.
Cela crée une complexité inutile pour des changements de règle simples !
À mes yeux, ce n'est pas un outil conçu pour être automatisé.
Je recommanderais réellement d'utiliser NFTables : ansibleguy.infra_nftables
Rôle Ansible - Pare-feu Simplifié (UFW)
Rôle Ansible pour déployer/configurer le pare-feu logiciel 'UFW' sur un serveur Linux basé sur Debian.
Testé :
- Debian 11
Installation
# dernière version
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw
# depuis galaxy
ansible-galaxy install ansibleguy.linux_ufw
# ou vers un chemin de rôle personnalisé
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles
# installer les dépendances
ansible-galaxy install -r requirements.yml
Fonctionnalités
Ce rôle Ansible fera :
Installation de package
- UFW
Configuration
Règles en utilisant l'un des deux modes
- La méthode état (par défaut)
- garde les règles existantes et ajoute/supprime des règles en utilisant un état de règle
- La méthode stateless
- remet à zéro l'état et les règles de ufw à chaque fois
- après cela, les nouvelles règles sont appliquées
- La méthode état (par défaut)
Vérification qu'une règle SSH est en place
Informations
Remarque : La plupart des fonctionnalités du rôle peuvent être activées ou désactivées.
Pour toutes les options disponibles - voir la configuration par défaut dans le fichier de défaut principal !
Remarque : ce rôle ne prend actuellement en charge que les systèmes basés sur Debian.
Avertissement : Toutes les configurations/variables que vous fournissez ne seront pas vérifiées pour leur validité. Une mauvaise configuration pourrait casser le rôle !
Utilisation
Vous voulez une interface simple Ansible ? Découvrez ma WebUI Ansible
Configuration
Définissez simplement le dictionnaire 'ufw_rules' selon vos besoins :
ufw_rules:
ruleShortName:
rule: 'allow' # par défaut si vide
port: 80
proto: 'tcp'
log: 'no' # par défaut si vide
from_ip: 'any' # par défaut si vide
to_ip: 'any' # par défaut si vide
direction: 'in' # par défaut si vide
present: true # par défaut si vide => utilisé pour vérifier l'état de la règle (alias = état : présent)
position: 2 # vous pouvez définir la position de la règle dans l'ensemble de règles (alias = insérer)
comment: 'Vous pouvez remplacer le commentaire par défaut'
ou de manière compacte :
ufw_rules: {
ruleShortName: {rule: 'allow', port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: 'Vous pouvez remplacer le commentaire par défaut'}
}
Exécution
Exécutez le playbook :
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml
La tâche ufw elle-même est 'community.general.ufw'
Exemple
État avant :
guy@ansible:~$ sudo ufw status numbered
Statut : actif
À Action De
-- ------ ----
[ 1] 7424/tcp ALLOW IN Partout # Géré par Ansible - serviceConfus
[ 2] 7429/tcp ALLOW IN Partout (log) # Géré par Ansible - rienD'Important
Configuration
ufw_rules:
# restrictions sur le trafic entrant
SecShöl:
port: 22
proto: 'tcp'
log: true
rule: 'limit'
RandomWebServer:
port: 8482
proto: 'tcp'
SecureLink:
port: 54038:54085
proto: 'udp'
log: true
from_ip: '192.168.194.0/28'
ipsecESP:
proto: 'esp'
from_ip: '10.10.10.1'
to_ip: '10.10.20.254'
ipsecIKE:
port: 500,4500
proto: 'udp'
from_ip: '10.10.10.1'
to_ip: '10.10.20.254'
# restrictions sur le trafic sortant
denyNtpOutgoing:
port: 123
proto: 'udp'
rule: 'deny'
direction: 'out'
# supprimer ces règles :
confusedService:
port: 7424
proto: 'tcp'
state: 'absent'
nothingImportant:
port: 7429
proto: 'tcp'
log: true
present: false
Résultat :
guy@ansible:~$ sudo ufw status numbered
Statut : actif
À Action De
-- ------ ----
[ 1] 22/tcp LIMIT IN Partout (log) # Géré par Ansible - SecShöl
[ 2] 8482/tcp ALLOW IN Partout # Géré par Ansible - RandomWebServer
[ 3] 54038:54085/udp ALLOW IN 192.168.194.0/28 (log) # Géré par Ansible - SecureLink
[ 4] 10.10.20.254/esp ALLOW IN 10.10.10.1/esp # Géré par Ansible - ipsecESP
[ 5] 10.10.20.254 500,4500/udp ALLOW IN 10.10.10.1 # Géré par Ansible - ipsecIKE
[ 6] 123/udp DENY OUT Partout (out) # Géré par Ansible - denyNtpOutgoing
Role to install and configure ufw firewall-rules on a linux machine
ansible-galaxy install ansibleguy.linux_ufw