firewall-cmd

检查与安装

在 CentOS 8 上安装和启用 firewalld(提供 firewall-cmd 工具)的步骤如下:


1. 检查 **firewalld** 是否已安装

在安装前,先检查系统中是否已安装:

sudo firewall-cmd --version

如果返回版本号,说明已安装。如果提示 command not found,继续以下步骤。


2. **安装 ****firewalld**

运行以下命令安装 firewalld

sudo dnf install firewalld -y

3. **启用并启动 ****firewalld**

安装完成后,启用并启动 firewalld 服务:

sudo systemctl enable firewalld
sudo systemctl start firewalld

4. 验证防火墙状态

确认 firewalld 已成功运行:

sudo systemctl status firewalld

如果看到类似以下输出,表示服务已正常运行:

● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since ...

5. **测试 ****firewall-cmd**

确保 firewall-cmd 工具可用:

sudo firewall-cmd --state

如果返回 running,表示防火墙已正常运行。


6. 开放常用端口(可选)

安装完成后,可以根据需要开放一些常用端口:

  • 开放 HTTP 端口(80):
sudo firewall-cmd --permanent --add-service=http
  • 开放 HTTPS 端口(443):
sudo firewall-cmd --permanent --add-service=https
  • 重新加载规则以生效:
sudo firewall-cmd --reload

7. 卸载其他防火墙工具(可选)

如果你之前使用的是 iptables 或其他防火墙工具,可以在 firewalld 安装后将其卸载或停用以避免冲突:

sudo systemctl stop iptables
sudo systemctl disable iptables

完成以上步骤后,firewalldfirewall-cmd 已成功安装并启用!

查看配置

在 CentOS 8 中,可以使用 **firewall-cmd** 命令查看当前防火墙的配置和状态。以下是一些常用的方法:


1. 查看防火墙状态

检查防火墙是否正在运行:

sudo firewall-cmd --state
  • 返回 running 表示防火墙已启用。
  • 返回 not running 表示防火墙未启动。

2. 查看当前活动的规则

查看当前启用的服务:
sudo firewall-cmd --list-services

这将列出当前区域中已启用的服务(如 httphttps)。

查看当前启用的端口:
sudo firewall-cmd --list-ports

这将显示所有显式开放的端口及其协议(如 8080/tcp)。


3. 查看所有区域的配置

列出所有区域:
sudo firewall-cmd --get-zones
查看当前默认区域:
sudo firewall-cmd --get-default-zone
查看特定区域的详细配置(以 public 为例):
sudo firewall-cmd --zone=public --list-all

这将显示以下信息:

  • 启用的服务
  • 显式开放的端口
  • 默认行为等

4. 查看防火墙规则是否永久生效

查看永久规则(不依赖当前运行状态):

sudo firewall-cmd --list-all --permanent

5. 检查防火墙日志

如果需要深入分析,可以检查日志记录:

sudo journalctl -u firewalld

示例输出说明

以下是运行 sudo firewall-cmd --zone=public --list-all 的示例输出:

public (active)target: defaulticmp-block-inversion: nointerfaces: eth0sources:services: dhcpv6-client http https sshports: 8080/tcpprotocols:masquerade: noforward-ports:source-ports:icmp-blocks:rich rules:

说明:

  • **services**:列出了启用的服务(如 HTTP、HTTPS 等)。
  • **ports**:列出了显式开放的端口(如 8080/tcp)。
  • **masquerade**:是否启用了网络地址转换 (NAT)。
  • **rich rules**:复杂自定义规则。

通过这些命令,你可以清晰了解防火墙当前的配置状态,并根据需要进行调整。

4o

iptables

如果 CentOS 8 没有安装 firewalld(或 firewall-cmd),你可以使用 iptables 来查看和管理防火墙规则。以下是查看当前防火墙配置的命令和步骤:


1. 查看当前的防火墙规则

sudo iptables -L -n -v
  • **-L**:列出所有规则。
  • **-n**:以数字显示(不会解析为主机名或服务名)。
  • **-v**:显示详细信息,如流量统计。

2. 查看指定链的规则

iptables 的规则按链划分(默认链为 INPUTOUTPUTFORWARD)。如果你只需要查看某一链的规则,可以指定链名称:

