运维iptables与firewalld详解

news2024/11/19 9:24:26

iptables与firewalld

一、iptables

1.1 iptables简介

iptables 是一个在 Linux 系统上用来配置 IPv4 数据包过滤规则的工具。它允许系统管理员控制数据包的流向,实现网络安全、网络地址转换(NAT)和端口转发等功能。

具体来说,iptables 可以用来定义规则集(ruleset),这些规则决定了哪些数据包可以通过系统,哪些需要被丢弃或者拒绝。这些规则基于数据包的源地址、目标地址、源端口、目标端口以及数据包的协议等信息来进行匹配和处理。

iptables 的工作原理是在 Linux 内核中使用 Netfilter 框架来实现数据包过滤和处理。它通过修改 Netfilter 的规则表来控制数据包的流向和处理方式。iptables 提供了丰富的命令和选项,使得管理员可以灵活地配置和管理防火墙规则,从而保护主机和网络的安全。

iptables 是 Linux 系统中强大而灵活的防火墙工具,被广泛用于网络安全配置和管理中。

1.2 iptables关键概念

iptables 中涉及到一些关键概念,理解这些概念对于正确配置和管理防火墙规则非常重要。以下是几个关键概念及其示例说明:

  1. 链(Chain)

    • 说明: 链是规则集合,用于指定数据包如何处理。iptables 包括预定义的标准链(如 INPUT、OUTPUT、FORWARD)和可以自定义的用户链。
    • 示例:
      • INPUT 链:控制进入本地系统的数据包。
      • OUTPUT 链:控制从本地系统发出的数据包。
      • FORWARD 链:控制经过系统的转发数据包。
  2. 规则(Rule)

    • 说明: 规则是定义在链中的指令,用于匹配数据包并决定如何处理它们(接受、拒绝、转发等)。
    • 示例:
      • 允许从特定 IP 地址发出的数据包:iptables -A OUTPUT -s 192.168.1.100 -j ACCEPT
      • 拒绝特定端口的入站连接:iptables -A INPUT -p tcp --dport 22 -j DROP
  3. 目标(Target)

    • 说明: 目标指定当规则匹配时应该采取的动作,可以是 ACCEPT(接受数据包)、DROP(丢弃数据包)、REJECT(拒绝数据包并发送拒绝消息)、LOG(记录数据包信息)等。
    • 示例:
      • 接受指定来源的数据包:-j ACCEPT
      • 丢弃特定端口的数据包:-j DROP
      • 拒绝并发送 ICMP 错误消息:-j REJECT
  4. 匹配条件(Match Conditions)

    • 说明: 匹配条件用于过滤数据包的特定属性,例如源 IP 地址、目标端口、协议类型等。
    • 示例:
      • 匹配特定协议类型:-p tcp-p udp
      • 指定源 IP 地址:-s 192.168.1.0/24
      • 指定目标端口:--dport 80
  5. 表(Table)

    • 说明: 表是规则集的逻辑分类,iptables 中主要有 filter、nat、mangle 和 raw 四种表,每种表用于不同的数据包处理目的。
    • 示例:
      • filter 表:用于控制数据包流向(如 INPUT、OUTPUT、FORWARD)。
      • nat 表:用于网络地址转换(NAT)。
      • mangle 表:用于修改数据包头部。
      • raw 表:用于配置特定的连接跟踪规则。

这些关键概念帮助管理员理解和构建复杂的 iptables 防火墙规则,以实现网络安全策略和功能需求。通过合理使用这些概念,可以有效地管理和保护 Linux 主机和网络环境。

1.3 iptables常用操作

