43.2. xdp-filter ルールに一致するネットワークパケット以外のネットワークパケットをすべて削除
xdp-filter を使用して、ネットワークパケットのみを許可できます。
- 特定の宛先ポートから、あるいは指定された宛先ポートへ
- 特定の IP アドレスから、あるいは特定の IP アドレスへ
- 特定の MAC アドレスから、あるいは特定の MAC アドレスまで
これを行うには、特定のルールに一致するネットワークパケット以外のネットワークパケットをすべて破棄する xdp-filter の deny ポリシーを使用します。たとえば、ドロップするパケットのソース IP アドレスがわからない場合は、この方法を使用します。
インターフェイスで xdp-filter を読み込む際にデフォルトのポリシーを deny に設定すると、特定のトラフィックを許可するルールを作成するまで、カーネルはこのインターフェイスからのパケットをすべて直ちに破棄します。システムからロックアウトしないようにするには、ローカルにコマンドを入力するか、別のネットワークインターフェイスからホストに接続します。
前提条件
-
xdp-toolsパッケージがインストールされている。 - ホストにローカルにログインするか、トラフィックのフィルタリングを予定しないネットワークインターフェイスを使用してホストにログインします。
- XDP プログラムをサポートするネットワークドライバー。
手順
xdp-filterを読み込み、enp1s0などの特定のインターフェイスのパケットを処理します。xdp-filter load enp1s0 -p deny
# xdp-filter load enp1s0 -p denyCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプションで、
-f featureオプションを使用して、tcp、ipv4、ethernetなどの特定の機能のみを有効にします。すべての機能をロードするのではなく、必要な機能のみをロードすることで、パケット処理の速度が向上します。複数の機能を有効にするには、コンマで区切ります。コマンドがエラーで失敗した場合、ネットワークドライバーは XDP プログラムをサポートしません。
ルールを追加して、一致するパケットを許可します。以下に例を示します。
パケットのポート
22を許可するには、以下のコマンドを実行します。xdp-filter port 22
# xdp-filter port 22Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、TCP および UDP トラフィックに一致するルールを追加します。特定のプロトコルのみと一致するように、
-p protocolオプションをコマンドに渡します。パケットの
192.0.2.1を許可するには、次のコマンドを実行します。xdp-filter ip 192.0.2.1
# xdp-filter ip 192.0.2.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow xdp-filterは IP 範囲に対応していないことに注意してください。MAC アドレス
00:53:00:AA:07:BEへのパケットを許可するには、次のコマンドを実行します。xdp-filter ether 00:53:00:AA:07:BE
# xdp-filter ether 00:53:00:AA:07:BECopy to Clipboard Copied! Toggle word wrap Toggle overflow
重要xdp-filterユーティリティーは、ステートフルパケットの検査に対応していません。これには、-m modeオプションでモードを設定せず、マシンが送信トラフィックに応答して受信トラフィックを許可する明示的なルールを追加する必要があります。
検証
以下のコマンドを使用して、破棄されたパケットおよび許可されるパケットに関する統計を表示します。
xdp-filter status
# xdp-filter statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow