如何列出和删除 iptables 防火墙规则

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

Iptables 是大多数 Linux 系统中网络安全中起着至关重要作用的防火墙。虽然许多 iptables 教程会教你如何创建防火墙规则来保护你的服务器,但这篇教程将专注于防火墙管理的另一个方面:列出和删除规则。

在本教程中,我们将涵盖如何执行以下 iptables 任务:

  • 列出规则
  • 清除数据包和字节计数器
  • 删除规则
  • 清空链(删除链中的所有规则)
  • 清空所有链和表,删除所有链,并接受所有流量

先决条件

本教程假设您正在使用安装了 iptables 命令的 Linux 服务器,并且您的用户具有 sudo 权限。

如果您需要帮助进行初始设置,请参考我们的 Ubuntu 20.04 初始服务器设置指南。该指南也适用于 Debian 和 CentOS。

按规范列出规则

首先让我们看看如何列出规则。查看活动的 iptables 规则有两种不同的方式:以表格形式或以规则规范列表的形式。这两种方法以不同的格式提供大致相同的信息。

要按规范列出所有活动的 iptables 规则,请使用 -S 选项运行 iptables 命令:

sudo iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ICMP
-N TCP
-N UDP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
...

如您所见,输出看起来就像用于创建它们的命令,而没有前置的 iptables 命令。如果您曾经使用过 iptables-persistentiptables save,这也会看起来类似于 iptables 规则配置文件。

列出特定链

如果您想将输出限制为特定链(INPUTOUTPUTTCP 等),您可以在 -S 选项之后直接指定链名称。例如,要显示 TCP 链中的所有规则规范,您将运行以下命令:

sudo iptables -S TCP
-N TCP
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT

现在让我们看看另一种查看活动的 iptables 规则的方式:作为规则表。

以表格形式列出规则

以表格形式列出 iptables 规则可以用于比较不同规则之间的差异。要以表格形式输出所有活动的 iptables 规则,请使用 -L 选项运行 iptables 命令:

sudo iptables -L

这将按链排序输出所有当前规则。

如果您想将输出限制为特定链(INPUTOUTPUTTCP 等),您可以在 -L 选项之后直接指定链名称。

让我们看一个 INPUT 链的示例:

sudo iptables -L INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere             ctstate INVALID
UDP        udp  --  anywhere             anywhere             ctstate NEW
TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ICMP       icmp --  anywhere             anywhere             ctstate NEW
REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable

输出的第一行指示链名称(在本例中为 INPUT),后跟其默认策略(DROP)。下一行包括表中每列的标题,然后是链的规则。让我们看看每个标题表示什么:

  • target:如果数据包匹配规则,则目标指定应对其执行的操作。例如,数据包可以被接受、丢弃、记录或发送到另一个链以与更多规则进行比较
  • prot:协议,如 tcpudpicmpall
  • opt:很少使用,此列指示 IP 选项
  • source:流量的源 IP 地址或子网,或 anywhere
  • destination:流量的目标 IP 地址或子网,或 anywhere

最后一列没有标签,表示规则的选项。这是规则的任何部分,不是由前面的列指示的。这可以是从源和目标端口到数据包的连接状态的任何内容。

显示数据包计数和累积大小

在列出 iptables 规则时,还可以显示匹配每个特定规则的数据包数量和数据包的累积大小(以字节为单位)。当试图大致了解哪些规则匹配数据包时,这通常是很有用的。要这样做,可以同时使用 -L-v 选项。

例如,让我们再次使用 -v 选项查看 INPUT 链:

sudo iptables -L INPUT -v

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 284K   42M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
  396 63275 UDP        udp  --  any    any     anywhere             anywhere             ctstate NEW
17067 1005K TCP        tcp  --  any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
 2410  154K ICMP       icmp --  any    any     anywhere             anywhere             ctstate NEW
  396 63275 REJECT     udp  --  any    any     anywhere             anywhere             reject-with icmp-port-unreachable
 2916  179K REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-proto-unreachable
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED

请注意,现在的列表中有两列额外的内容,即 pktsbytes

现在您知道了如何以各种方式列出活动的防火墙规则,让我们看看如何重置数据包和字节计数。

重置数据包计数和累积大小

如果您想要清除或归零规则的数据包和字节计数,可以使用 -Z 选项。它们也会在重新启动时重置。如果您想要查看服务器是否接收到与现有规则匹配的新流量,这将非常有用。

要清除所有链和规则的计数,请单独使用 -Z 选项:

sudo iptables -Z

要清除特定链中所有规则的计数,请使用 -Z 选项并指定链。例如,要清除 INPUT 链的计数,运行以下命令:

sudo iptables -Z INPUT

如果要清除特定规则的计数,请指定链名称和规则编号。例如,要将 INPUT 链中的第一个规则的计数归零,运行以下命令:

sudo iptables -Z INPUT 1

现在您知道了如何重置 iptables 的数据包和字节计数,让我们看看可以用来删除它们的两种方法。