iptables 在实际使用中有一些常见的操作和命令,主要包括以下几类:

  1. 添加规则(Rule)

    • iptables -A chain rule_specification: 将一条规则追加到指定的链(chain)中。
    • iptables -I chain [rulenum] rule_specification: 在指定链中插入一条规则。
    • iptables -R chain rulenum rule_specification: 替换指定链中的某条规则。
  2. 删除规则

    • iptables -D chain rule_specification: 从指定链中删除符合规则的某条规则。
    • iptables -F [chain]: 清空指定链中的所有规则。
    • iptables -X [chain]: 删除自定义的链(如果没有规则引用该链)。
  3. 管理链(Chain)

    • iptables -N chain: 创建一个新的自定义链。
    • iptables -E old_chain new_chain: 对现有链进行重命名。
    • iptables -P chain target: 设置指定链的默认策略(如 ACCEPT、DROP 等)。
  4. 显示规则和状态

    • iptables -L [chain]: 列出指定链的所有规则。
    • iptables -S: 显示完整的防火墙规则集。
    • iptables -nvL: 显示详细信息,包括数据包和字节计数。
    • iptables -Z [chain]: 清空指定链的数据包和字节计数。
  5. 保存和恢复规则

    • iptables-save: 将当前防火墙规则保存到文件或输出到标准输出。
    • iptables-restore: 从文件或标准输入中恢复防火墙规则。
  6. 其他常用操作

    • iptables -A INPUT -p tcp --dport port_number -j ACCEPT: 允许特定端口的 TCP 数据包进入系统。
    • iptables -A OUTPUT -p udp --sport port_number -j DROP: 阻止特定端口的 UDP 数据包从系统发出。

这些命令和操作允许管理员灵活地配置和管理 iptables 防火墙规则,以保护系统和网络安全。具体的使用需根据具体的网络环境和安全需求进行调整和配置。

二、firewalld

2.1 firewalld简介

Firewalld 是一个动态的防火墙管理器,最初由 Fedora 发布,现在已经在许多基于 Linux 的发行版中广泛使用。它的设计目的是简化管理和配置防火墙规则,使管理员可以动态地调整和更新防火墙设置,而无需重新加载整个防火墙规则集。

主要特点和功能:

  1. 动态更新和管理: Firewalld 允许管理员在运行时添加、删除或修改防火墙规则,这些更改会立即生效,无需重启防火墙服务或系统。

  2. 基于区域的配置: Firewalld 使用“区域”来管理不同网络环境的安全设置。每个区域定义了一组预定义的规则,例如公共网络、家庭网络、内部网络等,管理员可以根据需求将接口分配给相应的区域。

  3. 服务和端口管理: Firewalld 支持管理服务和端口,管理员可以轻松地启用或禁用特定服务(如 SSH、HTTP、FTP 等)和端口。

  4. 应用程序级别的防火墙支持: Firewalld 可以识别和管理特定应用程序的网络连接,允许管理员定义基于应用程序的规则。

  5. IPv4 和 IPv6 支持: Firewalld 能够管理 IPv4 和 IPv6 的防火墙规则,支持双栈环境。

  6. 集成的命令行工具和图形界面: Firewalld 提供了命令行工具(firewall-cmd)和图形用户界面(firewall-config),使管理员可以根据自己的偏好选择合适的管理方式。

  7. 活动和永久配置: Firewalld 区分活动配置和永久配置,活动配置在运行时生效,而永久配置则会在系统重启后自动应用,这样可以确保安全设置的持久性。

使用场景:

  • 服务器安全管理: 管理员可以通过 Firewalld 控制服务器上不同服务和端口的访问权限,保护服务器免受未经授权的访问。
  • 桌面系统安全: 在桌面系统上,可以利用 Firewalld 确保公共网络连接时的安全性,限制来自外部网络的访问。
  • 网络环境配置: Firewalld 的区域概念使得在多网络接口和复杂网络拓扑中管理防火墙规则变得更加直观和可控。

总体而言,Firewalld 提供了一个灵活、易于管理的防火墙解决方案,适用于各种规模和复杂度的 Linux 系统和网络环境。

2.2 firewalld关键概念

