防火墙管理

文章详细介绍了RedHat发行版中firewalld防火墙服务的使用,包括查看服务状态、配置文件重载、命令行工具firewall-cmd的使用。firewalld的核心概念是zone,提供了不同安全级别的区域设置,如trusted、public、home等,并讲解了如何管理端口、服务、源地址和端口转发,以及如何使用富规则进行精细的防火墙策略配置。
摘要由CSDN通过智能技术生成

简介

Red Hat系的发行版默认使用的是firewalld防火墙服务。

firewalld官方

# 查看服务状态
systemctl status firewalld
# 重载配置文件,修改了规则后需要执行此操作
systemctl reload firewalld

firewalld配置文件:/etc/firewalld/firewalld.conf

命令行工具

firewall-cmd是firewalld服务的命令行工具。

# 查看所有信息
firewall-cmd --list-all
# 查看状态
firewall-cmd --state
# 查看版本
firewall-cmd --version

区域

firewalld中提供了一个zone(区域)概念,支持划分zone,且每个zone可以设置独立的防火墙策略。

PS:可以理解为区域是一套策略模板,方便配置、更换。

判断网络包属于哪个zone的顺序:

  1. 根据数据包中源地址
  2. 根据数据包通过的网络接口
  3. 归为默认zone

说明:网卡默认属于public zone,lo网络接口属于trusted zone。

默认区域说明

可以自行添加区域man firewall-cmd有说明,但是一般也不需要,每个默认区域都有一套自己的监控流量的策略。

名称策略说明
trusted允许所有流量就是说所有被认为是此区域的数据包都可以随意进出
home拒绝除传出流量、配置端口和服务之外的所有流量就是说传出流量都可以通过,然后仅允许预设的和自行添加的端口和服务传入
internal同上
work同上
public同上新加的网卡默认属于public
external同上,并且属于external zone的传出ipv4流量的源地址将被伪装为传出网卡的地址。相当于路由器的启用伪装选项
dmz同上
block拒绝所有传入流量
drop同上,甚至不以ICMP错误进行回应

说明:为什么从home到public的策略都是一样的?因为它们虽然预设开放服务不相同,但其实都是允许配置了的服务通过,而配置服务可以自行添加,所以就当成一样了。

所有内置区域的配置文件模板目录: /usr/lib/firewalld/zones/

区域配置的端口及服务的配置文件目录: /etc/firewalld/zones/

命令

# 查看所有的区域
firewall-cmd --get-zones
# 列出当前正使用的区域的详情
firewall-cmd --get-active-zones
# 查询默认区域
firewall-cmd --get-default-zone
# 设置默认区域
firewall-cmd --set-default-zone=${zone}

# 绑定源地址的流量到指定区域,如果无--zone= 选项,使用默认区域
firewall-cmd --add-source=${source} --zone=${zone}
# 删除绑定
firewall-cmd --remove-source=${source} --zone=${zone}

# 绑定来自于指定接口(网卡)的流量到特定区域,如果无--zone= 选项,使用默认区域
firewall-cmd --add-interface=${interface} --zone=${zone}
# 改变指定接口至新的区域
firewall-cmd --change-interface=${interface} --zone=${zone}

PS:根据查看zone的相关配置文件和firewall-cmd --get-active-zones命令,推测应该是先通过源地址和通过的网卡判断数据包是属于哪个区域,然后再在这个区域中查找开放的端口和服务。

访问策略

针对某个区域设置访问策略。可以指定开放端口号、服务、源IP的网段,还可以配置端口转发等。

# 查看public区域的策略信息
firewall-cmd --list-all --zone=public

基本策略

管理端口

可以设置开放或关闭指定端口,端口对服务器的安全很重要,需要谨慎开放。

# 查看已经开放的端口
firewall-cmd --list-ports

# 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port={80,1333}/tcp --permanent # 开启多个
firewall-cmd --zone=public --add-port=30000-30080/tcp --permanent # 开启多个(范围)

# 查看端口是否开启
firewall-cmd --query-port=80/tcp

# 关闭端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

管理服务

其实就是用服务名称来代替端口,如ssh等于端口22等。在配置文件中映射。

# 查看开放了哪些服务端口
firewall-cmd --list-services

# 针对具体服务开放端口
firewall-cmd --zone=public --add-service=mysql --permanent 

# 移除http服务端口
firewall-cmd --remove-service=http 
配置服务

用的是xml文件来配置相应的端口号和协议,所以可以自定义添加服务端口。

  • 系统默认的一些服务端口映射配置文件目录:/usr/lib/firewalld/services/
  • 自定义的服务端口映射配置文件目录:/etc/firewalld/services/
<?xml version="1.0" encoding="utf-8"?>
<service>
    <short>yapi</short>
    <description>this is a yapi config</description>
    <port protocol="tcp" port="3333" />
</service>

端口转发

防火墙可以把来自A端口的流量转发到B端口。

比如,我想隐藏我的sshd服务端口,把22端口换成22000。一般操作是把sshd服务的端口修改了,但这样不仅要修改防火墙开放的端口,还需要在sshd服务的配置文件中也更换端口号,比较麻烦。那此时我就可以使用端口转发,直接删除之前开放的sshd服务,然后把22000端口指向22端口,这样就可以通过22000端口去使用sshd服务,而且还不用去修改配置文件了。

# 添加端口转发策略
firewall-cmd --add-forward-port=port=22000:proto=tcp:toport=22 --permanent
# 移除端口转发策略
firewall-cmd --remove-forward-port=port=22000:proto=tcp:toport=22 --permanent

富规则

富规则即是表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置,优先级在所有的防火墙策略中也是最高的。

# 查看富规则语法
man firewalld.richlanguage

# 添加富规则
firewall-cmd --add-rich-rule='${rule}' --permanent
# 删除富规则
firewall-cmd --remove-rich-rule='${rule}' --permanent

PS:说白了,这个就是完整的配置规则,而之前的添加端口、服务、设置端口转发这些直接操作相当于是提供的一个简单封装。

以限制ICMP协议为例:

# 直接限制
firewall-cmd --add-icmp-block-inversion --permanent # 不允许
firewall-cmd --remove-icmp-block-inversion --permanent # 允许

# 使用富规则限制(与直接限制的响应效果可能不一样,但是都是阻止ICMP)
# 建议使用富规则这条,因为drop动作会直接丢弃包,不作任何响应,对恶意扫描会有点阻碍
firewall-cmd --add-rich-rule='rule protocol value=icmp drop' --permanent # 不允许
firewall-cmd --remove-rich-rule='rule protocol value=icmp drop' --permanent # 允许
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值