一、概述:什么是iptables?

在Linux系统中,网络安全防护的核心工具之一便是iptables。它绝非一个简单的命令,而是一个功能强大的用户态工具,与Linux内核中的netfilter框架协同工作,共同构建了Linux的防火墙体系。理解iptables,意味着你获得了精细控制服务器网络流量的能力,是实现网络安全的基石。


二、核心架构:四表五链

要掌握iptables,必须首先理解其“四表五链”的规则组织结构。这好比一个高效的物流分拣中心

  • 规则(Rules):是具体的分拣指令(如“来自上海的包裹发往A区”)。
  • 链(Chains):是挂在不同节点的分拣流水线,负责在特定时机处理数据包。
  • 表(Tables):是规则链的集合,每种表专用于处理一类特定的网络任务。
1. 四张表(Tables):按功能划分
表名核心功能内置链
raw连接跟踪处理,用于决定是否对数据包进行状态跟踪PREROUTING, OUTPUT
mangle拆改数据包,可修改TOS、TTL等报文头信息PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
nat网络地址转换,实现SNAT(源地址转换)和DNAT(目标地址转换)PREROUTING, OUTPUT, POSTROUTING
filter最常用的表,负责过滤数据包,决定是否放行INPUT, FORWARD, OUTPUT

优先级顺序raw -> mangle -> nat -> filter

2. 五条链(Chains):按时机划分

数据包在网络栈中的不同处理节点被称为“链”:

  • INPUT:处理发往本机的数据包(入站)。
  • OUTPUT:处理本机发出的数据包(出站)。
  • FORWARD:处理经本机转发的数据包(网关)。
  • PREROUTING:在路由决策之前修改数据包(通常用于DNAT)。
  • POSTROUTING:在路由决策之后修改数据包(通常用于SNAT)。
3. 数据包处理流程

一个数据包的“一生”会经历以下路径,与链息息相关:

  1. 入站数据PREROUTING -> INPUT -> 本机进程
  2. 转发数据PREROUTING -> FORWARD -> POSTROUTING
  3. 出站数据本机进程 -> OUTPUT -> POSTROUTING

三、iptables语法与操作指南
1. 基本命令结构
iptables -t <表名> <管理选项> <链名> <匹配条件> -j <控制类型>
  • -t:指定操作的表,默认为filter
  • 管理选项:指定操作方式,如添加、删除、查看规则。
  • 链名:指定操作的链。
  • 匹配条件:指定要过滤的数据包特征。
  • -j:指定数据包的处理方式(控制类型)。
2. 常用管理选项
选项全称功能说明示例
-AAppend在链的末尾追加规则iptables -A INPUT ...
-IInsert在链的指定位置插入规则(默认为开头)iptables -I INPUT 2 ...
-DDelete删除指定的规则iptables -D INPUT 3
-LList查看规则列表iptables -L -n -v
-FFlush清空链中的所有规则iptables -F
-PPolicy设置链的默认策略iptables -P INPUT DROP
-nnumeric以数字形式显示地址和端口(常与-L联用)iptables -nL
--line-numbers显示规则的行号(便于删除)iptables -L --line-numbers
3. 常见控制类型(-j 参数)
控制类型作用
ACCEPT允许数据包通过
DROP丢弃数据包,不响应任何信息(更安全)
REJECT拒绝数据包,并向发送方返回拒绝信息(更友好)
LOG将匹配的数据包信息记录到日志(/var/log/messages),然后继续匹配下一条规则
SNAT源地址转换,用于内网机器共享公网IP上网
DNAT目标地址转换,用于将公网IP的请求映射到内网服务器

四、实战案例:常用规则配置
  1. 禁止任何主机ping本机

    iptables -t filter -A INPUT -p icmp -j REJECT
    # 更严格的设置(无响应)
    # iptables -t filter -A INPUT -p icmp -j DROP
    
  2. 禁止所有从ens33网卡进来的SSH连接请求

    iptables -A INPUT -i ens33 -p tcp --dport 22 -j DROP
    
  3. 查看并管理规则

    # 查看INPUT链的规则,并显示行号
    iptables -L INPUT --line-numbers# 删除INPUT链的第2条规则
    iptables -D INPUT 2# 清空INPUT链的所有规则
    iptables -F INPUT
    
  4. 设置默认策略(最后的安全防线)

    # 配置默认拒绝所有入站连接,然后单独开放所需端口(白名单策略,最安全)
    iptables -P INPUT DROP
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许HTTP
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许HTTPS
    iptables -A INPUT -i lo -j ACCEPT # 允许本地回环通信
    

