Firewalld防火墙

CentOS7/RHEL7是一个集合多款防火墙管理工具并存的系统。

Firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样。

Firewalld防火墙区域概念

相比于传统的防火墙管理工具还支持了动态更新技术并加入了“zone区域”的概念。

firewalld将所有网络流量划分为多个区域,从而简化防火墙管理。

根据数据包源IP地址或传入网络接口等条件,流量将转入相应区域的防火墙规则。

每个区域都可以具有自己要打开或者关闭的端口和服务列表。

Firewalld防火墙命令参数

Firewalld防火墙配置策略

需要注意firewalld的规则分两种状态:

runtime:运行时修改规则马上生效,但如果重启服务则马上失败,测试建议;

permanent:持久配置修改规则后需要reload重载服务才会生效,生产建议

启动firewalld防火墙,并加入开机自启动服务

systemctl start firewalld.service 
systemctl enable firewalld.service

防火墙基础配置

# 查看系统中目前已有的所有区域
[root@firewalld ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

# 通过--get-default-zone获取当前默认使用的区域
[root@firewalld ~]# firewall-cmd --get-default-zone
public

# 临时移除默认区域的规则策略
[root@firewalld ~]# firewall-cmd --remove-service=ssh --remove-service=dhcpv6-client
success

# 添加来源是10.0.0.0/24网段,将其加入白名单(更精细化控制使用富规则)
[root@firewalld ~]# firewall-cmd --add-source=10.0.0.0/24 --zone=trusted

# 检查当前活动的区域配置信息
[root@firewalld ~]# firewall-cmd --get-active-zone
public
  interfaces: eth0 eth1
trusted
  sources: 10.0.0.0/24
  
# 临时添加规则策略信息
[root@firewalld ~]# firewall-cmd --add-port=8080/tcp

# 永久添加规则策略信息
[root@firewalld ~]# firewall-cmd --add-port=8080/tcp --permanent
[root@firewalld ~]# firewall-cmd --reload
说明:永久添加的配置需要重载识别

# 临时添加多个端口信息
[root@firewalld ~]# firewall-cmd --add-port={80/tcp,8080/tcp}

# 永久添加多个端口信息
[root@firewalld ~]# firewall-cmd --add-port={80,8080}/tcp  --permanent
[root@firewalld ~]# firewall-cmd --reload
说明:永久添加的配置需要重载识别

[root@firewalld ~]# firewall-cmd --list-ports
80/tcp 8080/tcp

# 移除指定端口信息
[root@firewalld ~]# firewall-cmd --remove-port={80/tcp,8080/tcp} 

# 临时添加规则策略信息
[root@firewalld ~]# firewall-cmd --add-service=http

# 永久添加规则策略信息
[root@firewalld ~]# firewall-cmd --add-service=https --permanent
[root@firewalld ~]# firewall-cmd --reload
说明:永久添加的配置需要重载识别

# 临时添加多个端口信息
[root@firewalld ~]# firewall-cmd --add-service={http,https}

# 永久添加多个端口信息
[root@firewalld ~]# firewall-cmd --add-service={http,https} --permanent
[root@firewalld ~]# firewall-cmd --reload
说明:永久添加的配置需要重载识别

[root@firewalld ~]# firewall-cmd --list-services
http https

# 移除端口信息
[root@firewalld ~]# firewall-cmd --remove-port={http,https}

防火墙端口转发

端口转发是指传统的目标地址映射,实现外网访问内网资源,流量转发命令格式:
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
如果需要将当前的10.0.0.61:5555端口转发至后端172.16.1.9:22端口

开启masquerade,实现地址转换功能
# firewall-cmd --add-masquerade --permanent
配置转发规则信息
# firewall-cmd --permanent --zone=public --add-forward-port=port=6666:proto=tcp:toport=22:toaddr=172.16.1.9
# firewall-cmd --reload

Firewalld防火墙
http://www.jcwit.com/article/12/
作者
Carlos
发布于
2023年12月8日
许可协议