Firewalld 的核心概念包括以下几个关键要素,理解这些要素有助于有效地配置和管理防火墙规则:

  1. 区域(Zone)

    • 说明: 区域定义了不同网络环境的安全级别和规则集合。每个接口可以分配给特定的区域,以便根据网络环境应用适当的防火墙规则。
    • 示例:
      • public:公共区域,最严格的安全设置,适用于连接到不受信任网络的接口。
      • home:家庭网络区域,允许对某些服务和端口的有限访问。
      • internal:内部网络区域,允许较宽松的访问,适用于受信任的内部网络。
  2. 服务(Service)

    • 说明: 服务定义了特定应用程序或服务使用的端口和协议组合。Firewalld 提供了一组预定义的服务,允许管理员方便地管理服务的访问。
    • 示例:
      • ssh:用于 SSH 连接的服务,通常使用 TCP 端口 22。
      • http:用于 HTTP 服务的服务,通常使用 TCP 端口 80。
      • ftp:用于 FTP 服务的服务,通常使用 TCP 端口 21。
  3. 源(Source)

    • 说明: 源地址或源地址范围是指定特定来源网络或主机的 IP 地址范围。可以用来限制访问特定服务或端口的源 IP 地址。
    • 示例:
      • 192.168.1.0/24:表示整个 192.168.1.0/24 子网。
      • 10.0.0.5:表示单个 IP 地址 10.0.0.5。
  4. 端口(Port)

    • 说明: 端口规则用于允许或阻止特定端口上的流量。可以指定 TCP 或 UDP 协议,以及具体的端口号。
    • 示例:
      • 允许 TCP 端口 443:firewall-cmd --zone=public --add-port=443/tcp --permanent
      • 阻止 UDP 端口 53:firewall-cmd --zone=public --add-port=53/udp --permanent
  5. 目标(Target)

    • 说明: 目标指定当规则匹配时应该采取的动作,可以是 ACCEPT(接受数据包)、DROP(丢弃数据包)、REJECT(拒绝数据包并发送拒绝消息)等。
    • 示例:
      • 接受特定服务的流量:-j ACCEPT
      • 拒绝来自特定源地址的流量:-j DROP
  6. 永久配置和运行时配置

    • 说明: Firewalld 区分永久配置和运行时配置。永久配置保存在文件中,系统重启后仍然有效,而运行时配置在系统重启后将被丢弃。
    • 示例:
      • --permanent:用于将规则永久保存到配置文件中。
      • --runtime-to-permanent:将当前运行时配置复制到永久配置。

这些关键概念使得管理员可以在不同的网络环境中配置灵活且精确的防火墙策略,以保护系统和网络免受未经授权的访问和攻击。通过合理利用这些概念,可以确保系统安全性和网络可用性的平衡。

2.3 firewalld常见操作

Firewalld 提供了一系列常见的操作命令,管理员可以使用这些命令来配置、管理和监视防火墙规则。以下是一些常见的 firewalld 操作:

  1. 查看当前防火墙状态和规则

    • firewall-cmd --state: 查看 firewalld 的当前状态,例如是否运行。
    • firewall-cmd --list-all: 显示所有区域的详细信息,包括已经配置的规则。
  2. 管理区域(Zone)

    • firewall-cmd --get-active-zones: 显示当前活动的区域。
    • firewall-cmd --get-default-zone: 显示默认的区域。
    • firewall-cmd --set-default-zone=zone_name: 设置默认的区域。
    • firewall-cmd --list-all-zones: 列出所有可用的区域及其配置。
  3. 管理服务

    • firewall-cmd --get-services: 显示所有可用的预定义服务。
    • firewall-cmd --add-service=service_name [--zone=zone_name]: 启用特定的服务。
    • firewall-cmd --remove-service=service_name [--zone=zone_name]: 禁用特定的服务。
  4. 管理端口

    • firewall-cmd --get-ports: 显示所有已配置的端口。
    • firewall-cmd --add-port=port/protocol [--zone=zone_name]: 开放特定的端口。
    • firewall-cmd --remove-port=port/protocol [--zone=zone_name]: 移除特定的端口。
  5. 管理源(Source)

    • firewall-cmd --add-source=source [--zone=zone_name]: 允许特定的源访问。
    • firewall-cmd --remove-source=source [--zone=zone_name]: 移除特定的源访问权限。
  6. 实时配置和永久配置

    • firewall-cmd --runtime-to-permanent: 将当前运行时配置保存为永久配置。
    • firewall-cmd --reload: 重新加载防火墙规则,立即应用最新的配置。
  7. 其他操作

    • firewall-cmd --panic-on: 激活防火墙的紧急模式,拒绝所有流量。
    • firewall-cmd --panic-off: 关闭防火墙的紧急模式,恢复正常流量。
    • firewall-cmd --query-service=service_name: 检查特定服务是否在防火墙规则中启用。
  8. 日志和监视

    • firewall-cmd --get-log-denied: 获取拒绝日志的设置。
    • firewall-cmd --set-log-denied=all: 打开所有拒绝日志记录。

