详解iptables

iptables 是 Linux 操作系统中用于管理网络流量的工具。它通过配置一系列规则,来决定数据包的处理方式,如允许、拒绝、记录或转发网络数据包。iptables 在防火墙、安全和网络地址转换(NAT)方面发挥着重要作用。


iptables 的基本结构

iptables [选项] [链] [条件] -j [动作]
  • 选项:影响命令执行方式,如使用哪张表,列出当前规则等。
  • 链(Chain):指定规则应用于哪个数据包处理链,如 INPUT(输入流量)、OUTPUT(输出流量)或 FORWARD(转发流量)。
  • 条件:指定规则适用的网络流量条件,如 IP 地址、端口号、协议等。
  • 动作(Action):定义规则匹配时要执行的动作,如 ACCEPT(允许)、DROP(拒绝)、LOG(记录日志)等。

iptables 的表格和链

表格作用
filter默认表,负责管理允许或拒绝数据包。
nat负责网络地址转换 (NAT),如端口转发、源地址转换 (SNAT)、目的地址转换 (DNAT)。
mangle修改数据包内容或修改服务质量 (QoS) 字段。
raw配置是否对数据包进行连接追踪。

常见链(Chains)

描述
INPUT用于处理进入本地系统的数据包。
OUTPUT用于处理从本地系统发出的数据包。
FORWARD用于处理需要在系统间转发的数据包。
PREROUTING数据包进入路由前处理,通常用于目标地址转换 (DNAT)。
POSTROUTING数据包离开路由后处理,通常用于源地址转换 (SNAT)。

常用参数及作用

参数作用示例
-t [表]指定使用的表(如 filter, nat 等)。iptables -t nat -A PREROUTING ...
-A [链]在指定链的末尾添加规则。iptables -A INPUT ...
-I [链] [编号]在指定链的指定位置插入规则。iptables -I INPUT 1 ...
-D [链] [规则]删除指定链的某条规则,规则可通过行号或具体规则来确定。iptables -D INPUT 1
-L [链]列出指定链中的规则,如果不指定链,则列出所有链的规则。iptables -L
-F [链]清空指定链中的所有规则,如果不指定链,则清空所有链的规则。iptables -F INPUT
-s [地址]指定源 IP 地址,可以是具体 IP、网络段(CIDR)或主机名。iptables -A INPUT -s 192.168.1.1 ...
-d [地址]指定目标 IP 地址,可以是具体 IP、网络段或主机名。iptables -A OUTPUT -d 192.168.1.100 ...
-p [协议]指定协议(如 tcpudpicmp)。iptables -A INPUT -p tcp ...
--dport [端口]指定目标端口(仅适用于 tcpudp 协议)。iptables -A INPUT -p tcp --dport 80
--sport [端口]指定源端口(仅适用于 tcpudp 协议)。iptables -A INPUT -p tcp --sport 22
-j [动作]指定匹配规则后执行的动作,如 ACCEPT(允许)、DROP(丢弃)、LOG(记录日志)。iptables -A INPUT -j ACCEPT
-m state --state [状态]基于连接状态匹配数据包(如 NEW, ESTABLISHED, RELATED 等)。iptables -A INPUT -m state --state NEW
-n禁止解析主机名和服务名称,直接显示 IP 和端口号,以提高显示速度。iptables -L -n
--limit限制匹配规则的频率,防止大量日志记录或流量。iptables -A INPUT -p icmp --limit 5/m
-v详细模式,显示更多信息,如接口名称、流量统计等。iptables -L -v
--log-prefix "[信息]"在日志中添加自定义前缀,用于标识记录的数据包。iptables -A INPUT -j LOG --log-prefix "SSH attempt: "

iptables 的常见用法示例

