ユーザ用ツール

サイト用ツール


linux:nftables
no way to compare when less than two revisions

差分

このページの2つのバージョン間の差分を表示します。


linux:nftables [2020/11/24 13:22] (現在) – 作成 Wiki Editor
行 1: 行 1:
 +====== nftables ======
 +Linuxのパケットフィルタリング基盤。iptablesの後継?らしいので、乗り換え。
 +
 +必要なカーネルモジュールを組み込む。基本的な説明はGentooのマニュアルにて。Sakura Internetの解説も大変参考になる。
 +
 +  * [[https://wiki.nftables.org/]]
 +  * [[https://wiki.gentoo.org/wiki/Nftables]]
 +  * [[https://knowledge.sakura.ad.jp/22636/]]
 +
 +===== フィルタリングルール確認 =====
 +
 +  # すべての設定
 +  > nft list ruleset
 +  
 +  # -a オプションで各エレメントの操作に利用できるハンドル名が表示できる
 +  > nft -a list ruleset
 +  
 +  # ip(ipv4)の設定のみ
 +  > nft list ruleset ip
 +
 +===== ルールセットの削除 =====
 +
 +  # すべて削除
 +  > nft flush ruleset
 +  
 +  # アドレスファミリの指定
 +  > nft flush ruleset ip
 +
 +===== ルールセットの保存 =====
 +
 +  > nft list ruleset > <ファイル名>
 +  
 +  # Gentoo Linuxの場合は起動スクリプトでも保存できる。
 +  # この場合、/var/lib/nftables/rules-saveに保存され、nftables起動スクリプトで起動時に読み込むようになる。
 +  # /etc/conf.d/nftablesでSAVE_ON_STOP="yes"となっていると、シャットダウン時に現在の設定が保存される。
 +  # 基本的には"no"にして、自分で保存する方がよいと思う。
 +  > /etc/init.d/nftables save
 +
 +
 +===== Tableの作成と削除 =====
 +nftablesでは、iptablesのように標準でTableは用意されない。処理するアドレスファミリのTableを任意の名称で作成する必要がある。
 +  
 +ipv4用のフィルタリングを設定するテーブルを「ipv4_filter」として作成する。nftablesではアドレスファミリの指定がなければ、標準ではipv4を示すipが指定される。
 +
 +  > nft create table ip ipv4_filter
 +
 +Tableの削除
 +
 +  # Table名を指定
 +  > nft delete table ip ipv4_filter
 +
 +===== Chainの作成 =====
 +ルールを格納するコンテナをChainという。Chainにリストされた順にルールが適用される。
 +
 +チェーンには種類があり、Netfilterフックによってお呼ばれる「Base Chain」と、ユーザの指定で他のチェーンから呼ばれる「Regular Chain」がある。Chainの作成時に、タイプ、紐づけるフック、プライオリティを指定されたものがBase Chainとなる。
 +
 +ここでは、ipv4_filterテーブルの中に、base_filterという名前でチェーンを作成する。タイプには、filterを指定し、フックはinputとしてローカルマシンをあて先としたパケットを対象とする。プライオリティは0としておく。プライオリティは、同じフックから呼び出されるチェーンが複数ある場合、数値が小さいものから適用される。ポリシーは、ひとまずAcceptとしておく。ここでdropとすると、すべてのパケットが破棄されてしまうため、sshもその時点で切れてしまう。
 +
 +  # add chain [<アドレスファミリ>] <テーブル名> <チェーン名> [<ベースチェーンのパラメータ>]
 +  # create chain [<アドレスファミリ>] <テーブル名> <チェーン名> [<ベースチェーンのパラメータ>]
 +  
 +  > nft add chain ip ipv4_filter base_filter {type filter hook input priority 0\; policy accept \; }
 +
 +
 +===== Ruleの作成 =====
 +Chainでパケットをフックするタイミングが決まるので、その中に具体的なフィルタのルールを記述していく。
 +
 +
 +
 +
 +
 +
  
linux/nftables.txt · 最終更新: 2020/11/24 13:22 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki