Iptables与Firewalld防火墙
-
防火墙管理工具

从RHEL 7系统开始,firewalld防火墙正式取代了iptables防火墙。对于接触Linux系统比较早或学习过RHEL 5/6系统的读者来说,当他们发现曾经掌握的知识在RHEL 7/8中不再适用,需要全新学习firewalld时,难免会有抵触心理。其实,iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。换句话说,当前在Linux系统中其实存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。
-
Iptables
ptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
在进行路由选择前处理数据包(PREROUTING);
处理流入的数据包(INPUT);
处理流出的数据包(OUTPUT);
处理转发的数据包(FORWARD);
在进行路由选择后处理数据包(POSTROUTING)
iptables中常用的参数以及作用
参数 作用 -P 设置默认策略 -F 清空规则链 -L 查看规则链 -A 在规则链的末尾加入新规则 -I num 在规则链的头部加入新规则 -D num 删除某一条规则 -s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外 -d 匹配目标地址 -i 网卡名称 匹配从这块网卡流入的数据 -o 网卡名称 匹配从这块网卡流出的数据 -p 匹配协议,如TCP、UDP、ICMP --dport num 匹配目标端口号 --sport num 匹配来源端口号
Firewalld
firewalld(Dynamic Firewall Manager of Linux systems)服务是默认的防火墙配置管理工具,也叫Linux系统的动态防火墙管理器,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
终端管理工具
firewall-cmd命令中使用的参数以及作用
参数 作用 --get-default-zone 查询默认的区域名称 --set-default-zone=<区域名称> 设置默认的区域,使其永久生效 --get-zones 显示可用的区域 --get-services 显示预先定义的服务 --get-active-zones 显示当前正在使用的区域与网卡名称 --add-source= 将源自此IP或子网的流量导向指定的区域 --remove-source= 不再将源自此IP或子网的流量导向某个指定区域 --add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域 --change-interface=<网卡名称> 将某个网卡与区域进行关联 --list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息 --list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息 --add-service=<服务名> 设置默认区域允许该服务的流量 --add-port=<端口号/协议> 设置默认区域允许该端口的流量 --remove-service=<服务名> 设置默认区域不再允许该服务的流量 --remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量 --reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 --panic-on 开启应急状况模式 --panic-off 关闭应急状况模式 Runtime:当前立即生效,重启后失效。
Permanent:当前不生效,重启后生效。
使用firewall-cmd命令实现端口号转发的格式有点长,为同学们总结好了:
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>、
# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10富规则的设置:
富规则也叫复规则。表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。比如,我们可以在firewalld服务中配置一条富规则,使其拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务(22端口):
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
图形管理工具
它是firewalld防火墙配置管理工具的GUI图形用户界面版本,几乎可以实现所有以命令行来执行的操作。毫不夸张的说,即使读者没有扎实的Linux命令基础,也完全可以通过它来妥善配置RHEL 8中的防火墙策略。但在系统默认情况下firewall-config命令是没有被提供的,我们需要自行用dnf命令进行安装,所以需要先配置下软件仓库才行。# dnf install firewall-config
- 书本笔记截图
![]()


浙公网安备 33010602011771号