查看 INPUT 链的规则:
sudo iptables -L INPUT -n -v
查看 OUTPUT 链的规则:
sudo iptables -L OUTPUT -n -v

3. 查看 NAT(Network Address Translation) 规则

如果你正在使用网络地址转换 (NAT),可以查看 NAT 表中的规则:

sudo iptables -t nat -L -n -v
  • **-t nat**:指定 NAT 表。

4. 检查端口转发规则

如果有端口转发规则,可以在 NAT 表中查找 PREROUTINGPOSTROUTING 链的配置:

sudo iptables -t nat -L PREROUTING -n -v
sudo iptables -t nat -L POSTROUTING -n -v

5. 查看当前规则的保存文件

iptables 的规则通常会保存到配置文件中,CentOS 8 的保存文件路径可能是:

/etc/sysconfig/iptables

用文本编辑器查看规则:

sudo cat /etc/sysconfig/iptables

6. 查看系统服务状态

如果防火墙规则由系统服务管理,可以检查相关服务的状态:

sudo systemctl status iptables

示例输出说明

运行 sudo iptables -L -n -v 后的示例输出:

Chain INPUT (policy ACCEPT 300 packets, 20400 bytes)pkts bytes target     prot opt in     out     source               destination100  6000 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:2250  3000 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8020  1500 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0

说明:

  • **policy ACCEPT**:默认策略为接受(ACCEPT)。
  • **tcp dpt:22**:规则允许 TCP 22 端口(SSH)流量。
  • **tcp dpt:80**:规则允许 TCP 80 端口(HTTP)流量。
  • **DROP**:规则拒绝特定来源的流量。

7. 管理规则

如果需要调整规则,可直接使用 iptables 命令进行管理。例如:

添加规则:

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

删除规则:

sudo iptables -D INPUT -p tcp --dport 8080 -j ACCEPT

要删除 iptables 中的规则,首先需要找到规则的具体位置。由于你提供的规则在 PREROUTING 链中,且规则是通过 REDIRECT 操作将端口 80 和 443 转发到 8081 和 8443,因此我们需要精确地删除这些规则。

步骤 1: 查看当前 PREROUTING 链中的规则
  1. 使用 iptables -t nat -L PREROUTING -n 来查看 NAT 表中 PREROUTING 链的规则,确保能够确认规则。
sudo iptables -t nat -L PREROUTING -n

输出类似如下所示:

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
31325 1640K REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 8443
591K   24M REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8081
步骤 2: 删除规则

iptables 删除规则的命令格式是:

sudo iptables -t nat -D <chain> <rule-specification>

或者可以使用规则编号删除。

方案 1:基于规则内容删除

根据规则的内容删除,将规则中每个元素逐一指定。

  • 删除第一个规则(端口 443 转发到 8443):
sudo iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
  • 删除第二个规则(端口 80 转发到 8081):
sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081
方案 2:基于规则编号删除

你还可以通过规则编号删除,这要求你先查看规则编号。

  1. 运行命令列出规则及编号:
sudo iptables -t nat -L PREROUTING --line-numbers -n

输出可能是这样的:

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination         
1    31325 1640K REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 8443
2    591K   24M REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8081
  1. 使用规则编号删除:
    • 删除编号为 1 的规则(端口 443 转发到 8443):
sudo iptables -t nat -D PREROUTING 1
- 删除编号为 2 的规则(端口 80 转发到 8081):
sudo iptables -t nat -D PREROUTING 2
步骤 3: 保存 iptables 配置

CentOS 8 默认使用 iptables 配置不会自动保存,因此删除规则后,需要保存配置,以确保规则删除后能够持久化。

  1. 使用 service 命令保存配置:
sudo service iptables save
  1. 启动 iptables 服务以确保配置生效:
sudo systemctl start iptables
  1. 设置 iptables 开机启动:
sudo systemctl enable iptables
步骤 4: 验证规则删除

最后,验证规则是否删除成功:

sudo iptables -t nat -L PREROUTING -n

如果规则已成功删除,输出中将不再显示这些 REDIRECT 规则。


总结

