CentOS 7中的firewall(防火墙)是一个强大且灵活的安全工具,用于保护系统免受未经授权的访问,以下是对CentOS 7中firewall的详细介绍:
firewalld的基本概念
1、动态管理:firewalld提供了动态管理的防火墙服务,支持网络区域(zones),以指定网络连接的信任级别。
2、区域(Zone):区域定义了网络连接的可信等级,从不信任到信任依次排序,包括丢弃、阻塞、公共、外部、隔离区、工作、家庭、内部和受信任的区域。
3、支持协议:firewalld支持IPv4和IPv6防火墙设置,以及以太网桥接,具有运行时配置和永久配置选项。
4、服务接口:允许服务或应用程序直接添加防火墙规则,通过DBUS接口提供防火墙状态信息。
安装与启动firewalld
1、安装命令:使用yum install firewalld firewallconfig bashcompletion y
命令安装firewalld及相关工具。
2、启动服务:通过systemctl start firewalld.service
命令启动firewalld服务。
3、开机自启:使用systemctl enaBLe firewalld.service
命令设置firewalld在开机时自动启动。
查看和管理防火墙状态
1、查看状态:使用systemctl status firewalld
命令查看防火墙的当前状态。
2、停止服务:使用systemctl stop firewalld.service
命令停止firewalld服务。
3、禁用开机启动:使用systemctl disable firewalld.service
命令禁止firewalld在开机时启动。
配置和管理防火墙规则
1、查看版本和帮助:使用firewallcmd version
和firewallcmd help
命令查看firewallcmd的版本和帮助信息。
2、显示状态:使用firewallcmd state
命令显示防火墙的状态。
3、查看所有打开的端口:使用firewallcmd zone=public listports
命令查看在公共区域下所有打开的端口。
4、更新防火墙规则:使用firewallcmd reload
命令更新防火墙规则,而firewallcmd completelyreload
命令则会重启服务并完全重新加载规则。
5、查看激活的区域:使用firewallcmd getactivezones
命令查看当前激活的区域信息。
6、查看接口所属区域:使用firewallcmd getzoneofinterface=eth0
命令查看指定接口所属的区域。
7、拒绝所有包:使用firewallcmd panicon
命令拒绝所有包,而firewallcmd panicoff
命令则取消拒绝状态。
8、查看是否拒绝:使用firewallcmd querypanic
命令查看是否处于拒绝状态。
信任级别和区域操作
1、信任级别:通过Zone的值指定信任级别,例如drop丢弃所有进入的包,block拒绝所有外部发起的连接但允许内部发起的连接。
2、开启和关闭端口:在指定的区域内添加或删除端口,例如在公共区域内添加TCP端口80的规则,使用firewallcmd zone=public addport=80/tcp permanent
命令,然后重新载入使规则生效。
3、管理服务:将特定的服务添加到指定的区域,例如将smtp服务添加到work区域,使用firewallcmd zone=work addservice=smtp
命令。
4、配置IP地址伪装:查看、打开或关闭IP地址伪装,例如在外部区域查询、添加或移除伪装设置。
5、端口转发:配置端口转发,例如将TCP端口22转发到另一个端口3753,需要先打开IP地址伪装。
静态防火墙配置
尽管firewalld提供了动态管理,但CentOS 7也支持静态防火墙配置,如果需要使用自己的iptables规则,可以安装iptablesservices并禁用firewalld,启用iptables和ip6tables服务,这涉及编辑配置文件/etc/sysconfig/iptables
和/etc/sysconfig/ip6tables
。
FAQs
问题1:如何在CentOS 7中使用firewalld添加一个永久的HTTP端口规则?
答:要在CentOS 7中使用firewalld添加一个永久的HTTP端口规则,可以执行以下步骤:
打开终端。
输入以下命令以添加HTTP服务到默认区域(通常是public):
sudo firewallcmd permanent addservice=http
为了使更改生效,需要重新加载防火墙规则:
sudo firewallcmd reload
问题2:如何查看当前CentOS 7系统中哪些端口是开放的?
答:要查看当前CentOS 7系统中开放的端口,可以使用以下命令:
列出所有开放端口:
sudo firewallcmd listports
或者,如果您想查看特定区域的开放端口,可以使用:
sudo firewallcmd zone=<zone_name> listports
其中<zone_name>
应替换为您感兴趣的区域的名称,如public、home等。