在CentOS 7及更高版本中,系统的默认防火墙管理工具已经从iptables变为了firewalld。虽然在学习环境中我们可能会习惯于关闭防火墙,但在实际生产环境中,防火墙是不可或缺的,因此掌握基本的firewalld操作方式是非常必要的。
一、Firewalld概述
Firewalld防火墙是CentOS 7系统的默认防火墙管理工具,它取代了之前的iptables防火墙。Firewalld工作在网络层,属于包过滤防火墙。与iptables一样,firewalld也是用来管理防火墙的工具(属于用户态),用于定义防火墙的各种规则功能。其内部结构指向netfilter网络过滤子系统(属于内核态),通过它来实现包过滤防火墙功能。
二、firewalld的主要特点
- 支持网络区域所定义的网络链接以及接口安全等级的动态管理。这意味着您可以根据不同的网络区域和接口设置不同的安全策略,使网络安全更加灵活和强大。
- 支持IPv4、IPv6防火墙设置以及以太网桥(在某些高级服务可能会用到,比如云计算)。这意味着firewalld可以满足各种网络环境的需求,无论是IPv4还是IPv6,都能提供强大的防护功能。
- 拥有两种配置模式:运行时配置与永久配置。运行时配置允许您在系统运行时动态更改防火墙设置,而永久配置则将您的设置保存到配置文件中,以便在系统重启后仍然生效。
三、firewalld与iptables的区别 - iptables主要是基于接口来设置规则,从而判断网络的安全性。而firewalld则更进一步,它支持基于网络区域和接口的安全策略设置,使得安全防护更加细致和灵活。
- iptables的规则设置相对来说较为复杂,需要具备一定的技术基础才能熟练操作。而firewalld则提供了更加直观和易用的界面,使得即使是初学者也能快速上手。
- firewalld支持动态管理,可以根据网络环境和安全需求的变化自动调整防火墙设置。而iptables则需要手动修改规则文件,相对来说较为繁琐。
四、如何使用firewalld
使用firewalld需要先安装并启动firewalld服务。可以通过以下命令完成安装和启动:
安装命令:sudo yum install firewalld
启动命令:sudo systemctl start firewalld
停止命令:sudo systemctl stop firewalld
禁用命令:sudo systemctl disable firewalld
五、如何配置firewalld
配置firewalld可以通过命令行或图形界面完成。以下是一些常用的配置命令:
查看当前防火墙状态:sudo firewall-cmd —state
添加开放端口:sudo firewall-cmd —zone=public —add-port=80/tcp —permanent
删除开放端口:sudo firewall-cmd —zone=public —remove-port=80/tcp —permanent
添加允许的IP地址:sudo firewall-cmd —zone=public —add-source-address=192.168.1.100/32 —permanent
删除允许的IP地址:sudo firewall-cmd —zone=public —remove-source-address=192.168.1.100/32 —permanent
重新加载防火墙配置:sudo firewall-cmd —reload
查看持久配置:sudo firewall-cmd —list-all
查看开放的端口:sudo firewall-cmd —list-ports
查看允许的IP地址:sudo firewall-cmd —list-sources
查看默认区域:sudo firewall-cmd —get-default-zone
设置默认区域:sudo firewall-cmd —set-default-zone=public
添加服务到区域:sudo firewall-cmd —zone=public —add-service=http
删除服务:sudo firewall-cmd —zone=public —remove-service=http
添加自定义链:sudo firewall-cmd —direct —add-rule ipv4 filter INPUT 0 -p tcp —dport 22 -j ACCEPT
删除自定义链规则:sudo firewall-cmd —direct —remove-rule ipv4 filter INPUT 0 -p tcp —dport 22 -j ACCEPT
查看自定义链规则:sudo firewall-cmd —direct —get-all-rules ipv4 filter INPUT
查看所有的规则链和他们的规则顺序:sudo firewall-cmd —get-active-zones
disable或者enable一个特定的链: sudo firewall