firewalld

firewalld用于系统防火墙的控制,通过对iptables的底层封装简化了防火墙规则的管理。

查看规则

列出所有区域的规则

firewall-cmd --list-all-zones

列出单个区域的规则

firewall-cmd --list-all --zone {{ 区域名称 }}

所有持久化的规则都会保存在/etc/firewalld/zones/目录中,以区域名称划分文件名,格式如下:

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port protocol="tcp" port="9090"/>
  <port protocol="tcp" port="7890"/>
  <port protocol="tcp" port="7891"/>
</zone>

添加规则

例子:开启8080端口的tcp协议白名单

firewall-cmd --add-port=8080/tcp --zone=public

这种方式开启的防火墙策略只是临时生效,当firewalld服务发生重新加载时会失效。为了使规则持久化,可以附加参数--permanent,当命令执行后,会在/etc/firewalld/zones/public.xml中生成对应的规则项(也可以直接修改配置文件)。这个时候规则还未在iptables中生效,通过以下命令使firewalld重新加载配置规则:

firewall-cmd --reload

除了通过端口添加规则外,还可通过服务名添加规则

例子:开启sshd服务的白名单访问

firewall-cmd --add-service=ssh --zone=public --permanent

移除规则

例子:移除本地8080端口的tcp规则

firewall-cmd --delete-port=8080/tcp --zone=public --permanent
firewall-cmd --reload

最后更新于