Windowsファイアウォール – 一貫してIPアドレス範囲をブロックする – パフォーマンスの考慮事項

当社のサービスの1つは、英国内の200人の従業員を排他的に使用するためのエクストラネットです。我々は、中国、ロシア、ウクライナ、ナイジェリアからの多数のログイン試行を見ている。私はブロックしたいIP範囲の大きなリストを持っています。何千ものエントリーがあります。

(この議論の目的のために、私は国全体を封鎖する権利と義務について議論を開くことに興味がない。これが私の必要条件であり、それを実現する必要がある)

私はリストを24時間ごとに更新し、Windowsファイアウォールにブロックルールを設定するPowershellスクリプトを作成しました。しかし、私はそれを活性化することについて緊張しています。

私の質問は、この方法で何千ものブロックルールを処理するWindowsファイアウォールがどれだけ効率的であるかということです。たとえば、スクリプトに10,000ブロックルール(または100,000)が含まれていた場合、効果的に機能するのか、停止するのでしょうか?

できる限り私のWebサーバーを保護したいと思っていますが、Webサーバーが要求をすばやく処理していることを確認する必要があります。

更新

私はチャンスを取ってPowerShellスクリプトを実行することに決めました。私は少し違ったテクニックのために行ってきました。 6700のルール(数百万のIPをカバーする)を作成するのではなく、1つのルールを作成して、すべての不正なIPアドレスをすべてのリモートアドレスセクションの母親にプッシュしました。

結果:完全に動作します。中国、ロシア、台湾、ウクライナ、ナイジェリアのほとんどをブロックしています。これは、ほとんどのインバウンドハッキングの試みを受けています。そして、パフォーマンスに顕著な違いはありません。私たちは何の変更もなく同じ量のリクエストを提供しているようです。 1つはWindowsファイアウォールです。何千ものIPブロックを非常に効率的に処理できるようです。

更新2 – フィードバック

このスクリプトは2、3日間使用されていますので、どのようになっているのかフィードバックをいただければ幸いです。スクリプトを毎日実行するスケジュールされたジョブとして設定し、ファイアウォールを新しいIP範囲で更新し、CSVファイルから読み込みました。これは完全に機能し、ファイアウォールは非常に迅速に機能します。しかし、注意すべきことがあります。スクリプト自体にはおよその時間がかかります。実行するのに4〜5分、CPUが最大になり、Web要求が極端に遅くなる。

したがって、夕方や重い負荷を期待しないメンテナンスウィンドウでスクリプトを実行することをお勧めします。

私にとっての解決策は、ロードバランシングされた各サーバーで異なる時間にスクリプトを実行することです。その結果、実行中にパフォーマンスが低下することはありません。

ここにスクリプトがあります:

$csv = Import-Csv -Path 'C:\Scripts\IP Block List.csv'

$data = @()
$csv | ForEach-Object { $data += $_.From + "-" + $_.To }

Set-NetFirewallRule -Name "BlockAllIPsInList" -RemoteAddress $data

次に、サンプルのCSVファイルを示します。

From,To
1.2.3.4,1.2.3.255

したがって、この例では、1.2.3.4〜1.2.3.255

ちょっとした作業で、CIDR形式でも動作するようにスクリプトを修正することができました。お役に立てれば。

ベストアンサー
これをゲームサーバーで行いました。私たちは最終的にpfsenseのプラグインのためにそれを変更しましたが、Windowsファイアウォールで数千のIPブロックを使用してもパフォーマンスの低下は見られませんでした。 ipに基づいてブロックすることは、ファイアウォールが実行できる最も基本的なタスクの1つです。管理上のオーバーヘッドに加えて(あなたはすでにそのスクリプトを持っています)、問題が生じる理由は何もありません。 FWIW、私はこのためにアマゾンからroute53を使って見ましたが、当時私たちの目的には役立たなかった。これらの国では、偽のIPを解決することができます。

転載記事の出典を記入してください: Windowsファイアウォール – 一貫してIPアドレス範囲をブロックする – パフォーマンスの考慮事項 - コードログ