在这里插入图片描述
在这里插入图片描述


五、总结

iptables是Linux网络安全的基石,通过其高度灵活的“四表五链”结构,实现了对网络流量极其精细的控制。掌握它需要理解:

  1. 核心概念netfilteriptables的关系,以及四表五链的划分依据和工作流程。
  2. 语法精髓:规则的增删改查命令,特别是-A, -I, -D, -P, -j等关键选项。
  3. 最佳实践:采用白名单策略(默认拒绝,按需放行)是构建安全系统的黄金法则。

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

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

相关文章

WebRTC音频QoS方法一.1(NetEQ之音频网络延时DelayManager计算补充)

一、整体简介 NetEQ计算的网络延时&#xff0c;直接影响变速算法的决策。在变速算法里面启动关键的作用。 网络延时计算需要考虑两种情况&#xff1a; 1、单纯抖动的网络延时计算&#xff0c;在UnderrunOptimizer类中实现&#xff1b; 2、在丢包乱序场景下的网络延时计算。…

实时操作系统FreeRTOS移植到STM32VGT6

一、前言 下载平台:STM32F407VGT6 代码使用平台:VSCode 编译器:arm-none-aebi-gcc 程序下载工具:STlink 批处理工具:make 移植的FreeRTOS版本:V11.2.0 其实此方法并不局限在arm-none-aebi-gcc中&#xff0c;此方法对于Keil5也是可以使用的&#xff0c; 只不过复制的一些文件不同…

从线到机:AI 与多模态交互如何重塑 B 端与 App 界面设计

当下&#xff0c;界面设计已经不再是单纯的“画屏幕”。AI 的快速发展让我们不得不重新审视&#xff1a;交互和视觉究竟会走向什么样的未来&#xff1f;无论是移动端 App&#xff0c;还是复杂的 B 端产品&#xff0c;设计的核心都在于让界面更懂用户。本文尝试从三个角度切入&a…

【智能化解决方案】大模型智能推荐选型系统方案设计

大模型智能推荐选型系统方案设计0 背景1 问题分析与定义2 模型假设与简化3 核心模型构建3.1 决策变量与参数定义3.2 目标函数3.3 约束条件4 模型求解与验证4.1 求解策略4.2 验证方法4.3 模型迭代优化5 方案实施与系统设计5.1 系统架构设计5.2 工作流程5.3 关键算法实现5.4 时序…

【Java基础】HashMap、HashTable与HashSet:区别、联系与实践指南

Java中HashMap、HashTable与HashSet的深度解析&#xff1a;区别、联系与实践指南 引言 在Java集合框架中&#xff0c;HashMap、HashTable与HashSet是最常用的哈希型数据结构。它们因高效的查找、插入与删除性能&#xff08;平均时间复杂度O(1)&#xff09;&#xff0c;广泛应用…

互联网大厂Java面试实战:核心技术栈与场景化提问解析(含Spring Boot、微服务、测试框架等)

互联网大厂Java面试实战&#xff1a;核心技术栈与场景化提问解析 本文通过模拟面试官与求职者谢飞机的对话&#xff0c;深入探讨互联网大厂Java开发的核心技术栈面试问题&#xff0c;涵盖Java SE、Spring生态、微服务、大数据等多个领域&#xff0c;结合音视频、电商、AIGC等业…

人工智能-python-深度学习-参数初始化与损失函数

文章目录参数初始化与损失函数一、参数初始化1. 固定值初始化1.1 全零初始化1.2 全1初始化1.3 任意常数初始化2. 随机初始化2.1 均匀分布初始化2.2 正态分布初始化3. Xavier初始化4. He初始化5. 总结二、损失函数1. 线性回归损失函数1.1 MAE&#xff08;Mean Absolute Error&am…

Android Glide常见问题解决方案:从图片加载到内存优化

全面总结Glide使用中的典型问题与解决方案&#xff0c;助力提升应用性能与用户体验作为Android开发中最流行的图片加载库之一&#xff0c;Glide以其简单易用的API和强大的功能深受开发者喜爱。然而&#xff0c;在实际使用过程中&#xff0c;我们往往会遇到各种问题&#xff0c;…

linux系统ollama监听0.0.0.0:11434示例

docker应用如dify访问本地主机部署的ollama&#xff0c;base_url不管配"http://localhost:11434"&#xff0c;还是"http://host_ip:11434"都会报错。这是因为1&#xff09;docker容器访问http://localhost:11434&#xff0c;其实访问的是docker容器自身的服…

