On this page
为 MongoDB 配置 Windows netsh 防火墙
在本页面
在 Windows Server 系统上,netsh程序提供了用于 ManagementWindows 防火墙的方法。这些防火墙规则使 Management 员可以控制哪些主机可以连接到系统,并通过限制可以连接到系统的主机来限制风险。
本文档概述了 Windows 防火墙的基本配置。使用这些方法作为大型网络组织的起点。有关 MongoDB 的安全实践和风险 Management 的详细概述,请参阅Security。
See also
Windows Firewall Microsoft 提供的文档。
Overview
Windows 防火墙按照由规则类型确定的 Sequences 处理规则,并按以下 Sequences 进行解析:
Windows Service HardeningConnection security rulesAuthenticated Bypass RulesBlock RulesAllow RulesDefault Rules
默认情况下,Windows 防火墙中的策略允许所有出站连接并阻止所有传入连接。
给定所有 MongoDB 进程的default ports,您必须配置网络规则,以允许应用程序与适当的mongod.exe和mongos.exe实例之间仅仅进行必需的通信。
本文档中概述的配置更改将使用默认策略创建规则,该规则明确允许来自特定地址和特定端口的流量,该策略将丢弃所有未明确允许的流量。
您可以使用netsh命令行工具或通过 Windows 应用程序配置 Windows 防火墙。在 Windows Server 2008 上,此应用程序是“Management 工具”中的“具有高级安全性的 Windows 防火墙”。在 Windows Server 的早期版本上,在“系统和安全性”控制面板中访问 Windows 防火墙应用程序。
本文档中的过程使用netsh命令行工具。
Patterns
本部分包含许多模式和示例,这些示例和示例用于配置 Windows 防火墙以用于 MongoDB 部署。如果使用port配置设置配置了其他端口,则需要相应地修改规则。
往返 mongod.exe 实例的流量
此模式适用于作为独立实例或replica set的一部分运行的所有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 防火墙还允许为整个应用程序而不是特定端口启用网络访问,如以下示例所示:
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实例为sharded clusters提供查询路由。Client 端连接到mongos.exe实例,从 Client 端的角度来看,它们充当mongod.exe实例。 mongos.exe依次连接到作为分片群集组件的所有mongod.exe实例。
使用相同的 Windows 防火墙命令来允许与这些实例之间的通信,就像从作为副本集成员的mongod.exe实例进行通信一样。
netsh advfirewall firewall add rule name="Open mongod shard port 27018" dir=in action=allow protocol=TCP localport=27018
往返 MongoDB Config 服务器的流量
配置服务器托管config database,该config database存储分片群集的元数据。每个生产群集具有三个配置服务器,这些服务器使用mongod --configsvr选项启动。 [1]配置服务器侦听端口27019上的连接。结果,将以下 Windows 防火墙规则添加到配置服务器,以允许端口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值运行时默认端口号是27018,因此必须配置以下 Windows 防火墙规则,以允许进出每个分片的流量:
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值来指定分片服务器选项。分片成员通常也是使用默认端口的常规副本集。 |
为监控系统提供访问权限
mongostat诊断工具与--discover一起运行时,需要能够访问群集的所有组件,包括配置服务器,分片服务器和mongos.exe实例。
在版本 3.6 中进行了更改:MongoDB 3.6 删除了 MongoDB 弃用的 HTTP 接口和 REST API。
Management 和维护 Windows 防火墙配置
本节包含一些用于 Management 和使用netsh的基本操作。虽然您可以使用 GUI 前端来 ManagementWindows 防火墙,但可以从netsh访问所有核心功能。
删除所有 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 防火墙规则的列表:
netsh advfirewall firewall show rule name=all
重置 Windows 防火墙
重置 Windows 防火墙规则:
netsh advfirewall reset
备份和还原 Windows 防火墙规则
为了简化大型系统集合的 Management,您可以在 Windows 上非常轻松地从不同的服务器导出或导入防火墙系统规则:
使用以下命令导出所有防火墙规则:
netsh advfirewall export "C:\temp\MongoDBfw.wfw"
将"C:\temp\MongoDBfw.wfw"替换为您选择的路径。您可以使用以下格式的命令来导入使用此操作创建的文件:
netsh advfirewall import "C:\temp\MongoDBfw.wfw"