这些命令提供了灵活的管理和配置选项,使管理员能够根据具体需求定制和调整防火墙规则,保障系统和网络的安全性。使用时需要注意权限和规则的生效顺序,确保所配置的防火墙策略能够有效地保护系统。

三、iptables与firewalld

3.1 相同点

iptables 和 firewalld 在网络安全管理中有一些共同点,尽管它们是不同的工具,但它们之间存在一些功能和特性上的相似之处:

  1. 功能目标

    • 防火墙管理: iptables 和 firewalld 都用于配置和管理 Linux 系统上的防火墙规则,以控制网络流量的进出。
  2. 基本概念

    • 规则管理: 两者都通过规则来控制数据包的处理方式,例如允许、拒绝或转发。
    • 链的概念: iptables 中的链(chain)类似于 firewalld 中的区域(zone),都用于组织和应用规则集合。
  3. 支持的协议和端口

    • 协议支持: iptables 和 firewalld 都支持 TCP、UDP、ICMP 等主流的网络协议。
    • 端口管理: 两者都支持管理和控制特定端口的访问权限。
  4. IPv4 和 IPv6 支持

    • 双栈支持: iptables 和 firewalld 都能够处理 IPv4 和 IPv6 数据包,支持双栈环境的配置。
  5. 灵活性

    • 动态性: firewalld 在设计上更加动态,允许在运行时添加、删除和修改规则,而 iptables 则需要重新加载规则集才能生效。

尽管有这些相似之处,iptables 和 firewalld 在实现和使用上有显著的区别,例如iptables是直接操作内核规则,更为底层和灵活,而firewalld提供了更高级别的抽象和管理接口,更易于使用和配置。

3.2 iptables与firewalld各自优势及特点

iptables 和 firewalld 在设计理念和功能实现上有很多不同点,它们各自具有不同的优势和适用场景:

iptables 的特点和优势:

  1. 底层控制:

    • iptables 直接操作 Linux 内核中的 Netfilter 框架,提供了非常底层的网络数据包处理能力,能够实现高度定制化的防火墙规则。
  2. 灵活性和精确控制:

    • iptables 允许管理员直接定义和控制数据包的过滤、转发和修改行为,可以基于非常具体的条件进行匹配和操作。
  3. 成熟和广泛支持:

    • iptables 是 Linux 平台上长期使用的经典防火墙工具,有着丰富的社区支持和文档资源,广泛应用于各种复杂的网络环境中。

iptables 的劣势:

  1. 配置复杂:

    • iptables 配置和管理较为复杂,需要深入理解网络协议和内核机制,对初学者来说学习曲线较陡。
  2. 不支持动态调整:

    • iptables 规则一旦设置,通常需要重新加载整个规则集才能生效,不支持动态添加、删除和修改规则。

