entOS中的Firewalld:全面介绍与实战应用

news/2024/11/16 4:17:04/

CentOS中的Firewalld:全面介绍与实战应用

一、引言

CentOS操作系统中的防火墙管理工具经历了从iptables到firewalld的演变。这一变迁使得防火墙管理更加灵活和动态,有助于系统管理员更好地理解和使用当前的防火墙管理工具。本文将全面介绍firewalld的基本概念、安装与配置方法,以及实战应用,旨在帮助读者更好地保护CentOS系统的安全。

二、Firewalld基础概念
1. 什么是Firewalld

Firewalld是一个动态管理防火墙的守护进程,提供基于区域的网络流量管理。它是在CentOS 7及以后版本中引入的,旨在简化防火墙管理,提供更灵活和动态的控制。

2. Firewalld的特性
  • 动态管理:支持在不中断现有连接的情况下动态更改规则。
  • 区域概念:基于信任级别定义不同的区域,每个区域有不同的规则。
  • 服务管理:可以通过服务名称而不是端口号来配置规则。
  • 接口绑定:可以将网络接口绑定到特定的区域。
  • 丰富的接口:提供命令行工具firewall-cmd和图形界面工具(如firewall-config)进行管理。
3. Firewalld与iptables的区别
  • 设计理念和管理方式

    • iptables:使用静态规则集,所有规则在启动时加载到内核并在运行时保持不变。任何更改都需要重新应用整个规则集,这可能导致短暂的网络中断。
    • firewalld:支持动态添加、修改和删除规则,而无需重启防火墙服务或重新应用整个规则集,因此不会中断现有连接。
  • 使用方式

    • iptables:通过命令行界面手动配置规则,每条规则需要单独添加和管理。
    • firewalld:提供命令行工具firewall-cmd和图形界面工具firewall-config,方便用户管理防火墙。
  • 规则管理和灵活性

    • iptables:使用链(chain)和表(table)的概念,分别为filter、nat、mangle和raw表,每个表包含多个链,如INPUT、OUTPUT、FORWARD等。
    • firewalld:引入区域(zone)的概念,每个区域表示一组防火墙规则,可以根据网络接口或源地址分配到不同的区域。
  • 性能和适用场景

    • iptables:直接操作内核的netfilter框架,性能较高,适合高流量环境。适用于单个节点或简单网络环境的防火墙管理。
    • firewalld:适应现代动态网络环境,特别是云计算和虚拟化环境,提供更好的灵活性和易用性。适合需要综合管理多个网络接口和复杂网络配置的场景。
三、安装与配置Firewalld
1. Firewalld的安装(对于未预装的系统)

首先,确保系统的软件包是最新的。运行以下命令更新系统:

sudo yum update -y

然后,使用yum包管理器安装firewalld:

sudo yum install firewalld -y

安装完成后,启动firewalld服务并设置开机自启动:

sudo systemctl start firewalld
sudo systemctl enable firewalld

最后,验证firewalld状态,确保firewalld正常运行:

sudo systemctl status firewalld

如果firewalld正在运行,应该会看到类似以下的输出:

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-11-07 12:34:56 UTC; 5min ago
2. Firewalld的区域(Zones)管理
  • 区域的概念与作用
    Firewalld将所有的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。

  • 如何查看当前区域设置
    使用以下命令查看当前区域设置:

    sudo firewall-cmd --get-active-zones
    
  • 更改默认区域与接口绑定
    使用以下命令将网络接口绑定到特定区域:

    sudo firewall-cmd --zone=trusted --change-interface=eth0
    sudo firewall-cmd --reload
    
四、Firewalld的常见命令与实战应用
1. 常见命令
  • 查看firewalld服务状态

    sudo firewall-cmd --state
    
  • 查看所有区域

    sudo firewall-cmd --get-zones
    
  • 查看指定区域的规则

    sudo firewall-cmd --zone=public --list-all
    
  • 开放端口

    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    sudo firewall-cmd --reload
    
  • 添加服务

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --reload
    
  • 删除端口/服务

    sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
    sudo firewall-cmd --zone=public --remove-service=http --permanent
    sudo firewall-cmd --reload
    
2. 实战应用
  • 开放SSH访问(端口22)

    sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
    sudo firewall-cmd --reload
    
  • 开放HTTP和HTTPS服务

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --reload
    
  • 将网络接口从默认的public区域移动到trusted区域

    sudo firewall-cmd --zone=trusted --change-interface=eth0
    sudo firewall-cmd --reload
    
  • 禁止Ping请求

    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" protocol="icmp" icmp-type="echo-request" drop' --permanent
    sudo firewall-cmd --reload
    
  • 允许特定IP访问SSH端口

    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' --permanent
    sudo firewall-cmd --reload
    
3. Firewalld配置文件路径

