OPENING THE FIREWALL UP FOR SALT
Salt master使用AES加密的ZeroMQ连接与minions通信。 这些通信是通过TCP端口4505和4506完成的,TCP端口4505和4506只需要在master设备上可访问。 本文档概述了防火墙配置规则的建议。也可以选择浏览在github上的一份相同的材料 OPENING THE FIREWALL UP FOR SALT
注: 不需要在Salt minions上进行防火墙配置。 这些更改仅涉及Master节点。
FEDORA 18 AND BEYOND / RHEL 7 / CENTOS 7
从Fedora 18开始FirewallD就是用于动态管理主机上的防火墙规则的工具。 它支持IPv4/6设置以及运行时和永久配置的分离。 要与FirewallD交互,请使用命令行客户端 firewall-cmd
。
firewall-cmd example:
firewall-cmd --permanent --zone=<zone> --add-port=4505-4506/tcp
网络区域zone定义了不同网络的信任安全级别。 用户应为其设置选择一个适当的区域值。 常用的zone值包括:drop,block,public,external,dmz,work,home,internal,trusted。
进行规则更改后不要忘记重新加载配置:
firewall-cmd --reload
RHEL 6 / CENTOS 6
与一些Linux发行版一起打包的lokkit命令使得通过命令行打开iptables防火墙端口变得非常简单。 请注意不要忽略打开ssh端口,避免被锁定对服务器的访问。
lokkit example:
lokkit -p 22:tcp -p 4505:tcp -p 4506:tcp
system-config-firewall-tui
命令则提供了一个基于文本的界面来修改防火墙规则。
system-config-firewall-tui:
system-config-firewall-tui
OPENSUSE
Salt把使用的防火墙放行规则存放在 /etc/sysconfig/SuSEfirewall2.d/services/salt
, 启动规则的方法是:
SuSEfirewall2 open
SuSEfirewall2 start
如果你有一个较旧的Salt包,其中不包含上述配置文件,则SuSEfirewall2命令可以简单地通过命令行放行iptables防火墙端口。
SuSEfirewall example:
SuSEfirewall2 open EXT TCP 4505
SuSEfirewall2 open EXT TCP 4506
YaST2中的防火墙模块提供了一个基于文本的界面来修改防火墙。
YaST2:
yast2 firewall
WINDOWS
Windows防火墙是Microsoft Windows的默认组件,提供防火墙和数据包筛选。 Windows中也有许多第三方防火墙,其中一些使用Windows防火墙中的规则。 如果遇到问题,请参阅供应商的特定文档以打开所需的端口。
可以使用Windows界面或命令行配置Windows防火墙。
Windows Firewall (interface):
- 通过在命令提示符下或运行对话框中键入
wf.msc
打开Windows防火墙接口(Windows Key + R) - 导航到控制台树中的入站规则
- 通过单击“操作”区域中的“新建规则…”添加新规则
- 将规则类型更改为端口。 点击下一步
- 将协议设置为TCP并指定本地端口4505-4506。 点击下一步
- 将操作设置为允许连接。 点击下一步
- 将规则应用于域,私有和公共。 点击下一步
- 为新规则指定名称,即:Salt。 你还可以添加说明信息。 单击完成
Windows Firewall (command line):
可以通过执行单个命令来创建Windows防火墙规则。 从命令行或运行提示符运行以下命令:
netsh advfirewall firewall add rule name="Salt" dir=in action=allow protocol=TCP localport=4505-4506
IPTABLES
不同的Linux发行版将他们的iptables(也称为netfilter)规则存储在不同的地方,这使得很难标准化防火墙配置文档。 下面是一些较常见的存放地点:
Fedora / RHEL / CentOS:
/etc/sysconfig/iptables
Arch Linux:
/etc/iptables/iptables.rules
Debian
参考这份说明资料: https://wiki.debian.org/iptables
-A INPUT -m state --state new -m tcp -p tcp --dport 4505:4506 -j ACCEPT
Ubuntu
Salt 把防火墙放行规则配置文件存放在 /etc/ufw/applications.d/salt.ufw,使用以下命令启用:
ufw allow salt
PF.CONF
BSD系列操作系统使用 packet filter 包过滤器(pf)。 以下示例描述了访问Salt master所需添加到pf.conf的内容。
pass in on $int_if proto tcp from any to $int_if port 4505:4506
一旦对pf.conf进行了变更,就需要重新加载规则。 这可以使用pfctl命令完成。
pfctl -vf /etc/pf.conf
WHITELIST COMMUNICATION TO MASTER
在某些情况下,可能需要有选择地允许来自特定主机或网络的Minion流量进入Salt Master。 我想到的第一个场景是为了防止出现安全问题导致Master收到的不需要的流量,但另一种情况是在环境中安装的Salt版本之间存在向后不兼容的更改时处理Minion升级的问题。
以下是要在Master上设置的Linux iptables规则集示例:
# Allow Minions from these networks
-I INPUT -s 10.1.2.0/24 -p tcp --dports 4505:4506 -j ACCEPT
-I INPUT -s 10.1.3.0/24 -p tcp --dports 4505:4506 -j ACCEPT
# Allow Salt to communicate with Master on the loopback interface
-A INPUT -i lo -p tcp --dports 4505:4506 -j ACCEPT
# Reject everything else
-A INPUT -p tcp --dports 4505:4506 -j REJECT
注:这里要注意的重要一点是salt命令需要在loopback接口上与salt-master的监听网络套接字进行通信。 如果没有这个,你将看不到来自master的传出Salt流量,即使是简单的salt’*'test.version,因为salt客户端从未到达salt-master告诉它执行管理命令。