linux下的软件防火墙iptables——规则的定义与删除

关于ipitables防火墙的介绍,以及如何查看规则及清理规则等,在之前的一篇文章中已经讲述了,今天这里是演示如何制定防火墙的规则。因为工作中,主要会对filter链制定规则,所以这里我们主要也以fitler链做演示。

准备工作

制定规则前,我们首先关闭firewalld服务、开启iptables服务,然后清除已有的规则。

# systemctl stop firewalld# systemctl start iptables# iptables -F# iptables -X# iptables -Z

新增规则链

关于iptables的添加规则链,选项非常繁多,下面我们看基本用法:

iptables [-t tables] -A|I 链名 [-i|o 网络接口] [-m state] [--state 数据包状态] \> [-p 网络协议]  [-s 源地址 --sport 端口范围] [-d 目标地址 --dport 端口范围] \> -j [ACCEPT|DROP|REJECT]

选项与参数:

-A|I 链名        A表示在已有规则后添加规则,而I则是在最前面插入规则

-i|o 网络接口       i表示数据包进入的那个网络接口,需要和INPUT或PREROUTING链配合使用;o表示数据包出去的那个接口,需和OUTPUT链配合使用

-p 网络协议   常见的有tcp、upd、icmp以及all

-m state 数据包的状态

–state 数据包状态  常见的状态有INVALID(无效的数据包)、ESTABLISHED(已经成功连接的状态)、NEW(新建立的数据包)、RELATED(新连接与现有连接相关联)

-s 源地址  地址可以是ip地址,如192.168.1.110 或网络地址192.168.1.0/24

-d 目的地址

-j 后面接操作,常见的有ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)

针对ip、网络、网卡接口的规则制定

下面,给出几个规则链案例。我们允许从192.168.1.110发来的数据、拒绝192.168.1.111发来的数据。

# iptables -A INPUT -s 192.168.1.110 -j ACCEPT# iptables -I INPUT -s 192.168.1.111 -j DROP# iptables -vnLChain INPUT (policy ACCEPT 33 packets, 3048 bytes) pkts bytes target     prot opt in     out     source               destination             0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0               0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0           Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 18 packets, 1844 bytes) pkts bytes target     prot opt in     out     source               destination

允许192.168.1.0/24网络地址访问

# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT# iptables -vnLChain INPUT (policy ACCEPT 29 packets, 2328 bytes) pkts bytes target     prot opt in     out     source               destination             0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0               0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0               0     0 ACCEPT     all  --  *      *       192.168.1.0/24       0.0.0.0/0           Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 15 packets, 1460 bytes) pkts bytes target     prot opt in     out     source               destination

思考一个问题,192.168.1.111的数据包是会被接受还是会拒绝。从INPUT第一条规则看是会被拒绝,但从最后一条看,会接受。答案是会被拒绝,当满足其中一条规则时,就不会再走下面的规则了,所以说规则链的顺序也是非常重要的。

继续看案例:只要是本地回环地址lo都允许

# iptables -A INPUT -i lo -j ACCEPT

针对端口的规则制定

将进入本地的21端口数据包都阻挡掉

# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

将1024至65534之间的端口都开放,可以用 端口号:端口号 来表示一段连续的端口号

# iptables -A INPUT -i eth0 -p tcp --dport 1024:65534 -j ACCEPT

下面来看两个个综合性的规则

本机的3306端口,不对192.168.1.0/24这个网络开放。

本机的ssh服务,不接受192.168.1.0/24这个网络的1024:65535端口的数据包

# iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --dport 3306 -j DROP# iptables -A INPUT -i etc0 -p tcp -s 192.168.1.0/24 \> --sport 1024:65535 --dport 22 -j DROP

针对数据包的连接状态的规则制定

数据包常见的状态有INVALID(无效的数据包)、ESTABLISHED(已经成功连接的状态)、NEW(新建立的数据包)、RELATED(新连接与现有连接相关联)。

针对ESTABLISHED以及RELATED状态的数据包全都接受,针对INVALID状态的数据包全部丢弃

# iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # iptables -A INPUT -m state --state INVALID -j DROP

删除规则链

删除规则链基本和添加规则链一致,只不过-A换成-D即可,下面我们一起来删除几条规则。

# iptables-save# Generated by iptables-save v1.4.21 on Sun Nov 15 22:36:41 2020*filter:INPUT ACCEPT [4:1920]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [16:1380]-A INPUT -s 192.168.1.111/32 -j DROP-A INPUT -s 192.168.1.110/32 -j ACCEPT-A INPUT -s 192.168.1.0/24 -j ACCEPT……# iptables -t filter -D INPUT -s 192.168.1.111/32 -j DROP# iptables -D INPUT -s 192.168.1.110/32 -j ACCEPT