你可以通过 iptables -t nat -D PREROUTING 命令删除基于端口的转发规则,或者使用规则编号删除。删除完规则后,别忘了保存配置以确保修改在重启后生效。

保存规则:
sudo service iptables save

补充说明

如果系统需要更现代的防火墙工具,可以考虑安装并切换到 firewalldnftables,这将更易于管理。

总结

概念描述
表 (Tables)主要有 filternatmanglerawsecurity,分别处理不同类型的网络流量和规则。
链 (Chains)每个表包含多个链,最常见的链有 INPUTOUTPUTFORWARD,每个链包含过滤规则。
默认链策略每个链有默认策略,常见的策略有 ACCEPT(接受)和 DROP(丢弃)。
NAT 和过滤nat 表处理地址转换,filter 表处理数据包过滤。

唯一确定规则的元素

  1. 表 (Table)iptables 中有不同的表(例如 filternatmanglerawsecurity),每个表有不同的作用。规则必须指定所在的表。
  2. 链 (Chain):每个表中有若干个链(例如 INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING),规则会应用到这些链之一。不同链的规则用途不同。
  3. 协议 (Protocol):规则通常会基于协议进行过滤,如 tcpudpicmp 等,指定协议帮助精确匹配流量类型。
  4. 端口 (Port):对于 tcpudp 协议,通常会指定具体的端口(如 8022)。这使得规则能够匹配特定的应用服务。
  5. 跳转目标 (Jump target):每个规则都有一个目标(也叫跳转目标,如 ACCEPTDROPREJECT,或是跳转到其他链),它决定了数据包匹配规则后应该如何处理。

唯一确定规则的方式

为了唯一确定一个 iptables 规则,可以将上述几个元素结合起来:

<> + <> + <协议> + <端口> + <跳转目标>

具体解释

  • 表 (Table):规则所在的表,决定了数据包处理的上下文。例如 filter 表用于过滤流量,nat 表用于网络地址转换。
  • 链 (Chain):链决定了规则适用于数据流的哪个阶段。例如,INPUT 链用于入站流量,FORWARD 链用于转发流量,OUTPUT 链用于出站流量。
  • 协议 (Protocol):规则匹配特定协议的数据包,例如 tcpudpicmp。你可以指定协议类型来匹配特定类型的流量。
  • 端口 (Port):对于某些协议(如 TCP 和 UDP),可以进一步限定端口号。例如,HTTP 服务通常使用端口 80,SSH 服务通常使用端口 22
  • 跳转目标 (Jump target):在规则匹配后,数据包将会执行的操作。常见的目标包括 ACCEPT(允许数据包通过)、DROP(丢弃数据包)和 REJECT(拒绝数据包并返回错误)。

示例规则

假设我们有如下的规则:

sudo iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
  • filter(该规则是过滤表中的规则)
  • INPUT(该规则是应用于入站流量的)
  • 协议tcp(该规则只匹配 TCP 协议的数据包)
  • 端口80(该规则只匹配目的端口为 80 的 TCP 数据包,即 HTTP 流量)
  • 跳转目标ACCEPT(如果数据包匹配规则,则允许通过)

如果另一个规则是:

sudo iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
  • filter
  • INPUT
  • 协议tcp
  • 端口22(该规则匹配 SSH 流量)
  • 跳转目标ACCEPT

这两个规则是不同的,因为它们匹配不同的端口(80 和 22)。因此,在 iptables 中,表 + 链 + 协议 + 端口 + 跳转目标 组合起来能唯一确定一条规则。

更复杂的规则

你还可以使用更多的匹配条件,例如:

  • 源 IP 地址-s 192.168.1.1
  • 目标 IP 地址-d 192.168.1.2
  • 源端口--sport 1024
  • TTL(生存时间)--ttl 64

例如,下面的规则:

sudo iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT

此规则的唯一确定性进一步增强,因为它不仅匹配端口 80 的 TCP 流量,还限制了源 IP 为 192.168.1.100


总结

要唯一确定 iptables 规则,必须综合考虑以下几个元素:

  • :规则所在的表
  • :规则应用于的链
  • 协议:例如 tcpudp
  • 端口:协议所涉及的端口号
  • 跳转目标:规则匹配后应执行的操作

