在本页面
在现代Linux系统上,该iptables
程序提供了用于管理Linux内核netfilter
或网络数据包筛选功能的方法。这些防火墙规则使管理员可以控制哪些主机可以连接到系统,并通过限制可以连接到系统的主机来限制风险。
本文档概述了iptables
Linux上防火墙的基本防火墙配置。使用这些方法作为大型网络组织的起点。有关MongoDB的安全性实践和风险管理的详细概述,请参阅“ 安全性”。
iptables
配置规则分为多个链,描述了过滤和处理特定流量流的过程。链具有顺序,数据包必须通过链中较早的规则才能到达较晚的规则。本文档仅涉及以下两个链:
INPUT
OUTPUT
由于默认端口的所有MongoDB的过程,你必须配置允许网络规则只
需要您的应用程序和相应的沟通
mongod
和mongos
实例。
请注意,默认情况下,默认策略iptables
是允许所有连接和流量,除非明确禁用。本文档中概述的配置更改将使用默认策略创建规则,该规则明确允许来自特定地址和特定端口的流量,该策略将丢弃所有未明确允许的流量。在将iptables
规则正确配置
为仅允许要允许的流量之后,可以将默认策略更改为DROP。
本节包含许多模式和示例,这些模式和示例用于配置iptables
以与MongoDB部署一起使用。如果使用port
配置设置配置了其他端口,则需要相应地修改规则。
mongod
实例的流量¶此模式适用于mongod
作为独立实例或副本集的一部分运行的所有实例。
该模式的目标是明确允许流量mongod
从应用程序服务器到达
实例。在以下示例中,将其替换<ip-address>
为应用程序服务器的IP地址:
第一条规则允许所有来自<ip-address>
端口的传入流量27017
,这允许应用程序服务器连接到
mongod
实例。第二条规则,允许来自的传出流量mongod
到达应用程序服务器。
可选的
如果只有一台应用程序服务器,则可以用<ip-address>
IP地址本身替换
,例如:
198.51.100.55
。您也可以使用CIDR表示法来表达这一点
198.51.100.55/32
。如果您想允许更大范围的可能的IP地址,则可以/24
使用下列规范之一允许来自的流量<ip-address>
:
mongos
实例的流量¶mongos
实例为分片群集提供查询路由。客户端连接到mongos
实例,这些实例从客户端的角度看作为mongod
实例。依次,mongos
连接到mongod
作为分片群集组件的所有
实例。
使用相同的iptables
命令来允许往返于这些实例的流量,就像允许来自mongod
副本集成员的实例的流量一样。以往返于mongod实例的流量部分中概述的配置
为例。
配置服务器托管配置数据库,该数据库存储分片群集的元数据。配置服务器侦听端口上的连接
27019
。结果,将以下iptables
规则添加到配置服务器,以允许端口上的传入和传出连接
27019
,以连接到其他配置服务器。
更换<ip-address>
用的地址或地址空间中所有
的mongod
提供配置服务器。
此外,配置服务器需要允许来自mongos
群集中所有实例和群集中所有
mongod
实例的传入连接。添加类似于以下内容的规则:
分片服务器默认为端口号
27018
。您必须配置以下iptables
规则,以允许进出每个分片的流量:
用<ip-address>
all的IP地址替换规范
mongod
。这样,您就可以允许所有分片(包括组成副本集成员)之间的传入和传出流量:
此外,分片需要能够建立与以下各项的传出连接:
mongod
配置服务器中的所有实例。创建类似于以下内容的规则,然后将替换
<ip-address>
为配置服务器和mongos
实例的地址
:
[1] | 集群中的所有分片都需要能够与所有其他分片进行通信,以促进组块和平衡操作。 |
该mongostat
诊断工具在运行时
--discover
需要能够访问群集的所有组件,包括配置服务器,分片服务器和mongos
实例。
在版本3.6中进行了更改: MongoDB 3.6删除了MongoDB弃用的HTTP接口和REST API。
DROP
¶iptables
链的默认策略是允许所有流量。完成所有iptables
配置更改后,您
必须将默认策略更改为,DROP
以便上述未明确允许的所有流量将无法到达MongoDB部署的组件。发出以下命令来更改此策略:
iptables
的配置¶本节包含一些用于管理和使用的基本操作iptables
。有多种前端工具可以使某些方面的iptables
配置自动化,但是在核心部分,所有
iptables
前端都提供相同的基本功能:
iptables
规则持久化¶默认情况下,所有iptables
规则仅存储在内存中。系统重新启动时,防火墙规则将恢复为默认值。测试规则集并确保其有效控制流量后,可以使用以下操作来使规则集持久化。
在Red Hat Enterprise Linux,Fedora Linux和相关发行版上,您可以发出以下命令:
在Debian,Ubuntu和相关发行版上,可以使用以下命令将iptables
规则转储到
/etc/iptables.conf
文件中:
执行以下操作,恢复网络规则。
将此命令放置在您的rc.local
文件中,或/etc/network/if-up.d/iptables
通过其他类似操作放置在文件中
。
iptables
规则¶要列出所有当前应用的iptables
规则,请在系统外壳上使用以下操作。
iptables
规则¶如果在输入iptables
规则时犯了配置错误,或者仅需要恢复为默认规则集,则可以在系统外壳上使用以下操作来刷新所有规则:
如果已经使iptables
规则具有持久性,则需要在“ 使所有iptables规则保持持久性”部分中重复适当的过程
。