Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

为自管理部署配置Windowsnetsh 防火墙

在此页面上

  • Overview
  • 模式
  • 管理 Windows 防火墙配置

在 Windows Server 系统上,netsh 程序提供管理 Windows Firewall的方法。利用这些防火墙规则,管理员将能够控制哪些主机可以连接到系统,并通过限制可以连接到系统的主机来限制风险暴露。

本文档概述了基本的Windows Firewall配置。 使用这些方法作为大型网络组织的点。 有关MongoDB安全实践和风险管理的详细概览,请参阅安全性。

提示

另请参阅:

Windows Firewall 按规则类型确定的顺序处理规则,并按以下顺序进行解析:

  1. Windows Service Hardening

  2. Connection security rules

  3. Authenticated Bypass Rules

  4. Block Rules

  5. Allow Rules

  6. Default Rules

默认情况下,Windows Firewall 中的策略支持所有出站连接,并阻止所有传入连接。

考虑到所有 MongoDB 进程的默认端口,您必须配置网络规则,以便允许应用程序与相应的 mongod.exemongos.exe 实例之间进行必要的通信。

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

可以使用 netsh 命令行工具或通过 Windows 应用程序配置 Windows Firewall。在 Windows Server 2008 中,该应用程序是 Administrative Tools 中的 Windows Firewall With Advanced Security。在以前版本的 Windows Server 上,使用 System and Security 控制面板中的 Windows Firewall 应用程序。

此文档中的过程使用 netsh 命令行工具。

本部分包含许多用于配置 Windows Firewall 以与 MongoDB 部署结合使用的模式和示例。如果使用 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 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 实例,从客户端的角度来看,这些实例的行为与 mongod.exe 实例类似。反过来,mongos.exe 可连接到作为分片集群组成部分的所有 mongod.exe 实例。

使用相同的 Windows Firewall 命令允许流量进出这些实例,就像副本集节点的 mongod.exe 实例一样。

netsh advfirewall firewall add rule name="Open mongod shard port 27018" dir=in action=allow protocol=TCP localport=27018

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

对于分片服务器,使用 mongod --shardsvr 运行[2] 由于在使用 clusterRole 设置的 shardsvr 值运行时,默认端口号为 27018,因此,必须配置以下 Windows Firewall 规则以允许流量在每个分片上往返:

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] 还可以使用 shardsvr 值为配置文件中的 clusterRole 设置指定分片服务器选项。分片成员通常也是使用默认端口的传统副本集。
[3] 集群中的所有分片都需要能够与所有其他分片通信,以促进数据段和均衡操作。

mongostat 诊断工具在指定 --discover 运行时,需要能够访问集群的所有组件,包括配置服务器、分片服务器和 mongos.exe 实例。

本部分包含管理和使用 netsh 的一些基本操作。虽然可以使用 GUI 前端来管理 Windows Firewall,但所有核心功能都可以从 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 Firewall 规则的列表:

netsh advfirewall firewall show rule name=all

要重置 Windows Firewall 规则:

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 防火墙规则的文件的路径。

后退

Use Linux iptables