Frzk.nftables

Ansible ロール: nftables

この Ansible ロールでは、nftables のインストールと構成の管理が可能です。

nftables についての詳細は 公式プロジェクトページ をご覧ください。

ロール変数

太字の変数およびプロパティは必須です。他はオプションです。

変数名 説明 デフォルト値
nftables_flush_ruleset 現在のルールセットをフラッシュするかどうか。 yes
nftables_config_file 構成ファイルのパス。 /etc/nftables.conf
nftables_tables テーブルのリスト。 []

テーブルプロパティ

プロパティ名 説明 デフォルト値
name テーブルの名前。
family テーブルのアドレスファミリー。指定した場合は ipip6inetarpbridge または netdev のいずれかでなければならない。 ip
sets セットのリスト。
maps マップのリスト。
verdict_maps VERDICT_MAPのリスト。
chains チェーンのリスト。

ドキュメント

セットプロパティ

プロパティ名 説明
name セットの名前。
type セット内の要素のタイプ。ipv4_addripv6_addrether_addrinet_serviceinet_protoicmp_typeicmpv6_type または mark のいずれかでなければならない。
size セットが保持できる要素の数。
policy セット選択ポリシー。指定する場合は performance または memory のいずれかでなければならない。
timeout 要素がセットに残る時間。
flags フラグのリスト。指定する場合は少なくとも以下のいずれかを含める必要がある: constantintervaltimeout
gc_interval ガーベジコレクションの間隔。
elements セットに含まれる要素のリスト。要素はセットの type に準拠している必要がある。

ドキュメント

マッププロパティ

プロパティ名 説明
name マップの名前。
keys_type キーのタイプ。ipv4_addripv6_addrether_addrinet_serviceinet_protoicmp_typeicmpv6_type または mark のいずれかでなければならない。
values_type 値のタイプ。ipv4_addripv6_addrether_addrinet_serviceinet_protomarkcounter または quota のいずれかでなければならない。
elements マップに含まれる 要素 のリスト。要素はマップの keys_typevalues_type に準拠している必要がある。

ドキュメント

マップ要素プロパティ

プロパティ名 説明
key キー値。
value キーに関連付けられた値。

VERDICT_MAP プロパティ

verdict_mapmap の特別なケースで、values_type は常に verdict です。そのため、values_type プロパティはありません。また、verdict_map に含まれる要素は value プロパティの代わりに verdict プロパティを持ちます。

プロパティ名 説明
name マップの名前。
keys_type キーのタイプ。ipv4_addripv6_addrether_addrinet_serviceinet_protoicmp_typeicmpv6_type または mark のいずれかでなければならない。
elements VERDICT マップに含まれる 要素 のリスト。

verdict_map 要素プロパティ

プロパティ名 説明
key キー値。
verdict キーに関連付けられた判決。

チェーンプロパティ

プロパティ名 説明
name チェーンの名前。
base チェーンのための ベースルール
rules チェーンに含まれる ルール のリスト。

ドキュメント

ベースプロパティ

プロパティ名 説明
type チェーンのタイプ。filternat または route のいずれかでなければならない。
hook チェーンが接続されているフック。利用可能な値は type に依存する。
priority 同じ hook に接続されているチェーンの順序を決定する整数。
policy チェーンのデフォルトポリシー。指定する場合は accept または drop のいずれかでなければならない。

ドキュメント

ルールプロパティ

ドキュメント

プロパティ名 説明
position チェーン内のルールの順序を決定する整数。
statement ルール文。
comment ルールを説明するコメント。

以下は、ファイルの小さな例です。

重要: これをファイアウォールとして使用しないでください!

---
nftables_flush_ruleset: yes
nftables_config_path: /etc/nftables.rules
nftables_tables:
  - name: firewall
    family: inet

    sets:
      - name: "set1"
        type: 
        size: 10
        policy: "performance"
        timeout: "1d"
        flags:
          - "timeout"
          - "interval"
        gc_interval: "12h" 
        elements:
          - 192.0.2.1
          - 192.0.2.2

    maps:
      - name: "map1"
        keys_type: "inet_service"
        values_type: "ipv4_addr"
        elements:
          - key: ssh
            value: "192.0.2.10"
      - name: "map2"
        keys_type: "inet_service"
        values_type: "ipv4_addr"
        elements:
          - key: ftp
            value: "192.0.2.25"

    verdict_maps:
      - name: "vmap1"
        keys_type: "inet_service"
        elements:
          - key: "192.0.2.10"
            value: "accept"

    chains:
      - name: "My input filter"
        base:
          type: "filter"
          hook: "input"
          priority: 0
          policy: "drop"
        rules:
          - position: 2
            statement: "ct state invalid log prefix 'Invalid_IN: ' drop"
            comment: "無効なパケットをログして削除します。"
          - position: 1
            statement: "iif lo accept"
          - position: 3
            statement: "ct state {established,related} accept"

      - name: "My output filter"
        base:
          type: "filter"
          hook: "output"
          priority: -10
          policy: "accept"
        rules:
          - position: 1
            statement: "ip daddr 192.0.2.100 counter"
...

テスト

テストは以下のステップを含みます:

  1. ロールの構文をチェックします。
  2. 最初の実行を行います。
  3. 2回目の実行を行い、冪等性を確認します。

以下のOSで:

  • Debian 9
  • CentOS 7
  • Ubuntu 18.04

貢献

コードレビュー、パッチ、コメント、バグ報告、および機能リクエストを歓迎します。詳細については 貢献ガイド をお読みください。

プロジェクトについて

Install and manage nftables.

インストール
ansible-galaxy install Frzk.nftables
ライセンス
apache-2.0
ダウンロード
136
所有者