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

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/8310.html

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