有没有一种方法可以只在RHEL7中保存防火墙?


11

我开始使用RHEL7,并了解一些有关systemd的更改。

有没有一种方法可以/sbin/service iptables save在firewalld中执行?

$ /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

我可以从文档中找到最接近的并行度是--reload

Reload the firewall without loosing state information:
$ firewall-cmd --reload

但是它没有明确说明是否保存。

Answers:


21

RHEL 7.0中的firewalld版本没有“保存”脚本,也无法将正在运行的防火墙配置复制到永久配置。通过添加--permanent到进行更改的命令行,可以使用firewalld保存防火墙更改。没有它,您所做的任何更改都是暂时的,并且在系统重新启动时将丢失。

例如:

firewall-cmd --add-service=http                 # Running config
firewall-cmd --add-service=http --permanent     # Startup config

更高版本(RHEL 7之后)的firewalld确实包含一种保存运行配置的方法,并且该方法现在在Fedora和RHEL 7.1中可用。在这种情况下,命令很简单:

firewall-cmd --runtime-to-permanent

2
为了继续迈克尔·汉普顿的评论,我发现我必须在运行“ firewall-cmd --runtime-to-permanent”后重新启动firewalld服务(“ systemctl restart firewalld”),以便正确保存防火墙规则,尤其是在必须通过iptables手动删除一些规则之后。似乎Firewalld缓存了一些规则,因此,“ firewall-cmd --reload”可能会重新设置应通过“ --runtime-to-permanent”命令删除的来自firewalld的规则。
安东尼阮

2
请注意,-runtime-to-permanent命令不会在制表符补全中显示,但实际上在其中(已在CentOS 7.5系统上测试)。
dodexahedron

@AntonyNguyen,当firewalld管理规则时,您不应使用iptables命令。FIrewalld无法得知更改(它需要定期进行轮询,并且由于防火墙的设计而使防火墙的性能下降,而防火墙由nftables进行了固定)使用'firewall-cmd --direct --passthrough ipv4 -A FORWARD ... -j
DROP'– AdamKalisz

0

我需要添加SIP服务和一些IP

在目录/ usr / lib / firewalld / services /中,我基于其他xml服务文件添加了sip.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SIP</short>
  <description>This is SIP, Yo! </description>
  <port protocol="udp" port="5060"/>
</service>

然后我向防火墙添加了SIP服务

# firewall-cmd --add-service=sip --permanent 

然后我将IP添加到/etc/firewalld/zones/public.xml中的服务

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description></description>
  <service name="dhcpv6-client"/>
  <service name="http"/>
  <service name="ssh"/>
  <service name="https"/>

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip"/>
    <accept/>
  </rule>

</zone>

如果添加日志记录级别,也可以添加LOG

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip" 
    <log prefix="sip" level="info"/>
    <accept/>
  </rule>

在将规则添加到区域后,执行

# firewall-cmd --reload

检查您的iptables-应该一切准备就绪。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.