自己管理型配置用のWindowsnetsh
ファイアウォールの構成
Windows Server システムでは、 netsh
プログラムは Windows Firewallを管理するためのメソッドを提供します。 これらのファイアウォール ルールにより、管理者はシステムに接続できるホストを制御し、システムに接続できるホストを制限することでリスク露出を制限できます。
このドキュメントでは、 Windows Firewallの基本的な構成について説明します。 これらのアプローチを、大規模なネットワーク組織の開始点として使用してください。 MongoDB のセキュリティ プラクティスとリスク マネジメントの詳細については、「 セキュリティ 」を参照してください。
Overview
Windows Firewall は、ルールタイプによって決定された順序でルールを処理し、次の順序で解析されます。
Windows Service Hardening
Connection security rules
Authenticated Bypass Rules
Block Rules
Allow Rules
Default Rules
デフォルトでは、 Windows Firewallのポリシーはすべてのアウトバウンド接続を許可し、すべての着信接続をブロックします。
すべての MongoDB プロセスの デフォルト ポート を考慮すると、アプリケーションと適切な およびmongod.exe
インスタンスとの間の必要な通信mongos.exe
のみ を許可するネットワーク ルールを構成する必要があります。
このドキュメントで説明されている設定の変更により、明示的に許可されていないすべてのトラフィックをドロップするデフォルトのポリシーを使用して、特定のアドレスと特定のポートからのトラフィックを明示的に許可するルールが作成されます。
netsh
コマンドライン ツールを使用するか、Windows アプリケーションを通じてWindows Firewallを構成できます。 Windows Server 2008 では、このアプリケーションはWindows Firewall With Advanced Security 内のAdministrative Tools です。以前のバージョンの Windows Server では、 System and Securityコントロール パネルからWindows Firewallアプリケーションにアクセスします。
このドキュメントの手順では、 netsh
コマンドライン ツールを使用します。
パターン
このセクションでは、MongoDB の配置で使用するためにWindows Firewallを構成するための多くのパターンと例を紹介します。 port
構成設定を使用して別のポートを構成した場合は、それに応じてルールを変更する必要があります。
mongod.exe
インスタンスとの間のトラフィック
このパターンは、mongod.exe
スタンドアロン インスタンス として、または レプリカセット の一部として実行されているすべての インスタンスに適用されます。このパターンの目的は、アプリケーション サーバーからmongod.exe
インスタンスへのトラフィックを明示的に許可することです。
netsh advfirewall firewall add rule name="Open mongod port 27017" dir=in action=allow protocol=TCP localport=27017
このルールにより、すべての受信トラフィックは27017
へのポートに許可されます。これにより、アプリケーション サーバーはmongod.exe
インスタンスに接続できるようになります。
Windows Firewall では、次の例のように、特定のポートではなくアプリケーション全体に対してネットワーク アクセスを有効にすることもできます。
netsh advfirewall firewall add rule name="Allowing mongod" dir=in action=allow program=" C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe"
次の呼び出しで、 mongos.exe
サーバーのすべてのアクセスを許可できます。
netsh advfirewall firewall add rule name="Allowing mongos" dir=in action=allow program=" C:\Program Files\MongoDB\Server\3.4\bin\mongos.exe"
mongos.exe
インスタンスとの間のトラフィック
mongos.exe
インスタンスは、 シャーディングされたクラスターのクエリ ルーティングを提供します。 クライアントはmongos.exe
インスタンスに接続します。これはクライアントの観点から見るとmongod.exe
インスタンスとして動作します。 次に、 mongos.exe
は、シャーディングされたクラスターのコンポーネントであるすべてのmongod.exe
インスタンスに接続します。
これらのインスタンスとの間で、レプリカセットのノードであるmongod.exe
インスタンスとの間でトラフィックを許可するには、同じWindows Firewallコマンドを使用します。
netsh advfirewall firewall add rule name="Open mongod shard port 27018" dir=in action=allow protocol=TCP localport=27018
MongoDB Config Server との間のトラフィック
コンフィギュレーションサーバーは、シャーディングされたクラスターのメタデータを保存する コンフィギュレーションデータベースをホストします。 各本番クラスターには、 mongod --configsvr
オプションを使用して開始された 3 つの構成サーバーがあります。 [1]構成サーバーはポート27019
上の接続をリッスンします。 その結果、次のWindows Firewallルールをコンフィギュレーションサーバーに追加して、他のコンフィギュレーションサーバーへの接続用にポート27019
での受信接続と送信接続を許可します。
netsh advfirewall firewall add rule name="Open mongod config svr port 27019" dir=in action=allow protocol=TCP localport=27019
さらに、コンフィギュレーションサーバーは、クラスター内のすべてのmongos.exe
インスタンスとクラスター内のすべてのmongod.exe
インスタンスからの着信接続を許可する必要があります。 次のようなルールを追加します。
netsh advfirewall firewall add rule name="Open mongod config svr inbound" dir=in action=allow protocol=TCP remoteip=<ip-address> localport=27019
<ip-address>
を、 mongos.exe
インスタンスとシャードmongod.exe
インスタンスのアドレスに置き換えます。
[1] | また、構成ファイルのclusterRole 設定にconfigsvr 値を使用してコンフィギュレーションサーバーを実行することもできます。 |
MongoDB シャード サーバーとの間のトラフィック
シャード サーバーの場合、 mongod --shardsvr
[2]設定のclusterRole
shardsvr
Windows Firewallで実行中のデフォルトのポート番号は27018
であるため、トラフィックが と各シャードからの場合
netsh advfirewall firewall add rule name="Open mongod shardsvr inbound" dir=in action=allow protocol=TCP remoteip=<ip-address> localport=27018 netsh advfirewall firewall add rule name="Open mongod shardsvr outbound" dir=out action=allow protocol=TCP remoteip=<ip-address> localport=27018
<ip-address>
仕様をすべてのmongod.exe
インスタンスの IP アドレスに置き換えます。 これにより、構成レプリカセット ノードを含むすべてのシャード間の受信および送信トラフィックを許可し、
シャードのレプリカセット内のすべての
mongod.exe
インスタンス。他のシャード内のすべての
mongod.exe
インスタンス。 [3]
さらに、シャードは次の送信接続を行える必要があります。
すべての
mongos.exe
インスタンス。: コンフィギュレーションサーバー内のすべての
mongod.exe
インスタンス。
次のようなルールを作成し、 <ip-address>
をコンフィギュレーションサーバーとmongos.exe
インスタンスのアドレスに置き換えます。
netsh advfirewall firewall add rule name="Open mongod config svr outbound" dir=out action=allow protocol=TCP remoteip=<ip-address> localport=27018
[2] | 構成ファイルで、 clusterRole 設定にshardsvr 値を使用してシャードサーバー オプションを指定することもできます。 シャード ノードは、多くの場合、デフォルト ポートを使用する従来のレプリカセットでもあります。 |
[3] | チャンク操作とバランシング操作を容易に行うために、クラスター内のすべてのシャードが他のすべてのシャードと通信できる必要があります。 |
監視システムへのアクセスの提供
で実行中のmongostat
--discover
診断ツールは、コンフィギュレーションサーバー、シャード サーバー、mongos.exe
インスタンスなど、クラスターのすべてのコンポーネントにアクセスできる必要があります。
Windows ファイアウォール構成の管理
このセクションでは、 netsh
を管理および使用するための基本的な操作の数が含まれています。 GUI フロントエンドを使用してWindows Firewallを管理できますが、すべての主要機能にアクセスするにはnetsh
からアクセスします。
デフォルトの MongoDB ポートの Windows ファイアウォール ルールを削除
mongod.exe
トラフィックを許可しているファイアウォール ルールを削除するには:
netsh advfirewall firewall delete rule name="Open mongod port 27017" protocol=tcp localport=27017 netsh advfirewall firewall delete rule name="Open mongod shard port 27018" protocol=tcp localport=27018
すべての Windows ファイアウォール ルールを一覧表示する
すべてのWindows Firewallルールの一覧を返すには以下を行います。
netsh advfirewall firewall show rule name=all
Windows ファイアウォールをリセットする
Windows Firewallルールをリセットするには:
netsh advfirewall reset
Windows ファイアウォール ルールのバックアップと復元
大規模なシステムの管理を簡素化するために、Windows ファイアウォール ルールをエクスポートまたはインポートできます。
すべての Windows ファイアウォール ルールをエクスポートするには、次のコマンドを実行します。
netsh advfirewall export "C:\temp\MongoDBfw.wfw" "C:\temp\MongoDBfw.wfw"
を選択したパスに置き換えます。Windows ファイアウォール ルールをインポートするには、次のコマンドを実行します。
netsh advfirewall import "C:\temp\MongoDBfw.wfw" "C:\temp\MongoDBfw.wfw"
を Windows ファイアウォール ルールを含むファイルへのパスに置き換えます。