文档菜单
文档首页
/
MongoDB 手册
/ / /

配置 Windowsnetsh 防火墙(自管理部署)

本页内容

  • 概述
  • 模式
  • 管理 Windows 防火墙配置

在Windows服务器系统上,netsh程序提供了管理Windows防火墙的方法。这些防火墙规则使得管理员能够控制哪些主机可以连接到系统,并限制通过限制可以连接到系统的主机来降低风险暴露。

本文档概述了基本的Windows防火墙配置。将这些方法作为您更大规模网络组织的一个起点。有关MongoDB的安全实践和风险管理的详细概述,请参阅安全.

提示

另请参阅

Windows防火墙微软的文档。

Windows防火墙按规则类型排序并按以下顺序解析规则

  1. Windows服务加固

  2. 连接安全规则

  3. 身份验证绕过规则

  4. 阻止规则

  5. 允许规则

  6. 默认规则

默认情况下,Windows防火墙的策略允许所有出站连接并阻止所有入站连接。

鉴于所有MongoDB进程的默认端口,您必须配置网络规则,允许您的应用程序与适当的mongod.exemongos.exe实例之间的通信。

本文档中概述的配置更改将创建规则,明确允许来自特定地址和特定端口的流量,使用默认策略拒绝所有未明确允许的流量。

您可以使用netsh命令行工具或通过Windows应用程序配置Windows防火墙。在Windows Server 2008上,此应用程序位于管理工具中的Windows防火墙(高级安全)。在Windows Server的早期版本中,请在系统和安全控制面板中访问Windows防火墙应用程序。

本文档中的程序使用netsh命令行工具。

本节包含了一些配置用于MongoDB部署的Windows防火墙的模式和示例。如果您已使用port配置设置配置了不同的端口,则需要相应地修改规则。

此模式适用于所有作为独立实例运行或作为副本集一部分运行的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 实例,从客户端的角度看,这些实例表现得像 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

配置服务器,托管存储分片集群元数据的配置数据库。每个生产集群有三个配置服务器,使用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值来运行配置服务器。

对于分片服务器,运行为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地址。这允许您允许包括构成副本集成员在内的所有分片之间的入站和出站流量

此外,分片还需要能够向以下内容进行出站连接

创建一条类似以下规则的规则,并将 <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 实例。

本节包含管理和使用 netsh 的多个基本操作。虽然您可以使用GUI前端来管理 Windows防火墙,但所有核心功能都可以通过 netsh 访问。

删除允许 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 防火墙 规则的列表

netsh advfirewall firewall show rule name=all

重置 Windows 防火墙 规则

netsh advfirewall reset

为了简化大型系统的管理,您可以导出或导入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防火墙规则的文件路径。

返回

使用 Linux iptables