42.5.3. 動的セットを使用してパケットパスからエントリーを追加する
nftables の動的セットは、パケットデータから IP アドレス、ポート、MAC アドレスなどの要素を自動的に追加します。これにより、リアルタイムのデータ収集が可能になり、動的な拒否リストまたは禁止リストが作成され、セキュリティーの脅威に即座に対応できるようになります。
前提条件
-
inetファミリーにexample_chainチェーンおよびexample_tableテーブルがある。
手順
空のファイルを作成します。以下の例では、IPv4 アドレスのセットを作成します。
複数の IPv4 アドレスを格納することができるセットを作成するには、次のコマンドを実行します。
# nft add set inet example_table example_set { type ipv4_addr \; }IPv4 アドレス範囲を保存できるセットを作成するには、次のコマンドを実行します。
# nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }重要シェルがセミコロンをコマンドの終わりとして解釈しないようにするには、バックスラッシュでセミコロンをエスケープする必要があります。
着信パケットの送信元 IPv4 アドレスを
example_setセットに動的に追加するためのルールを作成します。# nft add rule inet example_table example_chain set add ip saddr @example_setこのコマンドは、
example_chainルールチェーンとexample_table内に新しいルールを作成し、パケットの送信元 IPv4 アドレスをexample_setに動的に追加します。
検証
ルールが追加されたことを確認します。
# nft list ruleset ... table ip example_table { set example_set { type ipv4_addr elements = { 192.0.2.250, 192.0.2.251 } } chain example_chain { type filter hook input priority 0 add @example_set { ip saddr } } }このコマンドは、現在
nftablesにロードされているルールセット全体を表示します。これは、IP がルールをアクティブにトリガーしており、example_setが適切なアドレスで更新されていることを示しています。
次のステップ
動的な IP セットを作成したら、それをさまざまなセキュリティー、フィルタリング、トラフィック制御の目的で使用できます。以下に例を示します。
- ネットワークトラフィックをブロック、制限、またはログに記録する
- 信頼済みユーザーを禁止しないように、許可リストと組み合わせて使用する
- 過剰なブロックを防ぐために自動タイムアウトを使用する