按规则规范删除规则

删除 iptables 规则的一种方法是按规则规范进行。为此,可以使用带有 -D 选项的 iptables 命令,后跟规则规范。如果您想要使用此方法删除规则,可以使用规则列表 iptables -S 的输出来帮助。

例如,如果您想要删除丢弃无效传入数据包的规则(-A INPUT -m conntrack --ctstate INVALID -j DROP),可以运行以下命令:

sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

请注意,此处应该排除用于指示规则位置的 -A 选项,该选项在创建时使用。

按链和编号删除规则

删除 iptables 规则的另一种方法是按其行号。要确定规则的行号,列出表格格式的规则并添加 --line-numbers 选项:

sudo iptables -L --line-numbers

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
2    ACCEPT     all  --  anywhere             anywhere
3    DROP       all  --  anywhere             anywhere             ctstate INVALID
4    UDP        udp  --  anywhere             anywhere             ctstate NEW
5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6    ICMP       icmp --  anywhere             anywhere             ctstate NEW
7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
8    REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
9    REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable
10   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
...

这将在每个规则行中添加行号,由 num 标题指示。

一旦您知道要删除的规则,记录规则的链和行号。然后运行 iptables -D 命令,后跟链和规则编号。

例如,如果我们想要删除丢弃无效数据包的输入规则,我们可以看到它是 INPUT 链的规则 3。因此,我们应该运行以下命令:

sudo iptables -D INPUT 3

现在您知道了如何删除单个防火墙规则,让我们看看如何刷新规则链。

清空链

Iptables 提供了一种删除链中所有规则的方法,即清空链。本节将介绍多种清空链的方法。

清空单个链

要清空特定的链,即删除链中的所有规则,可以使用-F或等效的--flush选项,以及要清空的链的名称。

例如,要删除INPUT链中的所有规则,请运行以下命令:

sudo iptables -F INPUT

清空所有链

要清空所有链,即删除防火墙中的所有规则,可以单独使用-F或等效的--flush选项:

sudo iptables -F

清空所有规则,删除所有链,并接受所有流量

本节将向您展示如何清空所有防火墙规则、表和链,并允许所有网络流量。

首先,将每个内置链的默认策略设置为ACCEPT。这样做的主要原因是确保您不会通过SSH被锁定在服务器外:

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

然后清空natmangle表,清空所有链(-F),并删除所有非默认链(-X):

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

您的防火墙现在将允许所有网络流量。如果现在列出您的规则,您将看到没有规则,只剩下三个默认链(INPUTFORWARDOUTPUT)。

结论

通过本教程,您已经学会了如何列出和删除 iptables 防火墙规则。

请记住,通过iptables命令进行的任何 iptables 更改都是临时的,需要保存才能在服务器重新启动时持久化。这在常见防火墙规则和命令教程的保存规则部分有所涉及。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

esp8266 at指令链接wifi时一直connect disconnest

那是你的连接wifi的名字密码有误或者热点有问题,看看热点是不是把设备拉入黑名单或者设置为5G或者连了校园网或者设置了最多链接设备

IntelliJ IDEA 2024.2 新特性概览

文章目录 1、重点特性:1.1 改进的 Spring Data JPA 支持1.2 改进的 cron 表达式支持1.3 使用 GraalJS 作为 HTTP 客户端的执行引擎1.4 更快的编码时间1.5 K2 模式下的 Kotlin 性能和稳定性改进 2、用户体验2.1 改进的全行代码补全2.2 新 UI 成为所有用户的默认界面2.3 Search E…

C++模拟实现vector容器【万字模拟✨】

更多精彩内容..... 🎉❤️播主の主页✨😘 Stark、-CSDN博客 本文所在专栏: 学习专栏C语言_Stark、的博客-CSDN博客 项目实战C系列_Stark、的博客-CSDN博客 数据结构与算法_Stark、的博客-CSDN博客 座右铭:梦想是一盏明灯&#xff…

设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)

文章目录 设计模式概述1、原型模式2、原型模式的使用场景3、优点4、缺点5、主要角色6、代码示例7、总结题外话关于使用序列化实现深拷贝 设计模式概述 创建型模式:工厂方法、抽象方法、建造者、原型、单例。 结构型模式有:适配器、桥接、组合、装饰器、…

深度学习中的结构化概率模型 - 结构化概率模型的深度学习方法篇

序言 在深度学习的广阔领域中,结构化概率模型( Structured Probabilistic Model \text{Structured Probabilistic Model} Structured Probabilistic Model)扮演着至关重要的角色。这类模型利用图论中的图结构来表示概率分布中随机变量之间的…

Spring Boot ⽇志

目录 1.⽇志使⽤ 2.⽇志级别 3.⽇志配置 3.1配置⽇志级别 3.2⽇志持久化 3.3配置⽇志⽂件分割 4.更简单的⽇志输出 1.⽇志使⽤ 在使用之前我们先来了解一下为什么要使用? ⽇志的⽤途 1.系统监控 我们可以通过⽇志记录这个系统的运⾏状态,对数…

