6.7. nftables を使用した接続の量の制限
nftables を使用して、接続の数を制限したり、一定量の接続の確立を試みる IP アドレスをブロックして、大量のシステムリソースを使用しないようにすることができます。
6.7.1. nftables を使用した接続数の制限 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
nft ユーティリティーの ct count パラメーターを使用すると、管理者は接続数を制限できます。この手順では、着信接続を制限する方法の基本的な例を説明します。
前提条件
- example_table にベースの example_chain が存在する。
手順6.19 nftables を使用した接続数の制限
- IPv4 アドレスから
SSHポート(22)への 2 つの同時接続のみを許可し、同じ IP からの接続をすべて拒否するルールを追加します。nft add rule ip example_table example_chain tcp dport ssh meter example_meter { ip saddr ct count over 2 } counter reject# nft add rule ip example_table example_chain tcp dport ssh meter example_meter { ip saddr ct count over 2 } counter rejectCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要に応じて、前の手順で作成した meter を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow elementsエントリーは、現在ルールに一致するアドレスを表示します。この例では、elementsは、SSH ポートへのアクティブな接続がある IP アドレスを一覧表示します。出力には、アクティブな接続の数を表示しないため、接続が拒否された場合は表示されないことに注意してください。
6.7.2. 1 分以内に新しい着信 TCP 接続を 11 個以上試行する IP アドレスのブロック リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
nftables フレームワークを使用すると、管理者はセットを動的に更新できます。このセクションでは、この機能を使用して、1 分以内に 11 個以上の IPv4 TCP 接続を確立しているホストを一時的にブロックする方法を説明します。nftables は、5 分後に拒否リストから IP アドレスを自動的に削除します。
手順6.20 1 分以内に新しい着信 TCP 接続を 11 個以上試行する IP アドレスのブロック
- ip アドレスファミリーを使用して filter テーブルを作成します。
nft add table ip filter
# nft add table ip filterCopy to Clipboard Copied! Toggle word wrap Toggle overflow - input チェーンを filter テーブルに追加します。
nft add chain ip filter input { type filter hook input priority 0 \; }# nft add chain ip filter input { type filter hook input priority 0 \; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - denylist という名前のセットを filter テーブルに追加します。
nft add set ip filter denylist { type ipv4_addr \; flags dynamic, timeout \; timeout 5m \; }# nft add set ip filter denylist { type ipv4_addr \; flags dynamic, timeout \; timeout 5m \; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、IPv4 アドレスの動的セットを作成します。timeout 5mパラメーターは、nftablesがセットから 5 分後にエントリーを自動的に削除することを定義します。 - 1 分以内に新規 TCP 接続を 10 個以上確立しようとするホストのソース IP アドレスを
denylistセットに自動的に追加するルールを追加します。nft add rule ip filter input ip protocol tcp ct state new, untracked limit rate over 10/minute add @denylist { ip saddr }# nft add rule ip filter input ip protocol tcp ct state new, untracked limit rate over 10/minute add @denylist { ip saddr }Copy to Clipboard Copied! Toggle word wrap Toggle overflow denylistセットの IP アドレスからの接続をすべて破棄するルールを追加します。nft add rule ip filter input ip saddr @denylist drop
# nft add rule ip filter input ip saddr @denylist dropCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
- 詳細は、「nftables で名前付きセットの使用」 を参照してください。