第3章 DDoS 攻撃を防ぐために、高パフォーマンストラフィックのフィルタリングで xdp-filter を使用
nftables
と比べて、Express Data Path (XDP) は、パネットワークインターフェイスでネットワークパケットを処理して破棄します。したがって、XDP は、ファイアウォールやその他のアプリケーションに到達する前に、パッケージの次のステップを決定します。その結果、XDP フィルターは必要なリソースが少なく、DDoS (Distributed Denial of Service) 攻撃に備えるために、従来のパケットフィルターよりもはるかに高いレートでネットワークパケットを処理できます。たとえば、テスト時に、Red Hat は、1 つのコア上で 1 秒あたり 26 のネットワークパケットを破棄します。これは、同じハードウェアの nftables
ドロップレートよりもはるかに高くなります。
xdp-filter
ユーティリティーは、XDP を使用して着信ネットワークパケットを許可または破棄します。特定のトラフィックに対するトラフィックのフィルターを行うルールを作成できます。
- IP アドレス
- MAC アドレス
- ポート
xdp-filter
にパケット処理速度が大幅に高くなりますが、nftables など、nftables
は同じ機能がないことに注意してください。XDP を使用したパケットのフィルタリングを例示します。xdp-filter
は、XDP を使用したパケットのフィルタリングを実証します。また、独自の XDP アプリケーションを作成する方法を理解するために、ユーティリティーのコードを使用できます。
AMD および Intel 64 ビット以外のアーキテクチャーでは、xdp-filter
ユーティリティーはテクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビュー機能では、最新の製品機能をいち早く提供します。これにより、お客様は開発段階で機能をテストし、フィードバックを提供できます。
テクノロジープレビュー機能のサポート範囲は、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。
3.1. xdp-filter ルールに一致するネットワークパケットの削除
xdp-filter
を使用して、ネットワークパケットをドロップできます。
- 特定の宛先ポートへの特定の宛先ポート
- 特定の IP アドレスの使用
- 特定の MAC アドレスの使用
xdp-filter
の allow
ポリシーは、すべてのトラフィックが許可され、フィルターが特定のルールに一致するネットワークパケットのみをドロップするように定義します。たとえば、ドロップするパケットのソース IP アドレスを知っている場合は、この方法を使用します。
前提条件
-
xdp-tools
パッケージがインストールされている。 - XDP プログラムをサポートするネットワークドライバー。
手順
xdp-filter
を読み込み、enp1s0
などの特定のインターフェイスの着信パケットを処理します。# xdp-filter load enp1s0
デフォルトでは、
xdp-filter
はallow
ポリシーを使用し、ユーティリティーはすべてのルールに一致するトラフィックのみを破棄します。オプションで、
-f feature
オプションを使用して、tcp
、ipv4
、ethernet
などの特定の機能のみを有効にします。すべての機能をロードするのではなく、必要な機能のみをロードすることで、パケット処理の速度が向上します。複数の機能を有効にするには、コンマで区切ります。コマンドがエラーで失敗した場合、ネットワークドライバーは XDP プログラムをサポートしません。
ルールを追加して、それに一致するパケットをドロップします。以下に例を示します。
受信パケットをポート
22
に破棄するには、次のコマンドを実行します。# xdp-filter port 22
このコマンドは、TCP および UDP トラフィックに一致するルールを追加します。特定のプロトコルのみと一致する場合は、
-p protocol
オプションを使用します。192.0.2.1
から着信パケットを破棄するには、次のコマンドを実行します。# xdp-filter ip 192.0.2.1 -m src
xdp-filter
は IP 範囲に対応していないことに注意してください。MAC アドレス
00:53:00:AA:07:BE
から着信パケットを破棄するには、次のコマンドを実行します。# xdp-filter ether 00:53:00:AA:07:BE -m src
検証
以下のコマンドを使用して、破棄されたパケットおよび許可されるパケットに関する統計を表示します。
# xdp-filter status
関連情報
-
システム上の
xdp-filter(8)
man ページ -
開発者であり、
xdp-filter
のコードに関心がある場合は、Red Hat カスタマーポータルから対応するソース RPM (SRPM) をダウンロードしてインストールします。