注:以上关于iptables的设置只会保存到内存中去,重启服务后系统后,这些设置将消失。所以,只要不把自己阻挡在外情况下,请尽管练习吧

若想保存规则的话,请输入/usr/libexec/iptables/iptables.init save来保存。

相关推荐:《linux视频教程》

以上就是linux下的软件防火墙iptables——规则的定义与删除的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/161730.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
质感之选,一加 Ace 3 点亮手机质感新高度
上一篇 2026年8月25日 09:29:56
下一篇 2026年8月25日 09:33:58

相关推荐

  • Linux添加用户的完整指南

    Linux添加用户的完整指南Linux添加用户的完整指南Linux添加用户的完整指南Linux添加用户的完整指南

    Linux是一个自由开源的操作系统,广泛应用于服务器、嵌入式设备和个人计算机等领域。在Linux系统中,添加新用户是一个常见的操作,本文将详细解释如何使用命令来添加新用户,包括具体的代码示例。 一、添加新用户的命令在Linux系统中,添加新用户的命令主要使用useradd命令。useradd命令用于…

    2026年9月29日 • 用户投稿
    000
  • sublime怎样实现终端代码交互 sublimeREPL环境搭建的教程

    sublime怎样实现终端代码交互 sublimeREPL环境搭建的教程sublime怎样实现终端代码交互 sublimeREPL环境搭建的教程sublime怎样实现终端代码交互 sublimeREPL环境搭建的教程sublime怎样实现终端代码交互 sublimeREPL环境搭建的教程

    安装package control后通过命令面板安装sublimerepl插件;2. 通过菜单或快捷键运行代码或发送选中代码到repl;3. 配置快捷键(如f5运行文件,ctrl+b发送选中代码)提升效率;4. 遇到问题时检查解释器路径、环境变量、文件编码或快捷键冲突;5. 可结合terminus插…

    2026年9月29日 • 用户投稿
    100
  • Sublime代码重构工具 Sublime自动化重构方案

    Sublime代码重构工具 Sublime自动化重构方案Sublime代码重构工具 Sublime自动化重构方案Sublime代码重构工具 Sublime自动化重构方案Sublime代码重构工具 Sublime自动化重构方案

    sublime text在代码重构中的核心局限性在于缺乏原生的深度语义理解和重构功能的碎片化;其优势在于极致速度、高度定制性及强大的多光标与正则查找替换能力。1.局限性:①缺乏深度语义分析,依赖简单文本替换易引入错误;②重构功能依赖第三方包,配置复杂且质量参差不齐。2.优势:①轻量快速,适合快速修改…

    2026年9月29日 • 用户投稿
    000
  • Linux命令:查看文件的最后一行

    Linux命令:查看文件的最后一行Linux命令:查看文件的最后一行Linux命令:查看文件的最后一行Linux命令:查看文件的最后一行

    标题:Linux命令:显示文件的末尾行 在Linux系统中,有许多强大的命令可以帮助用户管理文件和数据。其中一个非常常用的命令就是”tail”,该命令用于显示文件的末尾行。通过使用”tail”命令,用户可以快速查看文件的最后几行内容,对于日志文件等需要…

    2026年9月29日 • 用户投稿
    100
  • Sublime插件推荐列表 Sublime必备扩展精选集

    Sublime插件推荐列表 Sublime必备扩展精选集Sublime插件推荐列表 Sublime必备扩展精选集Sublime插件推荐列表 Sublime必备扩展精选集Sublime插件推荐列表 Sublime必备扩展精选集

    sublime text强大的原因在于其丰富的插件生态,选择合适插件可显著提升开发效率。1. package control是插件管理的基础,简化插件安装、更新与卸载;2. autofilename实现文件路径自动补全,减少输入错误;3. emmet通过缩写生成html/css代码,大幅提升前端开发…

    2026年9月29日 • 用户投稿
    100
  • 探究Linux中Vim编辑器的工作原理

    探究Linux中Vim编辑器的工作原理探究Linux中Vim编辑器的工作原理探究Linux中Vim编辑器的工作原理探究Linux中Vim编辑器的工作原理

    Linux中Vim编辑器工作模式详解 Vim编辑器是Linux系统中常用的文本编辑器之一,它具有强大的功能和灵活的操作方式,可以大大提高编辑文本的效率。Vim编辑器有多种工作模式,包括普通模式、插入模式、命令模式等,每种模式下的操作和功能都有所不同。本文将详细介绍Vim编辑器的工作模式,并附上具体的…

    2026年9月29日 • 用户投稿
    000
  • Sublime如何集成终端 Sublime内置命令行配置

    Sublime如何集成终端 Sublime内置命令行配置Sublime如何集成终端 Sublime内置命令行配置Sublime如何集成终端 Sublime内置命令行配置Sublime如何集成终端 Sublime内置命令行配置

    1.terminus插件是sublime text实现集成终端的核心方案,2.安装方式是通过package control搜索并安装,3.可通过快捷键自定义实现快速呼出终端面板或在当前文件目录启动终端,4.高级配置支持定义默认shell(如zsh或powershell)、调整字体颜色、设置工作目录等…

    2026年9月29日 • 用户投稿
    000
  • linux系统下的rz、sz上传和下载

    linux系统下的rz、sz上传和下载linux系统下的rz、sz上传和下载linux系统下的rz、sz上传和下载linux系统下的rz、sz上传和下载

    有时,我们需要在linux和windows之间传输文件,这时可以使用特定的命令。如果在你的系统中遇到“rz: command not found”的错误,可以通过以下命令来解决: 解决方案:yum install lrzsz -y 参数说明: -a, –ascii -b, –…

    2026年9月29日 • 用户投稿
    200
  • 深入解析Linux进程的启动方法

    深入解析Linux进程的启动方法深入解析Linux进程的启动方法深入解析Linux进程的启动方法深入解析Linux进程的启动方法

    Linux进程启动方式详解 在Linux操作系统中,进程的启动可以通过多种方式实现。无论是手动启动还是通过脚本自动启动,了解不同的启动方式对于系统管理和开发工作都是非常重要的。本文将详细介绍几种常见的Linux进程启动方式,并提供具体的代码示例来帮助读者更好地理解。 一、命令行启动进程 在Linux…

    2026年9月29日 • 用户投稿
    000
  • sublime如何集成外部编译系统 sublime自定义编译命令的教程

    sublime如何集成外部编译系统 sublime自定义编译命令的教程sublime如何集成外部编译系统 sublime自定义编译命令的教程sublime如何集成外部编译系统 sublime自定义编译命令的教程sublime如何集成外部编译系统 sublime自定义编译命令的教程

    解决sublime text集成外部编译系统的问题需创建并配置.sublime-build文件:进入preferences -> browse packages…目录,新建文件夹如mybuildsystem,并在其中创建类似java.sublime-build的文件;2. 编辑该文…

    2026年9月29日 • 用户投稿
    100
  • Linux环境变量机制的深度探究

    Linux环境变量机制的深度探究Linux环境变量机制的深度探究Linux环境变量机制的深度探究Linux环境变量机制的深度探究

    深入理解Linux环境变量机制,需要具体代码示例 Linux作为一种开放源代码的操作系统,具有广泛的应用场景和强大的定制能力,其中环境变量机制是其重要的特性之一。环境变量是在操作系统中定义的一种变量,用于保存系统中的信息,对于进程的运行和系统操作具有重要的作用。本文将深入探讨Linux环境变量的概念…

    2026年9月29日 • 用户投稿
    000
  • 如何在SublimeText中运行Python代码?快速配置Python环境的完整教程

    如何在SublimeText中运行Python代码?快速配置Python环境的完整教程如何在SublimeText中运行Python代码?快速配置Python环境的完整教程如何在SublimeText中运行Python代码?快速配置Python环境的完整教程如何在SublimeText中运行Python代码?快速配置Python环境的完整教程

    答案:配置Sublime Text运行Python需设置编译系统并解决编码与依赖问题。首先安装Python并配置环境变量,创建.py文件后,通过Tools→Build System→New Build System新建编译系统,写入调用python3的cmd命令并保存为Python3.sublime…

    2026年9月29日 • 用户投稿
    100
  • 如何在SublimeText中设置项目管理?实现多项目切换的配置教程

    如何在SublimeText中设置项目管理?实现多项目切换的配置教程如何在SublimeText中设置项目管理?实现多项目切换的配置教程如何在SublimeText中设置项目管理?实现多项目切换的配置教程如何在SublimeText中设置项目管理?实现多项目切换的配置教程

    答案:通过保存和编辑.sublime-project文件实现项目管理,配置folders和settings定义项目结构与个性化设置,使用“Rebuild Index”解决索引问题,结合Git插件集成版本控制,备份项目文件及用户配置目录确保配置安全。 Sublime Text 的项目管理功能,能让你在…

    2026年9月29日 • 用户投稿
    100
  • Linux块设备信息查看方法简明指南

    Linux块设备信息查看方法简明指南Linux块设备信息查看方法简明指南Linux块设备信息查看方法简明指南Linux块设备信息查看方法简明指南

    Linux是一种开源的操作系统,在服务器领域广泛应用。Linux系统支持多种硬件设备,并提供了丰富的命令和工具来管理这些设备。其中,块设备是Linux系统中重要的组成部分,可以用于存储数据,如硬盘、SSD等设备。本文将介绍如何在Linux系统中快速查看块设备信息的方法,并提供具体的代码示例。 一、查…

    2026年9月29日 • 用户投稿
    000
  • 如何在SublimeText中设置代码自动补全?提升编码效率的配置技巧

    如何在SublimeText中设置代码自动补全?提升编码效率的配置技巧如何在SublimeText中设置代码自动补全?提升编码效率的配置技巧如何在SublimeText中设置代码自动补全?提升编码效率的配置技巧如何在SublimeText中设置代码自动补全?提升编码效率的配置技巧

    Sublime Text的内置自动补全功能有限,需结合第三方插件如Anaconda或LSP实现智能补全。首先启用auto_complete并配置触发条件,再通过Package Control安装语言专属插件,如Python用Anaconda或LSP-pyright,JavaScript用TypeSc…

    2026年9月29日 • 用户投稿
    000
  • 安装系统时,遇到 “BIOS 设置与系统安装不兼容”,怎么调整?

    安装系统时,遇到 “BIOS 设置与系统安装不兼容”,怎么调整?安装系统时,遇到 “BIOS 设置与系统安装不兼容”,怎么调整?安装系统时,遇到 “BIOS 设置与系统安装不兼容”,怎么调整?安装系统时,遇到 “BIOS 设置与系统安装不兼容”,怎么调整?

    答案:BIOS设置与系统安装不兼容通常由启动模式、安全启动、硬盘模式等配置引起,需进入BIOS调整。首先检查Boot Mode,根据操作系统选择UEFI或Legacy BIOS;若安装Linux等非微软系统,可禁用Secure Boot;将SATA Mode设为AHCI以获得最佳性能,若驱动不支持可…

    2026年9月29日 • 用户投稿
    200
  • 如何查看Linux系统的磁盘使用量?

    如何查看Linux系统的磁盘使用量?如何查看Linux系统的磁盘使用量?如何查看Linux系统的磁盘使用量?如何查看Linux系统的磁盘使用量?

    标题:Linux如何查看磁盘使用情况? 在Linux系统中,查看磁盘使用情况是管理员和用户常见的操作之一。了解磁盘使用情况可以帮助用户及时释放磁盘空间、管理文件和提升系统性能。本文将介绍在Linux系统中如何查看磁盘使用情况,并提供具体的代码示例。 一、使用df命令 df命令是一个常用的命令,用于显…

    2026年9月29日 • 用户投稿
    100
  • Google Chrome 官方入口一键直达

    Google Chrome 官方入口一键直达Google Chrome 官方入口一键直达Google Chrome 官方入口一键直达Google Chrome 官方入口一键直达

    Google Chrome官方入口为https://www.google.com/chrome/,提供高效渲染、多标签管理、简洁界面、丰富插件生态及跨设备加密同步功能。 Google Chrome 官方入口一键直达在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来Google Chrome …

    2026年9月29日 • 用户投稿
    100
  • SublimeText运行CoffeeScript代码出错怎么办?设置Node.js的步骤

    SublimeText运行CoffeeScript代码出错怎么办?设置Node.js的步骤SublimeText运行CoffeeScript代码出错怎么办?设置Node.js的步骤SublimeText运行CoffeeScript代码出错怎么办?设置Node.js的步骤SublimeText运行CoffeeScript代码出错怎么办?设置Node.js的步骤

    答案:Sublime Text运行CoffeeScript报错主因是Node.js环境或构建系统配置不当。需先确认Node.js和CoffeeScript已安装并加入系统PATH,再创建含正确路径的CoffeeScript构建系统,使用绝对路径可避免环境变量问题,最后通过控制台排查常见路径、权限或语…

    2026年9月29日 • 用户投稿
    500
  • 如何在SublimeText中配置C++开发环境?快速搭建C++项目的教程

    如何在SublimeText中配置C++开发环境?快速搭建C++项目的教程如何在SublimeText中配置C++开发环境?快速搭建C++项目的教程如何在SublimeText中配置C++开发环境?快速搭建C++项目的教程如何在SublimeText中配置C++开发环境?快速搭建C++项目的教程

    答案是配置Sublime Text的C++开发环境需安装编译器并设置构建系统。首先安装MinGW-w64并配置PATH,验证g++可用;接着在Sublime中创建C++.sublime-build文件,定义编译和运行命令;推荐添加Run (Console)变体以支持交互输入;然后通过Package …

    2026年9月29日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信