- ゾーン(LAN、DMZ、VLAN)への分割と、精度の高いACLの使用により、サーバーの攻撃対象領域を大幅に縮小できます。
- 高度なセキュリティ機能を備えた適切に構成されたWindowsファイアウォールは、各コンピュータ上の送受信トラフィックをきめ細かく制御します。
- 次世代ファイアウォール(NGFW)は、アプリケーションフィルタリング、IPS、VPN、URLフィルタリング、QoSを組み合わせることで、包括的な環境保護と管理を実現します。
- 設定ミスを検出し、長期的なセキュリティを維持するためには、定期的なログ記録、監査、およびルールのテストが不可欠です。
高度なサーバーファイアウォール設定を習得することは、もはや大企業だけの特権ではありません。サイバーセキュリティを真剣に考える企業であれば、ネットワークのセグメント化、ゾーンの定義、詳細なルールの作成、そしてすべてのコンピューターとサーバー上の境界ファイアウォールとWindowsファイアウォールの両方を最大限に活用する方法を理解する必要があります。
このガイドでは、次世代ファイアウォール(NGFW)の仕組み、ゾーン(LAN、WAN、DMZ、VLAN)の設計方法、適用するルールの種類(プログラム、ポート、プロトコル、IPなど)、高度なセキュリティを備えたWindowsファイアウォールの活用方法、SimpleWallなどのツールの役割、そしてシステム全体が管理不能な混乱状態に陥らないよう従うべきベストプラクティスについて、詳細に解説します。
サーバー上の次世代ファイアウォール:ポートフィルタリング以上の機能
FortiGate NGFWのような次世代ファイアウォールは、高度なネットワーク機能と高度なセキュリティ機能を単一のデバイスに統合しています。単にポートを開閉するだけでなく、アプリケーションレベルでトラフィックを分析し、暗号化されたコンテンツを検査し、複雑なクラウド、LAN、WLAN、リモートアクセスアーキテクチャと統合します。
FortiGateの場合、システムの中核となるのはFortiOSという独自のオペレーティングシステムで、セキュリティポリシーとネットワーク機能を統合しています。具体的には、統合型SD-WAN、汎用ZTNA、無線および有線ネットワークにおけるトラフィック制御、そしてFortiManagerによる集中管理などが含まれます。
さらに、これらのデバイスは独自のASICアーキテクチャ(専用チップ)を採用することで、ネットワークがフルロード状態で数百または数千の同時セッションが発生している場合でも、パフォーマンスを損なったりエネルギー消費量を増加させたりすることなく、パケットの検査と復号化を高速化します。
脅威対策はFortiGuardサービスによって強化されます。このサービスは人工知能を追加してマルウェア、不審なトラフィック、エクスプロイト、標的型攻撃を検出し、Fortinet Security Fabricの概念にすべて適合します。Fortinet Security Fabricとは、ネットワーク、エンドポイント、クラウドを網羅し、インシデントに対して協調的に対応するためのセキュリティファブリックです。
サーバー上のファイアウォールゾーン設計とネットワークセグメンテーション
明日がないかのようにルールを作成する前に、ネットワークのゾーニングアーキテクチャとセグメンテーションを適切に設計する必要があります。ネットワークがフラットであればあるほど、攻撃者は侵入に成功した後、横方向に移動しやすくなります。
最初のステップは、主要な資産とサービス(Webサーバー、データベース、社内アプリケーション、POS端末、VoIP PBX、ゲストネットワークなど)を特定することです。それらは、重要度と露出度に応じて、異なる論理ゾーンにグループ化されます。
一般的には、インターネットに直接サービスを提供するサーバー(電子メール、VPN、Webアプリケーション、公開ポータルなど)のためにDMZ(非武装地帯)を作成するのが一般的です。これらのサーバーは、外部ネットワークとより機密性の高い内部ネットワークの両方から隔離し、ゾーン間のトラフィックを可能な限り制限する必要があります。
組織内からのみアクセス可能なサーバーは、ユーザーネットワーク、管理ネットワーク、およびラボ環境やテスト環境とは分離された内部サーバーゾーンに配置されます。これを実用的にするために、 VLANをサポートするスイッチを使用してレイヤー2レベルでも分離を維持するのが一般的です。
IPv4環境では、すべての内部ネットワークはプライベートアドレス範囲(RFC1918)を使用し、インターネットへのアクセスにはNATメカニズムを利用する必要があります。この変換は通常、境界ファイアウォールで行われ、各ゾーンごとに受信および送信ポリシーも適用されます。
アクセス制御リスト(ACL)とゾーン間ルール
ゾーンが定義され、ファイアウォールのインターフェースまたはサブインターフェースに割り当てられたら、次はACL(アクセス制御リスト)の設定です。ACLは、それらのゾーン間で許可されるトラフィックと拒否されるトラフィックを決定するルールです。
基本的な考え方は、各インターフェースまたはサブインターフェースごとに、可能な限り具体的かつ詳細なルールセットを定義することです。具体的には、送信元IPアドレスまたはサブネット、宛先IPアドレスまたはサブネット、プロトコル(TCP、UDP、ICMPなど)、関連するポート、およびアクション(許可または拒否)を定義します。ルールが具体的であればあるほど、セキュリティ上の脆弱性は少なくなります。
良い方法としては、各ACLの最後に暗黙の「すべて拒否」ルールを設けることです。これはセーフティネットとして機能し、パケットがそれ以前の許可ルールに一致しない場合はブロックされます。そこから、実際に必要なフローに対して非常に具体的な例外を作成します。
また、ファイアウォールの管理インターフェース(HTTP、HTTPS、SSHなど)への外部アクセスを無効にし、特定の内部ネットワークからのみ、または安全な管理用VPN経由でのみ管理できるようにすることをお勧めします。
最新の次世代ファイアウォール(NGFW)は、ポートとIPアドレスの制御だけでなく、アプリケーション制御、Webカテゴリ、IPS、高度なファイル分析(サンドボックス)など、より多くの機能を提供します。これらの機能に既に費用を支払っている場合は、特に境界を通過する重要なトラフィックフローに対して、これらの機能を有効にして設定することが賢明です。
サーバーにおける、許可型ファイアウォールと制限型ファイアウォールの比較
ファイアウォールポリシー(境界ファイアウォールかオペレーティングシステムかを問わず)を設計する際の重要なポイントは、許可的なスタンスから始めるか、制限的なスタンスから始めるかを決定することです。
寛容なファイアウォールでは、暗黙の最終ルールは「すべてを許可する」です。拒否ルールで明示的に定義されたものだけがブロックされます。この方式は通常、信頼できる内部ネットワーク(LAN)や、Windowsで「プライベートネットワーク」として構成されたコンピュータで使用されます。
制限的なファイアウォールでは、その逆が当てはまります。究極のルールは「すべて拒否」です。明示的に許可されたルールに一致するトラフィックのみが許可されます。この考え方は、広域ネットワーク(WAN)インターフェース、pfSenseや企業の次世代ファイアウォール(NGFW)などのファイアウォール、および「パブリックネットワーク」として構成されたデバイスで一般的です。
例えば、Windowsはデフォルトで、受信接続に対しては制限的なポリシー(明示的に許可されていないものはすべてブロックする)を、送信接続に対しては寛容なポリシー(ブロックしたもの以外はすべて許可する)を使用します。これはファイアウォールの詳細設定で調整できます。
Windowsファイアウォールはサーバー上で実際にどのようなメリットをもたらすのでしょうか?
高度なセキュリティ機能を備えたWindowsファイアウォールは、多くの人が想像するよりもはるかに強力です。IPアドレス、ポート、プロトコル、サービス、ネットワークインターフェイス、プロファイルの種類(ドメイン、プライベート、パブリック)、さらには場合によってはユーザーやグループごとにフィルタリングすることで、送受信トラフィックを制御できます。
その機能には、低レベルのパケットフィルタリング、詳細なログの生成(イベントビューアーで分析したり、SIEMに送信したりできる)、パブリックネットワークを検出してより厳格なプロファイルを自動的に適用する機能、Windows Defenderなどの他のセキュリティレイヤーとの統合などが含まれます。
小規模企業や多くのサーバー環境においては、適切に設定された次世代ファイアウォール(NGFW)は、特に堅牢なウイルス対策ソフトウェアと適切な管理手法を組み合わせれば、十分すぎるほどの効果を発揮します。しかし、その限界を認識しておくことが重要です。NGFWは、境界防御型のNGFWや専用の侵入防御システム(IPS)の代替となるものではありません。
弱点としては、Windowsファイアウォールがデフォルトで高度なシグネチャによるディープパケットインスペクションを提供していないこと、システムテレメトリをネイティブにブロックしないこと、通知が控えめであること(新しい接続についてほとんど警告しない)、ログの表示方法が非技術系ユーザーにとって使いにくいことなどが挙げられます。
高度なセキュリティを備えたWindowsファイアウォールへのアクセス
Active Directoryドメイン環境で高度なファイアウォール設定を管理するには、グループポリシーオブジェクト(GPO)を使用するのが最善の方法です。ドメイン管理者グループへの所属、またはGPOに対する委任されたアクセス許可が必要です。
ポリシー管理コンソールから、[ポリシー] > [コンピューターの構成] > [Windows の設定] > [セキュリティの設定] > [高度なセキュリティを備えた Windows ファイアウォール]に移動します。ここで、クライアント コンピューターとドメイン参加済みサーバーに共通のルールを定義できます。
単一のサーバーまたはローカルコンピューターの場合は、そのデバイスに対する管理者権限のみが必要です。コンソールを開く最も簡単な方法は、[スタート] を押して「wf.msc」と入力し、Enter キーを押すことです。これにより、そのコンピューターの高度なセキュリティを備えた Windows ファイアウォール コンソールが開きます。
メイン画面には、受信ルール、送信ルール、接続セキュリティルール、および各種プロファイル(ドメイン、プライベート、パブリック)の設定が表示されます。また、アクティブなルールのみが表示される監視エリアも備えています。
プロファイル、グローバルポリシー、およびデフォルトの動作
ファイアウォールのプロパティパネルでは、各ネットワークプロファイル(ドメイン、プライベート、パブリック)のグローバルオプションを制御できます。これらのオプションは、ネットワークアダプタが特定のネットワークタイプに関連付けられている場合のファイアウォールの動作を決定します。
各プロファイルごとに、ファイアウォールを有効にするか無効にするか、どのルールにも一致しない受信接続をブロックするか許可するか、そして送信接続についても同様に設定することが可能です。
また、プログラムをブロックする際の通知、ファイアウォールログの保存場所、ログの最大サイズ、そして一般的に信頼性が高いとされるIPsec VPNトンネルで保護されたトラフィックの特別な処理など、さまざまなパラメータを調整することもできます。
監視セクションには、グループポリシーオブジェクト(GPO)からのルールとローカルで定義されたルールを含む、現在有効なすべてのルールが表示されます。どのルールが実際に有効で、どのようなパラメーターが適用されているかを確認するには、ここが最適な場所です。また、ここからルールのプロパティを開いて変更することもできます。
出入り規則:交通方向
Windowsファイアウォールのルールを扱う際によくある間違いの一つは、トラフィックの方向を混同することです。受信ルールはコンピュータに到着するパケットに適用され、送信ルールはコンピュータから出て別のマシンへ送信されるパケットに適用されます。
インターネットからサーバーへの接続を防止することが目的であれば、受信ルールを作成または変更する必要があります。逆に、サーバーサービスやプログラムが外部に接続できないようにすることが目的であれば、送信ルールを変更する必要があります。
リスト内の各項目は、ルールが有効(緑色のチェックマークアイコン)か無効かを示します。無効になっているルールは定義されていても、トラフィックには影響しません。Windowsでは、定義済みのルールが多数存在し、必要になるまでアクティブにならないことがよくあります。
送信元/宛先フローとローカル/リモートポートを理解することは、適用されないルールを作成したり、必要以上にポートを開放したりする事態を避けるために不可欠です。これは、複雑なサービスを構成する際に非常によくある問題です。
Windowsファイアウォールのルールの種類
Windowsファイアウォールの新規ルールウィザードには、「プログラム」、「ポート」、「定義済み」、「カスタム」の4つの主要なカテゴリがあります。それぞれ異なるシナリオを想定して設計されているため、目的の結果に応じて慎重に選択する必要があります。
プログラムルールは特定の実行可能ファイルに焦点を当て、ポートルールはTCPまたはUDPポート番号でフィルタリングを行い、定義済みルールは既知のWindowsサービスの管理を簡素化し、カスタムルールは複数の条件を一度に組み合わせることで非常にきめ細かな調整を可能にします。
いずれの場合も、ウィザードは最後に、適用するアクション(許可、IPsecで保護されている場合のみ許可、またはブロック)と、そのルールを適用するネットワークプロファイル(ドメイン、プライベート、パブリック)を選択するよう求めます。最後に、後で簡単に識別できるように、名前と説明が割り当てられます。
重要なサーバーにおいては、保護対象となるサービスとルールが存在する理由を明確に示すなど、ルールを適切に文書化しておくことが重要です。そうすることで、将来の監査や変更の際に、その有用性について疑念が生じることを防ぐことができます。
プログラムごとのルール:特定のサービスを細かく制御する
プログラム型ルールは、アプリケーションが使用するすべてのポートを記憶する必要なく、アプリケーションのトラフィックを制御する便利な方法です。これらのルールは、受信トラフィックと送信トラフィックの両方に適用できます。
ウィザードで「このプログラムのパス」オプションを選択し、実行可能ファイルのパスを指定します。環境変数を使用すれば、プログラムが異なるコンピュータの異なる場所にインストールされている場合でも、ルールが正しく適用されるようにすることができます。
svchost.exeやその他のマルチサービスコンテナ内でサービスをホストしているサーバーでは、サービスの短い名前を選択することで、ルールを特定のサービスのみに適用するようにカスタマイズできます。これにより、例えば、同じプロセス内の特定のRPCサービスのトラフィックを区別することが可能になります。
プログラムルールと「プロトコルとポート」タブの制限を組み合わせることを強くお勧めします。アプリケーションがリッスンまたは使用できるポートを明示的に指定してください。アプリケーションが異なるポートを開こうとすると、ファイアウォールがそれをブロックします。
ポートルール:従来のTCP/UDPフィルタリング
ポートタイプのルールを使用すると、ローカルまたはリモートのポート番号とプロトコル(主にTCPまたはUDP)に基づいてトラフィックを許可またはブロックできます。これらのルールは、受信ルールと送信ルールの両方に使用できます。
例えば、TCPポート21を開くための一般的な受信ルールでは、TCPを選択し、「特定のローカルポート」を指定して21と入力します。複数のポートをカンマで区切って指定することも(例:21,20,22)、5000-5100のような範囲を指定することもできます。同じルール内で個々のポートと範囲を混在させることも可能です。
次に、アクション(許可、セキュリティ保護されている場合は許可、ブロック)と、それを適用するプロファイルを選択します。これは、特定のプログラムの詳細に立ち入ることなく、特定の標準サービス(HTTP、HTTPS、RDPなど)を開くための簡単な方法です。
送信ルールの場合、サーバーが接続を試みる宛先であるリモートポートを指定するのが一般的です。典型的な使用例としては、疑わしいポートへのすべての送信トラフィックをブロックしたり、特定のアプリケーションが特定のポートでのみ通信できるように制限したりすることが挙げられます。
事前定義済みルールとカスタマイズルール
事前定義ルールには、一般的なWindowsサービス(ファイルとプリンターの共有、リモートデスクトップなど)用の既成の設定がまとめられています。サービスを選択し、許可するかブロックするかを指定し、プロファイルを選択するだけで完了です。
このオプションは、内部サービスを迅速に有効化または制限したい場合に便利です。個々のケースでどのポートやプロトコルが使用されているかを調査する必要はありません。システムはバックグラウンドで、そのサービスに適用される複数の特定のルールを作成します。
カスタムルールは最も包括的で、最大限の制御機能を提供します。プログラム(またはすべてのプログラム)、サービスタイプ、IPプロトコル(TCP、UDP、ICMPv4、ICMPv6、GRE、IPv6ルーティングなどのリストを含む)、ローカルポートとリモートポートの組み合わせ、送信元および宛先IPアドレス(範囲とサブネットを含む)、および追加条件など、すべてのパラメータを指定できます。
ICMPv4やICMPv6などのプロトコルでは、すべてのICMPメッセージタイプを許可するか、特定のタイプ(エコー要求、エコー応答、タイムアウトなど)のみを許可するかを選択できます。一般的なリストにない特定のタイプやコードを定義することも可能です。
また、スコープセクションでIPアドレスを定義する際、ウィザードではIPアドレスの範囲全体またはサブネット(例:192.168.10.0/24)を追加して、ローカルおよびリモートの両方で、どのデバイスがそのルールを使用できるかをさらに制限することができます。
サーバー上のICMP受信ルール
サーバーへのICMPトラフィックを許可するかどうかは、戦略的な判断です。受信ICMPルールを設定すると、サーバーはpingや特定のネットワーク診断メッセージに応答できるようになり、管理上非常に役立ちますが、攻撃者に情報を提供してしまう可能性もあります。
Windowsファイアウォールで受信ICMPルールを作成するには、詳細コンソールを開き、「受信ルール」に移動して、新しいカスタムルールを作成します。「プログラム」セクションでは、通常「すべてのプログラム」を選択します。
プロトコル画面で、使用するネットワークスタックに応じてICMPv4またはICMPv6を選択します。IPv4とIPv6の両方を使用する場合は、それぞれにルールを作成する必要があります。カスタマイズオプションでは、許可する特定のICMPタイプ(エコー要求/エコー応答のみ、またはより広範なセット)を選択できます。
次に、スコープ(pingを実行できるIPアドレス)、アクション(通常は接続を許可する)、およびルールが適用されるネットワークプロファイルが定義されます。最後に、ルールを簡単に識別できるように、分かりやすい名前が割り当てられます。
受信および送信サービスまたはプログラム規則
場合によっては、特定のサービスが必要なポートで受信トラフィックをリッスンできるようにしたい場合もあれば、その逆で、プログラムがどのポートからも外部と通信できないようにしたい場合もあります。
受信側では、カスタムルールを作成し、「このプログラムパス」を選択して、サービス実行ファイルを指定します。その後、サービスを短い名前で選択することで、ルールがその実行ファイル内でホストされているサービスのみに適用されるようにカスタマイズできます。
`sc sidtype <ServiceName> <UNRESTRICTED|RESTRICTED>` コマンドを使用して、サービスの SID タイプを調整することもできます。これは、ファイアウォール ルール内でそのサービスがどのように使用されるかを決定します。RESTRICTED に変更するとサービスが起動しなくなる可能性があるため、慎重に行い、そのような保護が必要な場合にのみ実行してください。
送信トラフィックの場合も手順は似ていますが、送信ルールを作成する必要があります。そのプログラムがインターネットにアクセスするのを完全にブロックしたい場合は、実行可能ファイルのパスを定義し、アクションを「接続をブロック」に設定し、制限するプロファイルを選択します。
RPCおよび動的ポートの特別な構成
リモートプロシージャコール(RPC)を使用するサービスは、システムが実行時に割り当てる動的ポートを使用するため、特に機密性が高い場合があります。Windowsファイアウォールを介してこのトラフィックを制御された方法で許可するには、通常、2つの特定のルールを作成する必要があります。
最初のルールは、%systemroot%\system32\svchost.exe にあるRPC エンドポイント マッパー サービスを対象としています。このルールは RpcSs サービスに適用されるようにカスタマイズされており、プロトコルとして TCP が設定され、ローカル ポートには「RPC エンドポイント マッパー」オプションが選択されています。
2つ目のルールは、許可したいRPC対応ネットワークサービスに対して作成され、そのサービスをホストする実行可能ファイルのパスを指定するとともに、その特定のサービスに関連付けます。この場合、ローカルポートには「RPCダイナミックポート」が選択されます。
どちらのルールでも、スコープ(許可されるIPアドレス)、アクション(接続を許可する)、およびプロファイルが調整されます。これにより、これらの条件を満たすデバイスとサービスのみがRPCポートフォワーディングを利用できるようになります。
Windowsファイアウォールのログ記録、監査、およびトラブルシューティング
何かが正常に動作していない場合、ファイアウォールのログと監査イベントが最初の情報源となります。ログ収集が必要になる前に、適切な設定をしておくことをお勧めします。
ファイアウォールのプロパティで、各プロファイルタブにおいて、ログファイルのパス、最大サイズ(KB単位)、およびパケット損失、接続成功、またはその両方をログに記録するかどうかをカスタマイズできます。サーバー環境では、概要を明確に把握するために、通常は両方をログに記録することをお勧めします。
一方、コマンドラインツールauditpol.exeを使用すると、ポリシー変更などの特定の監査サブカテゴリを有効にできるため、ファイアウォールやIPsecポリシーが変更されたときにシステムが詳細なイベントを生成するようになります。
問題を調査する際には、`netstat -ano > netstat.txt`でネットワークの状態を、 `tasklist > tasklist.txt`でプロセス一覧を取得すると便利です。`tasklist` のプロセスID (PID) と `netstat` のアクティブな接続を照合することで、どのプログラムが特定のポートを使用しているかを特定できます。
複雑なシナリオでは、Microsoft はTSS.ps1などのスクリプトを提供し、Windows フィルタリング エンジン (WFP) の高度なトレースを収集します。収集されたトレースは ZIP ファイルにパッケージ化され、分析したり、テクニカル サポートに提出したりできます。
外部ツール:SimpleWallおよびサードパーティ製ファイアウォール
Windowsに標準搭載されているファイアウォールは十分に機能しますが、アプリケーションが初めてインターネットにアクセスしようとした際に、より直感的なインターフェースや明確な通知が不足している場合がよくあります。そこでサードパーティ製のソリューションが登場するのです。
Windows向けの軽量なオープンソースソフトウェアの一つにSimpleWallがあります。これはWindowsフィルタリングプラットフォーム(WFP)を利用しますが、Windowsファイアウォールを直接変更することはありません。代わりに、WFPを通じて独自のルールを作成し、どのアプリケーションがアクセスできるかを制御します。
その機能には、シンプルなルールエディタ、Windowsのテレメトリやスパイ行為をブロックするための内部リスト、ブロックされたパケットログ、IPv6互換性、システムサービスおよびMicrosoft Storeアプリのサポートなどが含まれます。
SimpleWall permite crear reglas permanentes o temporales (que desapare