HCRM博客

如何在CentOS 7上配置和使用Firewall?

CentOS 7中的Firewalld是一个功能强大的动态防火墙管理工具,它通过引入“zone”概念来定义网络连接的可信等级,并支持IPv4和IPv6防火墙设置,以下是对CentOS 7 firewalld的全面介绍:

一、Firewalld简介

Firewalld是CentOS 7的一大特性,它取代了iptables service,使得软防火墙操作更加便利和人性化,Firewalld提供了动态更新功能,无需重启服务即可修改单条规则,并且加入了防火墙的“zone”区域概念,用于定义网络链接及接口的安全等级。

如何在CentOS 7上配置和使用Firewall?-图1
(图片来源网络,侵权删除)

二、基本使用

1. 安装与启动

安装:可以通过yum install firewalld y命令安装firewalld。

启动:使用systemctl start firewalld命令启动firewalld服务。

查看状态:使用systemctl status firewalld查看firewalld的运行状态。

停止:使用systemctl stop firewalld停止firewalld服务。

禁用开机启动:使用systemctl disable firewalld禁止firewalld在开机时自动启动。

如何在CentOS 7上配置和使用Firewall?-图2
(图片来源网络,侵权删除)

2. 配置firewalldcmd

查看版本:使用firewallcmd version查看firewalld的版本信息。

查看帮助:使用firewallcmd help获取firewalld的帮助信息。

显示状态:使用firewallcmd state显示firewalld的当前状态。

查看所有打开的端口:使用firewallcmd zone=public listports查看在public zone下所有打开的端口。

更新防火墙规则:使用firewallcmd reload重新加载防火墙规则。

如何在CentOS 7上配置和使用Firewall?-图3
(图片来源网络,侵权删除)

查看区域信息:使用firewallcmd getactivezones查看当前活动的区域。

查看指定接口所属区域:使用firewallcmd getzoneofinterface=eth0(以eth0为例)查看指定接口所属的区域。

3. 信任级别与Zone

Firewalld通过Zone的值来指定信任级别,不同的Zone表示不同的信任等级:

Zone 描述
drop 丢弃所有进入的包,不给出任何响应
block 拒绝所有外部发起的连接,允许内部发起的连接
public 允许指定的进入连接
external 同上,对伪装的进入连接,一般用于路由转发
dmz 允许受限制的进入连接
work 允许受信任的计算机被限制的进入连接,类似workgroup
home 同上,类似homegroup
internal 同上,范围针对所有互联网用户
trusted 信任所有连接

这些Zone按照从不信任到信任的顺序排序,可以根据实际需求选择相应的Zone进行配置。

三、防火墙端口配置

1. 查看已开启端口

可以使用firewallcmd listportsnetstat ntlp查看已开启的端口。

2. 查看防火墙规则

使用firewallcmd listall可以查看防火墙的所有规则。

3. 查看允许协议

使用firewallcmd listprotocals可以查看防火墙允许的协议。

4. 开启、关闭、查询端口

以开启80端口为例,可以使用以下命令:

查询端口是否开放firewallcmd queryport=80/tcp

永久增加/开启80端口firewallcmd permanent addport=80/tcp

重启防火墙服务systemctl restart firewalld

删除端口firewallcmd removeport=80/tcp

四、防火墙IP指向限制配置

1. 允许指定IP访问所有流量

可以使用firewallcmd permanent addrichrule="rule family="ipv4" source address="192.168.43.100" accept"命令允许特定IP访问所有流量。

2. 允许指定IP访问指定端口

允许IPV4地址为8.8.8.8的主机连接端口80,可以使用以下命令:

firewallcmd permanent addrichrule="rule family="ipv4" source address="8.8.8.8" port protocol="tcp" port="80" accept"

3. 允许指定IP访问指定协议

阻止ICMP包,可以使用以下命令:

firewallcmd permanent addrichrule="rule protocol value="icmp" drop"

4. 允许指定IP访问指定服务

允许特定地址可以访问SSH服务,可以使用以下命令:

firewallcmd permanent addrichrule="rule family="ipv4" source address="10.168.186.25" service name="ssh" accept"

5. 防火墙移除某个服务

从允许通过防火墙的列表里移除SSH服务,可以使用以下命令:

firewallcmd removerichrule="rule family="ipv4" source address="10.168.186.25" service name="ssh" drop"

五、获取所有支持的服务

Firewalld支持多种服务,可以通过以下命令添加或删除服务:

添加服务:将smtp服务添加到work zone,可以使用firewallcmd zone=work addservice=smtp命令。

删除服务:从work zone中删除smtp服务,可以使用firewallcmd zone=work removeservice=smtp命令。

六、端口转发与IP地址伪装

1. IP地址伪装

查看IP地址伪装状态,可以使用firewallcmd zone=external querymasquerade命令,开启和关闭IP地址伪装分别使用firewallcmd zone=external addmasqueradefirewallcmd zone=external removemasquerade命令。

2. 端口转发

首先需要开启IP地址伪装,然后进行端口转发,将TCP 22端口转发至3753端口,可以使用以下命令:

firewallcmd zone=external addforwardport=22:porto=tcp:toport=3753

如果需要将端口数据转发至另一个IP的相同端口,可以使用以下命令:

firewallcmd zone=external addforwardport=porto=tcp:toport=3753:toaddr=another_ip_address

七、FAQs

Q1: Firewalld如何实现动态更新?

A1: Firewalld通过DBUS接口提供防火墙状态的信息,使防火墙的启用、停用或查询设置成为可能,它支持动态更新,无需重启服务即可修改单条规则,当规则被修改后,只需调用firewallcmd reload命令即可重新加载规则。

Q2: 为什么Firewalld比iptables更人性化?

A2: Firewalld在使用上比iptables更人性化,主要体现在以下几个方面:Firewalld支持动态更新,无需重启服务即可修改单条规则;Firewalld加入了防火墙的“zone”区域概念,用于定义网络链接及接口的安全等级,使得配置更加直观易懂;Firewalld提供了图形界面和字符命令界面两种管理方式,方便用户根据需要进行选择。

CentOS 7中的firewalld是一个功能强大且易于使用的动态防火墙管理工具,通过合理配置和使用firewalld,可以有效地保护系统安全并满足各种网络需求。

分享:
扫描分享到社交APP
上一篇
下一篇