20款奔驰CLS300升级原厂抬头显示HUD 23P智能辅助驾驶 触摸屏人机交互系统

以下是为您生成的一份关于 18 款奔驰 CLS 老款改新款的改装文案: 18 款奔驰 CLS 老款改新款:科技升级,畅享极致驾驶体验 在汽车改装的世界里,每一次的升级都是对卓越的追求。今天,让我们一同探索 18 款奔驰 CLS 老款改…

在登陆功能中添加Redis缓存

目录 基于Redis实现短信登录 实现流程图 实现代码 解决登录状态刷新问题 初始方案思路: 实现代码 发送验证码 登陆实现 如果是新用户则自动创建 运行测试 基于Redis实现短信登录 实现流程图 实现代码 Overridepublic Result login(LoginFormDTO loginForm…

Thinkphp/Laravel旅游景区预约系统的设计与实现

目录 技术栈和环境说明具体实现截图设计思路关键技术课题的重点和难点:框架介绍数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 技术栈和环境说明 采用PHP语言开发,开发环境为phpstudy 开发工具notepad并使用MYSQL数据库…

【深度学习】— 多层感知机介绍、 隐藏层、从线性到非线性、线性模型的局限性

【深度学习】— 多层感知机介绍 4.1 多层感知机4.1.1 隐藏层线性模型的局限性引入隐藏层 4.2 从线性到非线性线性组合的局限性引入非线性堆叠更多隐藏层 4.1 多层感知机 在第 3 节中,我们介绍了 softmax 回归,并实现了其从零开始的实现和基于高级 API 的…

如何在dblp官网下载外文文献

文章目录 零、dblp官网一、直接下载pdf二、Zotero 零、dblp官网 ①老域名:https://dblp.uni-trier.de/ ②简化域名:dblp.org 一、直接下载pdf 1.举例,搜索 image matching 2.直接点击红色的PDF按钮 (可能会因为卡,点了没反应。…

No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史

大家好!作为一个喜欢探索本质的INTP,我整理了一份简明易懂的Web安全笔记。希望能帮助你轻松掌握这个领域的核心知识。 这份笔记涵盖了Web发展的历程,从静态的Web 1.0到智能化的Web 3.0。我们将探讨URL和HTTP协议,揭示它们在网络中…

24-10-2-读书笔记(二十二)-《契诃夫文集》(一)上([俄] 契诃夫 [译] 汝龙)啊!真想生活。

文章目录 《契诃夫文集》(一)上([俄] 契诃夫 [译] 汝龙 )早期生活——塔甘罗格(人物家庭简介)学生时期——莫斯科(写作与学习)流浪时期——哈萨林(游历与流浪&#xff09…

Java中的封装、继承、多态

目录 封装 概念 包 继承 多态 向上转型 一、直接赋值 二、方法传参 三、返回值 向上转型注意事项 向下转型 格式 重写 重写和重载的区别 动态绑定 静态绑定和动态绑定 封装 概念 简单来说就是套壳屏蔽细节。 举例: 想要访问它们时需要一些“接口”…

Java项目实战II基于Java+Spring Boot+MySQL的大创管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 在当前创新创业氛围浓厚的背景下,大学生创新创业项目(简称“大创”&#xff0…

国内旅游:现状与未来趋势分析

在当今社会快速发展的背景下,国内旅游更是呈现出蓬勃的发展态势。中国,这片拥有悠久历史、灿烂文化和壮丽山河的广袤土地,为国内旅游的兴起与发展提供了得天独厚的条件。 本报告将借助 DataEase 强大的数据可视化分析能力,深入剖…

基于SpringBoot的学习资源共享平台

运行环境: jdk8tomcat9mysqlIntelliJ IDEAmavennodejs 设计选用前后端分离的单体架构方式 后端:SpringBootMybatis-PluslogbackElasticsearchRedisMySQLJwtsmtp阿里云OSS 前端:WebPackVueJsAnt Designaxios 主要模块:反馈管理、资源管理、…

【最新】微信小程序连接onenet——stm32+esp8266+onenet实现查看温湿度,控制单片机

微信小程序——stm32esp8266onenet实现查看温湿度,控制单片机 (最新已验证)stm32 新版 onenet dht11esp8266/01s mqtt物联网上报温湿度和控制单片机(保姆级教程) :↓↓👇 👇 👇 &#x1f447…

unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题分析二、解决方法1. 添加项目设置碰撞检测通道2.玩家角色碰撞设置3.怪物角色碰撞预设 最终效果 前言 在使用unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效…

(17)MATLAB使用伽马(gamma)分布生成Nakagami-m分布的方法1

文章目录 前言一、使用伽马分布生成Nakagami分布随机变量的方法一二、MATLAB仿真代码后续 前言 MATLAB在R2013a版本中引入Nakagami分布对象,可以用来生成Nakagami随机变量。但是在更早的MATLAB版本中,并没有可以直接生成 Nakagami分布的随机变量的内置的…