ipr-cnrs.nftables

Nftables

  1. Überblick
  2. Rollenvariablen
  3. Beispiele
  4. Konfiguration
  5. Entwicklung
  6. Lizenz
  7. Autoreninformationen

Ü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

WTFPL

Autoreninformationen

Jérémy Gardais

  • IPR (Institut de Physik von Rennes)
Über das Projekt

Manage Nftables rules and packages

Installieren
ansible-galaxy install ipr-cnrs.nftables
Lizenz
Unknown
Downloads
99.3k
Besitzer
Institut de Physique de Rennes https://ipr.univ-rennes1.fr/ Tutelles CNRS et Université Rennes 1