配置 Windowsnetsh
防火墙(自管理部署)
在Windows服务器系统上,netsh
程序提供了管理Windows防火墙的方法。这些防火墙规则使得管理员能够控制哪些主机可以连接到系统,并限制通过限制可以连接到系统的主机来降低风险暴露。
本文档概述了基本的Windows防火墙配置。将这些方法作为您更大规模网络组织的一个起点。有关MongoDB的安全实践和风险管理的详细概述,请参阅安全.
概述
Windows防火墙按规则类型排序并按以下顺序解析规则
Windows服务加固
连接安全规则
身份验证绕过规则
阻止规则
允许规则
默认规则
默认情况下,Windows防火墙的策略允许所有出站连接并阻止所有入站连接。
鉴于所有MongoDB进程的默认端口,您必须配置网络规则,允许您的应用程序与适当的mongod.exe
和mongos.exe
实例之间的通信。
本文档中概述的配置更改将创建规则,明确允许来自特定地址和特定端口的流量,使用默认策略拒绝所有未明确允许的流量。
您可以使用netsh
命令行工具或通过Windows应用程序配置Windows防火墙
。在Windows Server 2008上,此应用程序位于管理工具
中的Windows防火墙(高级安全)
。在Windows Server的早期版本中,请在系统和安全
控制面板中访问Windows防火墙
应用程序。
本文档中的程序使用netsh
命令行工具。
模式
本节包含了一些配置用于MongoDB部署的Windows防火墙
的模式和示例。如果您已使用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防火墙
还允许为整个应用程序启用网络访问,而不是特定端口,如下例所示
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 防火墙 命令,允许这些实例的流量。
netsh advfirewall firewall add rule name="Open mongod shard port 27018" dir=in action=allow protocol=TCP localport=27018
到和从 MongoDB 配置服务器的流量
配置服务器,托管存储分片集群元数据的配置数据库。每个生产集群有三个配置服务器,使用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 值来指定分片服务器选项。分片成员通常是使用默认端口的常规副本集。 |
[3] | 集群中的所有分片都需要能够与其他所有分片通信,以促进 数据块 和平衡操作。 |
为监控系统提供访问权限
在运行带有 --discover
选项的 mongostat
诊断工具时,需要能够到达集群的所有组件,包括配置服务器、分片服务器以及 mongos.exe
实例。
管理Windows防火墙配置
本节包含管理和使用 netsh
的多个基本操作。虽然您可以使用GUI前端来管理 Windows防火墙,但所有核心功能都可以通过 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 防火墙 规则的列表
netsh advfirewall firewall show rule name=all
重置 Windows 防火墙
重置 Windows 防火墙 规则
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防火墙规则的文件路径。