当前位置: 首页 > news >正文

iptables学习笔记

iptables的结构:

iptables由上而下,由Tables,Chains,Rules组成。

一、iptables的表tables与链chains

iptables有Filter, NAT, Mangle, Raw四种内建表:

1. Filter表

Filter是iptables的默认表,它有以下三种内建链(chains):

INPUT链 – 处理来自外部的数据。

OUTPUT链 – 处理向外发送的数据。

FORWARD链 – 将数据转发到本机的其他网卡设备上。

2. NAT表

NAT表有三种内建链:

PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。

POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

OUTPUT链 – 处理本机产生的数据包。

3. Mangle表

Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链(chains):

  • PREROUTING

  • OUTPUT

  • FORWARD

  • INPUT

  • POSTROUTING


4. Raw表

Raw表用于处理异常,它具有2个内建链:

PREROUTING chain

OUTPUT chain

5.小结

二、IPTABLES 规则(Rules)

规则的关键知识点:

Rules包括一个条件和一个目标(target)

如果满足条件,就执行目标(target)中的规则或者特定值。

如果不满足条件,就判断下一条Rules。

目标值(Target Values)

在target里指定的特殊值:

ACCEPT – 允许防火墙接收数据包

DROP – 防火墙丢弃包

QUEUE – 防火墙将数据包移交到用户空间

RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。

实战

1.丢弃80端口的tcp连接

iptables -t filter -I INPUT -p tcp --dport 80 -j DROP

2.丢弃ssh不需要的包

iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
  • -m state --state ESTABLISHED,RELATED 是一个iptables规则中的匹配条件,用于匹配特定的连接状态。这个条件允许通过已建立或相关状态的连接。在iptables中,连接状态用于确定数据包在网络连接中的当前状态,以便过滤器可以根据这些状态来决定是否允许或拒绝数据包通过。

    • ESTABLISHED:表示数据包属于已建立的连接,即已经通过三次握手建立起连接的数据包。

    • RELATED:表示数据包与已建立的连接相关,例如某些协议(如FTP)会在数据连接之外建立一个控制连接,这些数据包就可以被标记为RELATED状态。

    通过在输出链中添加这个条件,你的iptables规则将允许出站SSH连接的响应数据包通过,确保SSH会话的正常运行。

3. 阻止无效的出站HTTP连接(80端口)

iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW -j DROP

new 代表tcp三次握手中的第一次握手

这种连接状态的匹配可用于识别尚未建立的连接,从而可以应用适当的策略来控制是否允许它们通过防火墙。

在你的情景中,-m state --state NEW -j DROP 这样的规则将阻止新建立的、未经请求回应的连接通过,帮助增加服务器的安全性。这样做可以防止未经授权的数据流量进入服务器。

http://www.lryc.cn/news/130542.html

相关文章:

  • Express 实战(一):概览
  • SpringBoot中的可扩展接口
  • 中大型无人机远程VHF语音电台系统方案
  • 数字孪生和SCADA有哪些区别?
  • [bug] 记录version `GLIBCXX_3.4.29‘ not found 解决方法
  • git 回滚相关问题
  • SQL力扣练习(十一)
  • 如何将常用的jdbc方法封装起来???
  • 【1day】复现任我行协同CRM存在SQL注入漏洞
  • 3D虚拟形象数字替身的制作及应用介绍
  • Spring中JavaBean的生命周期及模式
  • Qt5开发环境-银河麒麟V10ARM平台
  • 「Qt」文件读写操作
  • 0101前期准备-大数据学习
  • TypeScript教程(四)基本运算符
  • 计算机网络的性能指标
  • BBS项目day04 文章详情页、点赞点菜、评论功能
  • el-table分页后序号连续的两种方法
  • Nginx反向代理技巧
  • kafka--kafka的基本概念-副本概念replica
  • css伪元素实现li列表圆点相连+锚点跳转悬浮窗实现
  • IronPDF for .NET Crack
  • 【C++进阶】继承、多态的详解(多态篇)
  • excel快速选择数据、选择性粘贴、冻结单元格
  • 【数仓建设系列之一】什么是数据仓库?
  • Vue2-配置脚手架、分析脚手架、render函数、ref属性、props配置项、mixin配置项、scoped样式、插件
  • VS2015项目中,MFC内存中调用DLL函数(VC6生成的示例DLL)
  • 人流目标跟踪pyqt界面_v5_deepsort
  • angular 子组件ngOnChanges监听@input传入的输入属性
  • 移植PeerTalk开源库IOS的USB通信监听服务到QT生成的FFmpeg工程