通过这些组合,你可以准确地描述和唯一确定 iptables 的每一条规则。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用PPT进行科研绘图过程中常用的快捷键

PPT科研绘图常用快捷键速查表功能类别快捷键功能描述基础操作与选择Ctrl A全选幻灯片上的所有对象。Ctrl D快速复制选中的对象&#xff0c;并自动保持等间距排列。Shift Click多选多个对象。Ctrl G将选中的多个对象组合成一个整体。Ctrl Shift G取消组合。Ctrl 拖动复制…

`strchr` 字符串查找函数

1) 函数的概念与用途 strchr 是 C 标准库中的一个基础但极其重要的字符串处理函数&#xff0c;它的名字来源于"string chracter"&#xff08;字符串字符&#xff09;。这个函数的功能非常明确&#xff1a;在字符串中查找特定字符的第一次出现位置。 可以将 strchr 想…

Redis 678

Redis 8 是当前的最新稳定版&#xff08;截至 2024 年中&#xff09;&#xff0c;它在 Redis 7 的基础上带来了更多重要改进。我们来对这三个主要版本进行一次全面的功能和性能对比。 核心演进脉络 Redis 6 (2020)&#xff1a;多线程时代的开创者。解决了网络 I/O 瓶颈&#xf…

【大白话解析】 OpenZeppelin 的 Address 库:Solidity安全地址交互工具箱​(附源代码)

🧩 一、这个文件是干嘛的?—— Address.sol 是个“工具箱” 你可以把这个 Address.sol文件理解为一个 ​​“工具箱”​​,里面装了一堆​​专门用来安全地跟别的地址(账户或合约)打交道的工具函数​​。 在区块链世界里,地址(address)可以是: ​​外部账户(EOA)…

漫谈《数字图像处理》之测不准原理

在数字图像处理中&#xff0c;提到的 “测不准原理” &#xff0c;和量子力学里由海森堡提出的 “不确定性原理” &#xff08;Heisenberg uncertainty principle&#xff0c;也叫海森堡测不准原理&#xff09;有一定的类比关系&#xff0c;但本质上并不是同一个概念。以下为详…

Linux服务测试

一、环境准备确认 确保 4 台主机&#xff08;APPSRV、STORAGESRV、ROUTERSRV、CLIENT &#xff09;网络连接正常&#xff0c;虚拟机网卡模式按要求设置&#xff08;APPSRV、STORAGESRV 为 NAT 模式&#xff1b;ROUTERSRV 为双网卡&#xff0c;NAT 仅主机模式&#xff1b;CLIE…

2.Shell脚本修炼手册---创建第一个 Shell 脚本

2. 创建第一个 Shell 脚本 文章目录2. 创建第一个 Shell 脚本2.1 什么是 Shell 脚本&#xff1f;2.1.1 脚本开头&#xff1a;告诉系统用什么程序执行2.1.2 脚本注释&#xff1a;给人看的 “说明书”2.1.3 bash 与 sh 的区别2.2 如何执行 Shell 脚本&#xff1f;方法 1&#xff…

Day22 顺序表与链表的实现及应用(含字典功能与操作对比)

day22 顺序表与链表的实现及应用&#xff08;含字典功能与操作对比&#xff09; 使用顺序表实现查字典功能 支持连续查询单词&#xff0c;输入 #quit 退出程序。数据格式示例如下&#xff1a; a\0 indef art one\r\n word mean [---buf--->] [---i--…

51单片机与stm32单片机,先学习哪一个?

纠结 51 单片机和 STM32 该先学哪个&#xff0c;就像刚学开车的人在自动挡和手动挡之间打转。有人一上来就爱开自动挡&#xff0c;踩着油门就能跑&#xff0c;不用琢磨换挡踩离合的门道&#xff1b;有人偏要从手动挡练起&#xff0c;哪怕起步时熄十几次火&#xff0c;也得搞明白…

DS 0 | 数据结构学习:前言

数据结构是CS最基础、最重要的课程之一在学习数据结构时&#xff0c;通常来讲&#xff0c;学生遇到的难点不在于对数据结构的理解&#xff0c;而在于如何写程序。即编写特定的程序&#xff0c;来实现这些数据结构&#xff0c;特别是如何按照面向对象思想将一个个数据结构设计成…

