第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 load enp1s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、
xdp-filterはallowポリシーを使用し、ユーティリティーはすべてのルールに一致するトラフィックのみを破棄します。オプションで、
-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 -m src
# xdp-filter ip 192.0.2.1 -m srcCopy 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 -m src
# xdp-filter ether 00:53:00:AA:07:BE -m srcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
以下のコマンドを使用して、破棄されたパケットおよび許可されるパケットに関する統計を表示します。
xdp-filter status
# xdp-filter statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow