系统环境: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