firewalld 的特点和优势:

  1. 动态管理和易用性:

    • firewalld 设计为动态管理防火墙规则,支持在运行时动态添加、删除和修改规则,使得配置更加灵活和简便。
  2. 区域和服务抽象:

    • firewalld 引入了区域(zone)和服务(service)的概念,管理员可以根据不同的网络环境和服务类型轻松管理和应用防火墙策略。
  3. 网络管理集成:

    • firewalld 与 NetworkManager 紧密集成,能够与网络接口的状态和连接状态动态调整防火墙规则,适用于移动设备和动态网络环境。
  4. 更高级的抽象和管理接口:

    • firewalld 提供了命令行工具和图形界面,使得非专业用户也能够轻松理解和配置防火墙规则,降低了使用门槛。

firewalld 的劣势:

  1. 性能问题:

    • 相对于 iptables 的直接操作,firewalld 由于抽象层和动态管理的特性,可能在性能上略有损失,尤其是在高负载环境中。
  2. 适应复杂网络需求的能力有限:

    • 尽管 firewalld 提供了高级的管理抽象,但在某些特定和复杂的网络环境下,可能需要更多的细粒度控制和定制化规则,这时 iptables 可能更为适合。

综述

iptables 和 firewalld 在功能设计和适用场景上有显著的差异。iptables 更适合对网络深度理解和精确控制要求高的场景,而 firewalld 则更适合需要动态管理和易用性的环境,尤其是桌面系统或者需要频繁变更防火墙规则的服务器环境。选择使用哪个工具应根据具体的需求、管理复杂度和个人经验来进行权衡和选择。

希望对您有用!关注锅总,可及时获得更多花里胡哨的运维实用操作!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1856697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何解决app广告填充率低、广告填充异常,提升广告变现收益?

APP广告变现有助于开发者获得持续的收益来源,由于广告链路的封闭性和复杂化,一旦出现请求配置参数错误、返回广告源信息缺失、素材被拦截等异常,大部分开发者很难及时查清异常情况,导致广告填充率不理想,甚至填充率常常…

Spire.PDF for .NET【文档操作】演示:设置 PDF 文档的 XMP 元数据

