欧阳简之 > CentOS7.x 防火墙firewalld相关命令

热爱代码,对每一行代码保持一颗敬畏之心。

系统环境:CentOS Linux release 7.3.1611 (Core)

查看firewall服务状态

# 启动 firewalld 服务
systemctl start firewalld

# 停止 firewalld 服务
systemctl stop firewalld

# 重重启 firewalld 服务
systemctl restart firewalld

# 设置开机自启动
systemctl enable firewalld

区域介绍

区域(zone)简单的解释就是firewalld预先准备了几套防火墙策略,可以根据不同需求而选择合适的策略,默认是public。

默认带的区域(zone)及策略规则如下:

trusted 允许所有的数据包
home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal 等同于home区域
work 拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block 拒绝流入的流量,除非与流出的流量相关
drop 拒绝流入的流量,除非与流出的流量相关

查看所有区域

firewall-cmd --get-zones

列出所有区域详细内容

firewall-cmd --list-all-zones

查询特定区域配置

firewall-cmd --zone=public --list-all

上面查询的是目前系统上的配置,要查询永久的配置则通过

firewall-cmd --zone=public --list-all --permanent

查看默认区域

firewall-cmd --get-default-zone

更改默认区域

firewall-cmd --set-default-zone=home

区域的服务

查看系统预设的服务

firewall-cmd --get-services

添加服务到指定的区域

# 添加http服务到public区域中
firewall-cmd --zone=public --add-service=http
# 如果要永久保存,需要加上--permanent属性
firewall-cmd --zone=public --permanent --add-service=http

查询永久保存的服务

firewall-cmd --zone=public --permanent --list-services

如果要添加自定义端口

# 添加
sudo firewall-cmd --zone=public --add-port=8080/tcp
# 永久保存
sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp

移除服务

firewall-cmd --zone=public --remove-service=http
firewall-cmd --zone=public --permanent --remove-service=http

firewall-cmd --zone=public --remove-port=8080/tcp
firewall-cmd --zone=public --permanent --remove-port=8080/tcp

自定义服务

cat > /etc/firewalld/services/web_demo.xml << EOF
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>web demo</short>
  <description>web demo for test</description>
  <port protocol="tcp" port="8080"/>
</service>
EOF

# 重载firewall
firewall-cmd --reload

# 查看服务
firewall-cmd --get-services

IP白名单

服务限制IP白名单

# 允许 172.23.7.0/24 使用 http 服務
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="172.23.7.0/24" service name="http" accept'

# 永久允许 172.23.7.0/24 使用 http 服務
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="172.23.7.0/24" service name="http" accept' --permanent

通用白名单,允许IP访问区域任何服务

# 将 172.23.7.100 加入 public 区域的白名单
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="172.23.7.100" accept'

# 永久将 172.23.7.100 加入 public 区域的白名单
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="172.23.7.100" accept' --permanent

防火墙规则变更需要重载firewalld服务:firewall-cmd --reload

tagged by none