Firewalld的配置文件位于/etc/firewalld/目录下,其中主要的配置文件有:

  • firewalld.conf:Firewalld的主要配置文件。
  • zones:每个区域的配置文件都在这个目录下,例如public.xml, internal.xml等。
  • services:包含每个服务的XML文件,例如http.xml, ssh.xml等。

通过修改这些配置文件,可以自定义Firewalld的行为,但记得在修改后重新加载防火墙配置。

五、Firewalld的预定义区域说明

Firewalld提供了多个预定义区域,每个区域都有不同的安全策略:

  • trusted(信任区域):可接收所有的网络连接。
  • public(公共区域):除非与传出流量相关,或与ssh或dhcpv6-client预定义服务匹配,否则拒绝流量传入。
  • work(工作区域):用于工作区,除非与传出流量相关,或与ssh、ipp-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入。
  • home(家庭区域):用于家庭网络,除非与传出流量相关,或与ssh、ipp-client、mdns、samba-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入。
  • internal(内部区域):用于内部网络,除非与传出流量相关,或与ssh、ipp-client、mdns、samba-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入。
  • external(外部区域):除非与传出流量相关,或与ssh预定义服务匹配,否则拒绝流量传入。
  • dmz(隔离区域也称为非军事化区域):除非和传出的流量相关,或与ssh预定义服务匹配,否则拒绝流量传入。
  • block(限制区域):除非与传出流量相关,否则拒绝所有传入流量。
  • drop(丢弃区域):除非与传出流量相关,否则丢弃所有传入流量,并且不产生包含ICMP的错误响应。
六、总结

Firewalld是CentOS系统中一个强大的防火墙管理工具,通过理解其基本概念和掌握常见命令,可以更好地利用其功能来提高系统的安全性。Firewalld的动态管理、区域概念、服务管理以及丰富的接口使得防火墙管理更加灵活和高效。定期更新和维护防火墙规则是确保网络安全的重要部分,希望本文能帮助读者更好地配置和管理CentOS系统中的Firewalld防火墙。


http://www.ppmy.cn/news/1547346.html

相关文章

Python练习19

Python日常练习 题目: 打印如下九九乘法表 1*11 2*12 2*24 3*13 3*26 3*39 4*14 4*28 4*312 4*416 5*15 5*210 5*315 5*420 5*525 6*16 6*212 6*318 6*424 6*530 6*636 7*17 7*214 7*321 7*428 7*535 7*642 7*749 8*18 8*216 8*324 8*432 8*540 8*648 8*756 8*86…

数据量大Excel卡顿严重?选对报表工具提高10倍效率

当几万行的数据把软件频频跑崩,当珍贵的数据资源无法便捷复用,当数据填报的本地文档在各个电脑中传来传去……在各大岗位要求中频频出现的Excel,作为个人办公软件绝无仅有,但作为企业场景下的报表工具,效率显然不足。 …

Java实战项目-基于Spring Boot+vue框架的健康健身追踪系统

大家好,我是stormjun,今天为大家带来的是Java实战项目-基于Spring Bootvue框架的健康健身追踪系统。该系统采用 Java 语言 开发,MySql 作为数据库,系统功能完善 ,实用性强 ,可供大学生实战项目参考使用。 博…

Java集合Queue——针对实习面试

目录 Java集合QueueQueue接口的特点是什么?Queue和Deque的区别?ArrayDeque和LinkedList的区别?什么是PriorityQueue?什么是BlockingQueue? Java集合Queue Queue接口的特点是什么? Queue接口在Java中是一个…

51c自动驾驶~合集25

我自己的原文哦~ https://blog.51cto.com/whaosoft/11952510 #AllWeather-Net 拿捏所有天气!增强所有恶劣环境图像~ 论文题目:AllWeather-Net: Unified Image Enhancement for Autonomous Driving Under Adverse Weather and Low-Light Conditions 论文…

探秘Spring Boot中的@Conditional注解

文章目录 1. 什么是Conditional注解?2. 为什么需要Conditional注解?3. 如何使用Conditional注解?4. Conditional注解的高级用法5. 注意事项6. 结语推荐阅读文章 在Spring Boot的世界里,配置的灵活性和多样性是至关重要的。有时候&…

个人C++复习知识点(1)

在 C 中,函数重载是指在同一个作用域中定义多个同名函数,这些函数通过参数的类型、数量或顺序的不同来区分。函数参数的顺序确实可以作为重载的条件之一。 函数重载的原则 C 允许通过以下几种方式来重载函数: 参数类型不同:函数…

D64【python 接口自动化学习】- python基础之数据库

day64 SQL-DQL-基础查询 学习日期:20241110 学习目标:MySQL数据库-- 133 SQL-DQL-基础查询 学习笔记: 基础数据查询 基础数据查询-过滤 总结 基础查询的语法:select 字段列表|* from 表过滤查询的语法:select 字段…