HCRM博客

关于CentOS 7中的firewalld,你了解多少?

CentOS 7 firewalld

背景介绍

关于CentOS 7中的firewalld,你了解多少?-图1
(图片来源网络,侵权删除)

CentOS 7 引入了firewalld 作为默认的防火墙管理工具,取代了传统的iptablesFirewalld 支持动态更新、基于区域(zone)的安全策略以及丰富的服务管理功能,这使得它在现代网络环境中更加灵活和易于管理,本文将详细介绍firewalld 的安装、配置和管理方法,包括其核心概念和常用命令。

firewalld简介

1.1 什么是firewalld?

firewalldfirewall daemon 的缩写,是一个用于管理 Linux 系统防火墙规则的服务,它提供了运行时配置和永久配置选项,并支持通过图形界面或命令行界面进行管理。firewalld 使用内核的 netfilter 来实现防火墙功能,但比传统的iptables 更易用和灵活。

1.2 firewalld的主要特点

动态更新:可以在不重启服务的情况下动态更新防火墙规则。

区域(Zone)概念:通过定义不同的区域来管理不同级别的安全策略。

关于CentOS 7中的firewalld,你了解多少?-图2
(图片来源网络,侵权删除)

服务(Service)管理:预定义了一些常见的服务(如 HTTP、FTP 等),方便用户快速配置。

丰富的命令行工具:提供了一系列命令行工具来管理和查询防火墙状态。

1.3 firewalld与iptables的关系

尽管firewalld 自身并不具备防火墙功能,但它通过调用内核的netfilter 来实现防火墙规则的管理,可以说,firewalld 是对iptables 的一种封装和扩展,使得防火墙管理变得更加直观和便捷。

firewalld的核心概念

2.1 zone的概念

firewalld 引入了“区域”(zone)的概念,每个区域代表一种信任级别或安全策略集合,公共区域(public)、家庭区域(home)、工作区域(work)等,这些区域可以根据具体的网络环境进行定制,以实现不同的安全策略。

关于CentOS 7中的firewalld,你了解多少?-图3
(图片来源网络,侵权删除)

2.1.1 常见区域类型及用途

drop:丢弃所有接收的数据包,适用于高安全性的环境。

block:拒绝所有外部连接,仅允许内部发起的连接。

public:默认区域,不信任任何外部连接,仅接受经过选定的网络连接。

external:为路由器启用了伪装功能的外部网络,不信任其他计算机。

internal:内部网络,通常信任所有连接。

home:类似家庭组,通常信任所有连接。

work:工作区,通常信任所有连接。

trusted:完全信任所有连接。

dmz:非军事区,限制外部访问,仅接受特定连接。

2.2 service的概念

firewalld 中的服务是指一组预定义的规则集合,通常对应于某种特定的应用或协议(如 HTTP、FTP 等),通过启用或禁用服务,用户可以快速调整防火墙规则而无需手动配置端口和协议。

2.2.1 预定义服务列表

/usr/lib/firewalld/services/ 目录下,firewalld 提供了多种预定义的服务配置文件,HTTP 服务对应的文件是http.XML,其中包含了 HTTP 协议使用的端口(通常是80和443)。

安装与启动firewalld

3.1 安装firewalld

在大多数情况下,CentOS 7 默认已经安装了firewalld,如果没有安装,可以使用以下命令进行安装:

sudo yum install firewalld

3.2 启动、停止与禁用firewalld

启动firewalld

  sudo systemctl start firewalld

查看状态

  sudo systemctl status firewalld

停止firewalld

  sudo systemctl stop firewalld

禁用开机启动

  sudo systemctl disable firewalld

启用开机启动

  sudo systemctl enable firewalld

配置与管理firewalld

4.1 基本配置命令

4.1.1 查看版本与帮助

查看版本

  firewallcmd version

查看帮助

  firewallcmd help

4.1.2 查看防火墙状态与设置信息

显示当前状态

  firewallcmd state

查看所有打开的端口

  firewallcmd listports

查看活动的区域

  firewallcmd getactivezones

4.2 管理区域与接口

4.2.1 查看与设置默认区域

查看默认区域

  firewallcmd getdefaultzone=public

设置默认区域

  firewallcmd setdefaultzone=home

4.2.2 添加接口到区域

假设有一个接口eth0,将其添加到public 区域:

firewallcmd zone=public addinterface=eth0

若要永久生效,需加上permanent 参数:

firewallcmd zone=public addinterface=eth0 permanent

然后重新加载防火墙配置:

firewallcmd reload

4.3 开放端口与服务

4.3.1 开放单个端口

开放 HTTP(80端口):

firewallcmd zone=public addport=80/tcp permanent
firewallcmd reload

4.3.2 开放多个端口

同时开放 HTTP(80端口)和 HTTPS(443端口):

firewallcmd zone=public addport=80/tcp permanent
firewallcmd zone=public addport=443/tcp permanent
firewallcmd reload

4.3.3 开放服务

开放 HTTP 服务:

firewallcmd zone=public addservice=http permanent
firewallcmd reload

4.4 高级配置与自定义规则

4.4.1 拒绝所有包(紧急模式)

启用紧急模式,拒绝所有传入和传出的流量:

firewallcmd panicon

取消紧急模式:

firewallcmd panicoff

4.4.2 自定义复杂规则

只允许特定 IP 访问某个端口:

firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept'
firewallcmd reload

常见问题解答(FAQs)

Q1: 如何查询是否开启6379端口?

A1: 你可以使用以下命令查询6379端口的状态:

firewallcmd queryport=6379/tcp

如果返回yes,则表示6379端口已开放;如果返回no,则表示6379端口未开放。

Q2: 如何开启6379端口?

A2: 你可以使用以下命令开启6379端口:

firewallcmd zone=public addport=6379/tcp permanent
firewallcmd reload
分享:
扫描分享到社交APP
上一篇
下一篇