firewalld

FirewallD 是 iptables 的一个封装,可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。虽然 iptables 命令仍可用于 FirewallD,但建议使用 FirewallD 时仅使用 FirewallD 命令。

安装和管理

1. 启动服务,并在系统引导时启动该服务

$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld

2. 停止并禁用

$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld

3.检查防火墙状态

$ sudo firewall-cmd --state

4.要查看 FirewallD 守护进程的状态

$ sudo systemctl status firewalld

5.重新加载 FirewallD 配置:

$ sudo firewall-cmd --reload

配置FireWallD

配置文件位于两个目录中:

  • /usr/lib/FirewallD 下保存默认配置,如默认区域和公用服务。 避免修改它们,因为每次 firewall 软件包更新时都会覆盖这些文件。
  • /etc/firewalld 下保存系统配置文件。 这些文件将覆盖默认配置。

配置集

FirewallD 使用两个配置集:“运行时”和“持久”。 在系统重新启动或重新启动 FirewallD 时,不会保留运行时的配置更改,而对持久配置集的更改不会应用于正在运行的系统。

默认情况下,firewall-cmd 命令适用于运行时配置,但使用 --permanent 标志将保存到持久配置中。要添加和激活持久性规则,你可以使用两种方法之一。

1. 将规则同时添加到持久规则集和运行时规则集中。

$ sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --zone=public --add-service=http

2. 将规则添加到持久规则集中并重新加载 FirewallD。

$ sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --reload

reload 命令会删除所有运行时配置并应用永久配置。因为 firewalld 动态管理规则集,所以它不会破坏现有的连接和会话。

允许或者拒绝任意端口/协议

$ sudo firewall-cmd --zone=public --add-port=12345/tcp --permanent
$ sudo firewall-cmd --zone=public --remove-port=12345/tcp --permanent

 

丰富规则

允许来自主机 192.168.0.14 的所有 IPv4 流量。

$ sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept'

拒绝来自主机 192.168.1.10 到 22 端口的 IPv4 的 TCP 流量。

$ sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject'

常用用法:

允许192.168.142.166访问50070端口

$ firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="192.168.31.111" port protocol="tcp" port="50070" accept"
$ firewall-cmd --reload

  

配置文件:

firewalld 配置文件所在路径/etc/firewalld/zones/public.xml

<?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="80"/>
  <rule family="ipv4">
    <source address="192.168.31.111"/>
    <port protocol="tcp" port="50070"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="192.168.31.112"/>
    <port protocol="tcp" port="50070"/>
    <accept/>
  </rule>
</zone>
原文地址:https://www.cnblogs.com/zenan/p/9592354.html