XMP 是一种文件标签技术,可让您在内容创建过程中将元数据嵌入文件本身。借助支持 XMP 的应用程序,您的工作组可以以团队以及软件应用程序、硬件设备甚至文件格式易于理解的格式捕获有关项目的有意义的信息(例如标题和说明、可搜索的关键字以及…

“开源AI”到底是什么意思

开源与专有软件之间的斗争早已为人所熟知。然而,长期以来弥漫在软件圈的紧张关系已经渗透到了人工智能领域,部分原因在于没有人能在AI背景下就“开源”的真正含义达成一致。 相关阅读:GPT-4o通过整合文本、音频和视觉实现人性化的AI交互&…

上海舆情分析软件的功能和对企业的意义

随着互联网的飞速发展,人们参与讨论、发声的途径与评率也越来越多,在为自己发声的同时,公众舆论也成为企业获取民意,改进发展的重要参考。 上海 舆情分析软件的开发,为企业获取舆论,调查研究提供了便捷化的…

Spring+SpringMVC+MyBatis整合

目录 1.SSM介绍1.1 什么是SSM?1.2 SSM框架1.2.1 Spring1.2.2 SpringMVC1.2.3 MyBatis 2.SSM框架整合2.1 建库建表2.2 创建工程2.3 pom.xml2.4 log4j.properties2.5 db.properties2.6 applicationContext-dao.xml2.7.applicationContext-tx.xml2.8 applicationContex…

浅析缓存技术

缓存技术的原理 缓存技术通过在内存中存储数据副本来加速数据访问。当应用程序需要数据时,首先检查缓存是否存在数据副本,如果有则直接返回,否则再从原始数据源获取。这种机制大大减少了访问时间,提升了系统的响应速度和整体性能。…

Maven深度解析:Java项目构建

Maven是一个由Apache软件基金会维护的软件项目管理和理解工具,它主要服务于基于Java的软件项目。。 Maven深度解析:Java项目构建 引言 在Java开发领域,项目构建和管理是一个复杂而关键的任务。Maven作为这一领域的佼佼者,以其声…

vscode下无法识别node、npm的问题

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 因为node是在cmd安装的,是全局安装的,并不是在这个项目里安装的。 解决方案: 1.在vscode的控制台,针对一个项目安装特定版本的node; 2.已经…

基于Dify的智能分类方案:大模型结合KNN算法(附代码)

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…

Spring中事务的传播机制

一、前言 首先事务传播机制解决了什么问题 Spring 事务传播机制是包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。 事务的传播级别有 7 个,支持当前事务的:REQUIRED、SUPPORTS、MANDATORY; 不支持当前事务的&…

华为某员工爆料:偷偷跑出去面试,被面试官鄙视了。第一句话就问:华为淘汰的吧,35岁了,这个年龄在华为能混得下去吗?身体没啥毛病吧

“你都35岁了,难不成是被华为淘汰的?在华为混不下去了吧?身体没啥毛病吧,我们这体检可是很严的。” 近日,一位华为员工在朋友圈爆料,自己在面试时遭到了面试官的无理取闹和人身攻击,原因仅仅是因…

中东文明史

转自:想要了解完整的中东文明史?这篇文章成全你 - 知乎 (zhihu.com) 写在前面 中东文明是人类历史上最古老的文明。人类祖先从东非大裂谷走出之后,首先选择定居在中东地区的新月沃土上,并建立了人类历史上有文字记载的第一个文明…

利用Frp实现内网穿透(docker实现)

文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器&#xff08…

【zabbix】zabbix客户端配置

1、部署zabbix客户端 #zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。 #zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。 systemctl disable --now firewalld setenforce 0 hostnamectl set-hostname…

C语言 | Leetcode C语言题解之第171题Excel表列序号

题目: 题解: int titleToNumber(char* columnTitle) {int number 0;long multiple 1;for (int i strlen(columnTitle) - 1; i > 0; i--) {int k columnTitle[i] - A 1;number k * multiple;multiple * 26;}return number; }

【Linux 基础】文件与目录管理

1. 文件和目录的基本概念 文件:是数据的集合,可以是文本、图像、视频等。 目录(也称为文件夹):是文件和子目录的集合,用于组织文件。 2. 目录和路径 绝对路径:从根目录(/&#x…

已经被驳回的商标名称还可以申请不!

看到有网友在问,已经驳回的商标名称还可以申请不,普推商标知产老杨觉得要分析看情况,可以适当分析下看可不可以能申请,当然最终还是为了下证 ,下证概率低的不建议申请。 先看驳回理由,如果商标驳回是绝对理…

Spring Boot 学习第七天:动态代理机制与Spring AOP

1 概述 在Java的世界中,实现AOP的主流方式是采用动态代理机制,这点对于Spring AOP也一样。代理机制的主要目的就是为其他对象提供一种dialing以控制对当前对象的访问,用于消除或缓解直接访问对象带来的问题。通过这种手段,一个对象…

Java | Leetcode Java题解之第169题多数元素

题目: 题解: class Solution {public int majorityElement(int[] nums) {int count 0;Integer candidate null;for (int num : nums) {if (count 0) {candidate num;}count (num candidate) ? 1 : -1;}return candidate;} }

(2011-2022年) 全国各省快递业务量与快递业务收入面板数据

中国快递业近年来随着电子商务的蓬勃发展而迅速壮大,成为现代生活中不可或缺的一部分。快递业务量与收入的面板数据为我们提供了一个观察中国快递市场繁荣与多元化的窗口。 数据来源 中国统计年鉴 参考文献 胡润哲, 魏君英, 陈银娥. 数字经济发展对农村居民服务…