JVM-(8)JVM启动的常用命令以及参数

JVM启动的常用命令以及参数 在上文 JVM 堆内存逻辑分区 中已经使用过一些 jvm 启动命令&#xff0c;本文着重讲述JVM启动命令用法以及一些常用的参数 一. 基本命令格式 java [options] classname [args...] java [options] -jar filename.jar [args...]① [options] - 命令行…

GO学习记录七——上传/下载文件功能,添加启动运行工具

本来计划是学习Docker部署的&#xff0c;研究了一天没搞出来&#xff0c;得出结论是需要翻墙&#xff0c;懒得弄了&#xff0c;暂时放置。 一、以下是&#xff0c;上传/下载代码&#xff0c;和之前是重复的&#xff0c;只多添加了&#xff0c;上传/下载功能。 测试目录为工程根…

SQL中对视图的操作命令汇总

以下是基于搜索结果整理的SQL视图操作命令汇总&#xff0c;按功能分类说明&#xff1a; 一、创建视图 使用 CREATE VIEW 语句定义视图&#xff0c;需指定视图名称和基础查询表达式&#xff1a; CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHER…

【Spring Cloud 微服务】2.守护神网关Gateway

目录 1.API网关的作用 2.Spring Cloud Gateway 是什么&#xff1f; 3.核心由来与背景 1. 微服务架构的挑战&#xff1a; 2. API 网关模式的兴起&#xff1a; 3. Zuul 的局限性&#xff1a; 4. Spring Cloud Gateway 的诞生&#xff1a; 4.核心特征&#xff1a; 5.核心概…

解读商业智能BI,数据仓库中的元数据

之前的文章讨论过数据分析、数据治理、数据仓库等等&#xff0c;即使是非业内人员从字面意思&#xff0c;也是可以了解一二的&#xff0c;但是&#xff0c;很多人对于元数据可能就比较陌生了。那么&#xff0c;今天我们就来聊一聊元数据管理。数据仓库要说元数据&#xff0c;那…

3 种无误的方式删除 Itel 手机上的短信

如果你希望释放存储空间、保护隐私&#xff0c;或者准备出售或转让手机&#xff0c;删除 Itel 手机上的短信是一个实用的步骤。无论是收件箱中充斥着垃圾短信、过时的对话还是敏感内容&#xff0c;删除不需要的短信可以让你的消息体验更加干净和安全。本文将向你介绍 3 种简单且…

【学习笔记】网络安全专用产品类别与参考标准

一、基本标准 1.1 关键设备 网络关键设备认证依据的强制标准为 GB 40050-2021。 1.2 专用产品 网络安全专用产品认证依据的强制标准为 GB 42250-2022。 二、数据备份与恢复产品标准 相关标准&#xff1a; GB/T 29765-2021《信息安全技术 数据备份与恢复产品技术要求与测试评…

Pytho“张量”(Tensor)和 Java的“向量”(Vector)区别和联系

在Python和Java中&#xff0c;“张量”&#xff08;Tensor&#xff09;和“向量”&#xff08;Vector&#xff09;是两个不同语境下的概念&#xff0c;它们的设计目标、功能和应用场景存在显著差异&#xff0c;但也存在一定的共性。以下从区别和联系两方面详细说明&#xff1a;…

Ubuntu部署K8S集群

Ubuntu部署K8S集群 本例以三台Ubuntu24.04为例,1master节点2worker节点 环境准备 修改hostname,三台服务器分别执行 hostnamectl set-hostname k8s-master01hostnamectl set-hostname k8s-worker01hostnamectl set-hostname k8s-worker02 配置静态ip(不同系统修改方法略微差…

openEuler系统安装Ascend Docker Runtime的方法

在openEuler系统中使用NPU前一定要安装Ascend Docker Runtime,也是在安装CANN和mis-tei前的必备工作。 使用容器化支持、整卡调度、静态vNPU调度、动态vNPU调度、断点续训、弹性训练、推理卡故障恢复或推理卡故障重调度的用户,必须安装Ascend Docker Runtime。 下面是具体的安…