ipr-cnrs.nftables
Nftables
Überblick
Eine Rolle zur Verwaltung von Nftables-Regeln und -Paketen.
Stark inspiriert von Mike Gleason's Firewall-Rolle. Vielen Dank! Ich hoffe, ich habe seine Philosophie nicht komplizierter gemacht... (Ich bin mir ziemlich sicher, dass ich es jetzt komplizierter gemacht habe :D) ^^
Rollenvariablen
- nft_enabled: Aktiviert oder deaktiviert die Unterstützung für Nftables [Standard:
true
]. - nft_pkg_state: Zustand des neuen
nftables
Paket(s) [Standard:present
]. - nft_old_pkg_list: Die Liste unnötiger Pakete, die entfernt werden sollen (wie Iptables,…) [Standard:
iptables
]. - nft_old_pkg_state: Zustand von alten Paket(s) [Standard:
absent
]. - nft_old_pkg_manage: Ob alte Paket(s) mit dieser Rolle verwaltet werden sollen [Standard:
true
]. - nft_conf_dir_path: Verzeichnis zur Speicherung der verschiedenen Nftables-Konfigurationsdateien [Standard:
/etc/nftables.d
]. - nft_main_conf_path: Hauptkonfigurationsdatei, die von der systemd-Einheit geladen wird [Standard:
/etc/nftables.conf
]. - nft_main_conf_content: Template zur Generierung der vorherigen Hauptkonfigurationsdatei [Standard:
etc/nftables.conf.j2
]. - nft_input_conf_path: Eingabekonfigurationsdatei, die in der Hauptkonfigurationsdatei enthalten ist [Standard:
{{ nft_conf_dir_path }}/filter-input.nft
]. - nft_input_conf_content: Template zur Generierung der vorherigen Eingabekonfigurationsdatei [Standard:
etc/nftables.d/filter-input.nft.j2
]. - nft_output_conf_path: Ausgabekonfigurationsdatei, die in der Hauptkonfigurationsdatei enthalten ist [Standard:
{{ nft_conf_dir_path }}/filter-output.nft
]. - nft_output_conf_content: Template zur Generierung der vorherigen Ausgabekonfigurationsdatei [Standard:
etc/nftables.d/filter-output.nft.j2
]. - nft_forward_conf_path: Weiterleitungs-Konfigurationsdatei, die in der Hauptkonfigurationsdatei enthalten ist [Standard:
{{ nft_conf_dir_path }}/filter-forward.nft
]. - nft_forward_conf_content: Template zur Generierung der vorherigen Weiterleitungs-Konfigurationsdatei [Standard:
etc/nftables.d/filter-forward.nft.j2
]. - nft_define_conf_path: Variablen-Definitionsdatei, die in der Hauptkonfigurationsdatei enthalten ist [Standard:
{{ nft_conf_dir_path }}/defines.nft
]. - nft_define_conf_content: Template zur Generierung der vorherigen Variablen-Definitionsdatei [Standard:
etc/nftables.d/defines.nft.j2
]. - nft_sets_conf_path: Definitionen für Mengen und Abbildungen, die in der Hauptkonfigurationsdatei enthalten sind [Standard:
{{ nft_conf_dir_path }}/sets.nft
]. - nft_sets_conf_content: Template zur Generierung der vorherigen Mengen- und Abbildungsdefinitionsdatei [Standard:
etc/nftables.d/sets.nft.j2
].
... (Fortsetzung der Variablen für globale Regeln, Eingangs-/Ausgangsregeln, NAT-Tabellen und verschiedene Einstellungen)
Betriebssystemspezifische Variablen
Bitte sehen Sie sich den Standardwert in der Datei nach Betriebssystem im [vars][vars directory] Verzeichnis an.
- nft_pkg_list: Die Liste der Pakete, um
nftables
bereitzustellen. - nft__bin_location: Pfad zur ausführbaren Datei von
nftables
. [Standard:/usr/sbin/nft
]
Regelvorlagen
Das Dictionary nft_templates
enthält eine Bibliothek nützlicher Regeln, die standardisiert und einsatzbereit in Ihrer Firewall sind. Zum Beispiel wird {{ nft_templates.allow_mdns }}
zu folgenden Regeln expandiert, die mDNS sowohl für IPv4 als auch für IPv6 abdecken:
- meta l4proto udp ip6 daddr ff02::fb udp dport mdns counter accept comment "mDNS IPv6 Dienstentdeckung"
- meta l4proto udp ip daddr 224.0.0.251 udp dport mdns counter accept comment "mDNS IPv4 Dienstentdeckung"
Weitere Informationen und Beispiele finden Sie im defaults/main.yml.
Regeldictionary
Jeder Typ von Regeldictionaries wird zusammengeführt und die Regeln werden in alphabetischer Reihenfolge der Schlüssel angewandt (der Grund, warum die Präfixe 000 bis 999 verwendet werden). So:
- nft_*_default_rules: Definiert Standardregeln für alle Knoten. Sie können es in
group_vars/all
definieren. - nft_*_rules: Können Regeln hinzufügen und diejenigen überschreiben, die von nft_*_default_rules definiert wurden. Sie können es in
group_vars/all
definieren. - nft_*_group_rules: Können Regeln hinzufügen und diejenigen überschreiben, die von nft_*_default_rules und nft_*_rules definiert wurden. Sie können es in
group_vars/webservers
definieren.
...
Beispiele
Mit Playbooks
Verwalten Sie Nftables mit Standardwerten (klicken Sie, um zu erweitern)
- hosts: serverXYZ
roles:
- role: ipr-cnrs.nftables
...
Konfiguration
Diese Rolle wird:
nftables
auf dem System installieren.nftables
-Dienst standardmäßig beim Start aktivieren.- Eine Standard-Konfigurationsdatei generieren, die alle folgenden Dateien enthält und von der systemd-Einheit geladen wird.
- Sicherstellen, dass
nftables
gestartet und beim Booten aktiviert ist.
Fail2ban-Integration
Vor Debian Bullseye bringt die systemd-Einheit für Fail2ban keine anständige Integration mit Nftables mit sich. Diese Rolle wird eine Überschreibungsdatei für die fail2ban
-Einheit erstellen, es sei denn, nft_fail2ban_service_override
wird auf false
gesetzt. Standard ist, es hinzuzufügen, selbst wenn es (noch) nicht auf dem Host verfügbar ist.
Entwicklung
Dieser Quellcode stammt von unserer Gitea-Instanz und das Github-Repo existiert nur, um die Rolle zu Ansible Galaxy zu senden...
Lizenz
Autoreninformationen
Jérémy Gardais
- IPR (Institut de Physik von Rennes)
ansible-galaxy install ipr-cnrs.nftables