1. 允许 SSH 访问(端口 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许来自任何 IP 的 SSH 连接。

2. 拒绝所有外部访问除 HTTP (80) 和 HTTPS (443)
iptables -P INPUT DROP iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT

设置默认策略为拒绝所有外部流量,但允许 HTTP 和 HTTPS 连接。

3. 防止 IP 段 192.168.1.0/24 的访问
iptables -A INPUT -s 192.168.1.0/24 -j DROP

拒绝来自网络段 192.168.1.0/24 的所有流量。

4. 配置网络地址转换 (NAT)

将流量从端口 8080 转发到本地机器的端口 80:

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
5. 限制 ICMP ping 请求频率
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

限制 ping 请求的频率为每秒一次。

6. 记录访问失败的 SSH 尝试
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH attempt: "

在日志中记录所有尝试访问端口 22 的数据包。


总结

iptables 是一个强大的工具,通过定义一系列规则,它可以控制系统接收、转发或发出的数据包。你可以使用 iptables 配置防火墙、实现 NAT、限制网络流量或记录网络活动。理解其表格、链和参数的作用,可以帮助你更好地管理和保护 Linux 系统的网络安全。

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

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

相关文章

文档图像恢复

文档图像恢复是指通过技术手段对损坏或质量不佳的文档图像进行修复,以提高其可读性和可用性。这种修复可以包括去除图像的噪声、畸变、阴影、模糊等多种问题,使文档图像更清晰、易于阅读。 文档图像恢复通常使用各种图像处理技术,包括但不限…

一个基于Vue3 + Arco Design + Vite3 + Pinia开箱即用的高质量中后台管理系统(附源码)

前言 随着业务的发展与复杂性的增加,现有的中后台管理系统面临着越来越多的挑战,如开发效率低下、系统性能瓶颈、项目扩展性差等问题。这些问题不仅影响了开发者的日常工作,还可能成为项目长期发展的障碍。那么,是否有一款软件能…

LabVIEW提高开发效率技巧----利用第三方库和工具

LabVIEW开发不仅依赖于自身强大的图形化编程能力,还得益于其庞大的用户社区和丰富的第三方库。这些工具和库能够帮助开发者快速解决问题,提升开发效率,避免从头开始编写代码。 1. LabVIEW工具网络(NI Tools Network) …

一些硬件知识(二十二)

搅拌机的转子是裸露在外面的,因此有一个安全开关,当上杯放上去后会按压安全开关,这样可以启动转子,否则是无法启动转子的,所以有些设备不通电或者转子不动是因为安全开关损坏: 、如下图,装上杯子…

详细分析Spring的动态代理机制

文章目录 1. JDK动态代理和CGLIB动态代理的区别1.1 适用范围1.2 生成的代理类1.3 调用方式 2. 问题引入3. 创建工程验证 Spring 默认采用的动态代理机制3.1 引入 Maven 依赖3.2 UserController.java3.3 UserService.java3.4 UserServiceImpl.java(save方法添加了Tra…

JAVA开源项目 房屋租赁系统 计算机毕业设计

本文项目编号 T 041 ,文末自助获取源码 \color{red}{T041,文末自助获取源码} T041,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

Linux中使用cp命令的 -f 选项,但还是提醒覆盖的问题

问题: linux 在执行cp的命令的时候,就算是执行 cp -f 也还是会提醒是否要进行替换。 问题原因: 查看别名,alias命令,看到cp的别名为cp -i,那就是说cp本身就是自带覆盖提醒,就算我们加上-f 的…

CentOS中使用DockerCompose方式部署带postgis的postgresql(附kartoza/docker-postgis镜像下载)

场景 CentOS中使用Docker部署带postgis的postgresql: CentOS中使用Docker部署带postgis的postgresql_centos postgis插件在容器中如何安装-CSDN博客 上面使用Docker搜索和拉取kartoza/postgis时并没有任何限制。 当下如果不能科学上网时,大部分镜像源…

JavaEE: 创造无限连接——网络编程中的套接字

文章目录 Socket套接字TCP和UDP的区别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP api的使用UDPDatagramSocketDatagramPacketInetSocketAddress练习 TCPServerSocketSocket练习 Socket套接字 Socket是计算机网络中的一种通信机制&#xff0…

《机器人SLAM导航核心技术与实战》第1季:第9章_视觉SLAM系统

视频讲解 【第1季】9.第9章_视觉SLAM系统-视频讲解 【第1季】9.1.第9章_视觉SLAM系统_ORB-SLAM2算法(上)-视频讲解 【第1季】9.1.第9章_视觉SLAM系统_ORB-SLAM2算法(下)-视频讲解 【第1季】9.2.第9章_视觉SLAM系统_LSD-SLAM算法…

项目集成 与封装

1.element-plus 硅谷甄选运营平台,UI组件库采用的element-plus,因此需要集成element-plus插件!!! 官网地址:https://element-plus.gitee.io/zh-CN/ 由于是后台管理系统 所以我们全部引入 pnpm install element-plus import {…

Spring:项目中的统一异常处理和自定义异常

介绍异常的处理方式。在项目中,都会进行自定义异常,并且都是需要配合统一结果返回进行使用。 1.背景引入 (1)背景介绍 为什么要处理异常?如果不处理项目中的异常信息,前端访问我们后端就是显示访问失败的…

Trace纳米侦查无人机技术详解

纳米无人机,作为微型无人机的一种,通常指尺寸和重量都非常小的无人机,其重量一般不超过几百克,甚至更小。这类无人机由于体积小、重量轻,具备高度的隐蔽性和灵活性,在军事侦察、环境监测、搜救行动等领域具…

Linux文件IO(八)-文件共享

什么是文件共享?所谓文件共享指的是同一个文件(譬如磁盘上的同一个文件,对应同一个 inode)被多个独立的读写体同时进行 IO 操作。多个独立的读写体大家可以将其简单地理解为对应于同一个文件的多个不同的文件描述符,譬…

【吊打面试官系列-MySQL面试题】MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?

大家好,我是锋哥。今天分享关于【MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?】面试题,希望对大家有帮助; MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么? 以下是 MySQL_fetch_array 和 MySQL_fe…

主语部分、谓语部分、限定动词 (谓语动词) 和非限定动词 (非谓语动词)

主语部分、谓语部分、限定动词 {谓语动词} 和非限定动词 {非谓语动词} 1. 主语部分 (subject)1.1. Forms of the subject 2. 谓语部分 (predicate)2.1. Cambridge Dictionary2.2. Longman Dictionary of Contemporary English2.3. 谓语部分和谓语动词2.4. Traditional grammar …

广度优先搜索算法及其matlab程序详解

#################本文为学习《图论算法及其MATLAB实现》的学习笔记################# 算法用途 广度优先搜索算法的应用 算法思想 广度优先搜索算法的步骤: ①,标号,令。 ②当所有标号为 的、与顶点 相关联的边的端点都已标号时,则停止;否则,把与 相关联的边的未标号的…

上位机图像处理和嵌入式模块部署(linux小系统开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 和若干年前相比较,现在嵌入式linux开发要简单得多。稍微贵一点的有树莓派,国产的有各种水果派,基本上都可以按照…

LeetCode 面试经典150题 190.颠倒二进制位

复习知识:正数的原码、反码、补码相同,负数的反码在其原码的基础上, 符号位不变,其余各个位取反,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1 (即在反码的基础上1)。 题目:颠倒给定的 32 位无符号…

【SQLite数据库常规使用命令】

之前在做围绕数据库相关的一些小工具的时候,想找一款数据库作为小工具的资料库。需求是:不用复杂的安装,支持简单SQL,空间占用小,操作简单等等。 结合着之前接触到的一些研发同事做的产品的使用经验,我想到…