Java微服务AI集成指南:LangChain4j vs SpringAI

今天想再完善一下做的微服务项目&#xff0c;想着再接入一个人工客服&#xff0c;于是学习了一下langchan4j的内容&#xff0c;未完一、技术定位辨析&#xff1a;LangChain4j vs Spring AI vs OpenAIOpenAI&#xff1a;AI模型提供商 提供大语言模型API&#xff08;如GPT-4o&…

华为光学设计面试题

16. 题目&#xff1a;设计一个用于机器视觉检测的光学系统时&#xff0c;如何保证在高速运动下成像的清晰度和稳定性&#xff1f;(出处&#xff1a;华为智能制造光学检测项目组招聘面试题)17. 题目&#xff1a;请说明在光学系统设计中&#xff0c;如何权衡景深和分辨率的关系&a…

vue3和react的异同点

这是一个前端领域非常核心的话题。Vue 3 和 React 都是极其优秀的现代前端框架&#xff0c;它们在理念和实现上既有相似之处&#xff0c;也有显著区别。 下面我将从多个维度详细对比它们的异同点。核心哲学与设计理念特性Vue 3React设计理念渐进式框架与 “救世主”声明式 UI 库…

assetbuddle hash 比对

1.测试 &#xff1a;当在预设上的数据有修改时&#xff0c;生成的ab也会有修改&#xff0c;具体到某个ab的.manifest里会有相应的变化&#xff0c;AssetFileHash 会修改 如图所示&#xff1a; ManifestFileVersion: 0 CRC: 2818930197 Hashes: AssetFileHash: serializedVersio…

Spring Boot `@Configuration` 与 `@Component` 笔记

Spring Boot Configuration 与 Component 笔记 1️⃣ 基本概念注解作用是否有代理适用场景Component标记普通组件&#xff0c;将类交给 Spring 容器管理❌ 没有 CGLIB 代理普通 Bean&#xff0c;工具类、过滤器、监听器等Configuration标记配置类&#xff0c;用来声明 Bean✅ 有…

二、JVM 入门——(三)栈

栈的定义 栈也是一块区域&#xff0c;用来存放数据的。栈也叫栈内存&#xff0c;主管Java程序的运行。 栈是私有的&#xff0c;是在线程创建时创建&#xff0c;所以它的生命期是跟随线程的生命期&#xff0c;线程结束栈内存也就释放。 因此对于栈来说不存在垃圾回收问题&…

深度学习入门第一课——神经网络实现手写数字识别

昨天我们讲了深度学习的大致框架&#xff0c;下面我们用深度学习网络来实现一个小项目——手写数字识别。完整代码import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvision.transforms import ToTensor…

Vue中的scoped属性

理解&#xff1a; 在 .vue 文件中&#xff0c;scoped 是 <style> 标签的一个属性&#xff0c;作用是让样式只作用于当前组件&#xff0c;避免样式污染其他组件 scoped 让样式只在自己的组件内生效&#xff0c;不会影响到其他组件的同名元素 举例 没有 scoped 的情况&…

S2B2B系统哪个好,商淘云、数商云、金蝶云苍穹供应链批发哪个比较靠谱

在数字化商业浪潮汹涌的当下&#xff0c;S2B2B系统已成为众多企业优化供应链、提升运营效率、拓展业务版图的关键利器。从大型企业的复杂产业链协同&#xff0c;到中小企业对上下游资源的整合与把控&#xff0c;S2B2B系统的身影无处不在。但面对市场上层出不穷的各类S2B2B系统&…

利用3台机器搭建Kubernetes集群

文章目录1 机器准备修改主机名(可选)配置IP地址和主机名映射关闭防火墙关闭swap2 安装docker修改并更新软件源安装docker设置路由转发规则&#xff0c;并使配置生效安装 kubelet&#xff0c;kubeadm&#xff0c;kubectl3 初始化集群4 集群初始化5 work节点加入6 部署网络插件本…

C6.3:发射结交流电阻

当一个小交流电压加在发射结上&#xff0c;会产生发射极交流电流&#xff0c;该交流电流的大小取决于Q点位置&#xff0c;而曲线是弯曲的&#xff0c;所以Q点在曲线上的位置越高&#xff0c;发射极交流电流的峰值越大。发射极总电流是直流分量和交流分量叠加而成&#xff0c;即…