iptables 4表5链 个人心得

一、4表5链之间的关系

        iptables是Linux防火墙中最常用的包过滤工具。要想理解它的运行机制就必须了解iptables的4表5链。

4表名称及功能介绍

        filter:过滤数据包

        nat:用于网络地址转换(包含DNAT、SNAT、MASQUERADE、REDIRECT)

        mangle:用于对特定数据包的修改(几乎不用)

        raw:决定数据包是否被状态跟踪机制处理,降低开销,从而提高性能(几乎不用)

5链名称及数据包匹配位置介绍

        PREROUTING:对数据包作路由选择前应用此链中的规则。(所有的数据包进来的时侯都先由这个链处理)

        INPUT:进来的数据包应用此规则链中的策略

        FORWARDING:转发数据包时应用此规则链中的策略

        OUTPUT:外出的数据包应用此规则链中的策略

        POSTROUTING:对数据包作路由选择后应用此链中的规则。(所有的数据包出来的时侯都先由这个链处理)

再讲一下表链规则3者之间的关系。表相当于链的集合,1张表中会存放多条链。链相当于规则的集合,1条链就是由多条规则组成(匹配原则从上至下,若数据包匹配了第一条规则则对数据包执行相应动作跳出该链,若不匹配则对下一条规则进行匹配,若都不匹配则执行最后的默认规则)。同时,1条链会作用于多张表中。

下图为4张表分别所存放的链

 我们常用的是nat和filter这两张表。

表的处理优先级:raw>mangle>nat>filter

二、结合场景讲解数据包在4表5链中的流向

场景一:同一内网中的通讯(最简单的场景)

        假定两台主机在同一个广播域下,这样的两台主机互访是不需要经过路由器寻址转发的。现在我用windows来做客户端,Linux来做服务端同时启用iptables。在ping的过程中windows主机会先做一次arp解析(只考虑IPV4)然后找到目标主机。通过icmp报文来分析数据包的流向,此时向linux服务器进来的报文会先经过PREROUTING链,由于目的地址就是它本身会进入INPUT链。l然后服务器要回包,因为是它自己本身产生的包,所以会先通过OUTPUT链,再出接口前经过POSTROUTING链。最后到达windows主机。

场景二:家庭客户端访问某企业官网

        家庭客户端会通过网关去找到路由器,路由器会根据路由表寻址,发现这个地址不在路由表内只有走默认路由,所以路由器会把客户端的源地址在SNAT后给到运营商设备,运营商在经过各种路由协议查表层层转发找到该网站映射后到主机地址(比如企业防火墙上),防火墙上启用了iptables,防火墙会把外部访问我内部提供web服务主机的地址通过DNAT的方式先把外部请求地址转化为一个内网地址,这个内网地址去访问我的web服务器。此时会先经过PREROUTING,然后由于目的地址不是自己,它就把报文扔给FORWADING链,最后给POSTROUTING。然后就从防火墙出去了被web服务器接受后,它要回包,它只知道请求是从防火墙这里过来的,就给防火墙回。过程同理也是PREROUTING、FORWADING、POSTROUTING。

小结:

所以报文的流向可以分为以下几种:
请求的目的地址为本机的报文:PREROUTING -> INPUT
请求的目的地址经过本机的报文:PREROUTING -> FORWARD -> POSTROUTING
由本机发出的报文(通常为响应报文):OUTPUT -> POSTROUTING

三、iptables里你不得不知的潜规则(默认规则)

iptables里默认用的表是filter,默认的规则是ACCEPT

如果说你想查看其他表的规则,该怎么做呢?

当使用-L,--list选项,列出当前的防火墙规则,还需要指定适当的Netfilter表(一filter,nat,mangle,raw或security)

iptables --table nat --list

简写为:iptables -t 表名 -L

 如果未指定特定表,则将该filter表用作默认表。

对mangle表修改默认规则

先查看mangle表的默认规则

把mangle表中INPUT链默认规则改为DROP

iptables -t mangle -P INPUT DROP

 

此时我的ssh已经连接不上了。在filter表中我的INPUT链是ACCEPT,这也正说明了表的过滤优先级 mangle>filter 。也能说明在filter表之前的3张表如果存在某条链中的某条规则能匹配上数据包并把它DROP(丢弃),那即使filter表链规则全是ACCEPT,也无法放通。因为前3张表中已经把数据包提前匹配并执行相应动作。所以我们常用的iptables主要是根据filter表中INPUT、FORWARD、OUTPUT这3条链来决定对数据包执行相应动作。

四、iptables常用语法

commands

-A -append

在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换 为多于一个(多个)地址时,这条规则会加到所有可能的地址(组合)后面。

-D -delete

从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则 指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。

-R -replace

从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地 址,该命令会失败。规则序号从1开始。

-I -insert

根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1, 规则会被插入链的头部。这也是不指定规则序号时的默认方式。

-L -list

显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起 使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。

-F -flush

清空所选链。这等于把所有规则一个个的删除。

--Z -zero

把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。

-N -new-chain

根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。

-X -delete-chain

删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删 除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非 内建的链。

-P -policy

设置链的目标规则。

-E -rename-chain

根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。 TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用 户自定义链都不能是规则的目标。

-h Help.

帮助。给出当前命令语法非常简短的说明。

举例:

1.添加一条编号为1的规则,放开ssh端口

iptables -I INPUT 1 -p tcp -m tcp --dport 22 -j ACCEPT  #添加filter表,开放22端口

2.仅允许192.168.1.0/24网段访问80和443端口

iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 80 443 -j ACCEPT

iptables -A INPUT -j DROP

五、iptables保存/恢复规则

保存iptables配置文件和恢复配置文件是一项必知必会的技能

iptables的配置文件默认保存在/etc/sysconfig/iptables-config 下

保存规则:iptables-save 这会保存到默认的位置,也可以自己指定某个位置
恢复规则:iptables-restore  后面可以跟指定的恢复的文件,不填会加载默认的位置
也可以把命令写入开机启动脚本/etc/rc.d/rc.local里面,实现开机自动恢复规则

参考文章

linux iptables存储的位置,iptables保存规则_呐喊中求生的博客-CSDN博客

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iptables是一个Linux下的防火墙工具,它基于Netfilter内核模块,可以过滤、修改和重定向网络数据包。iptables提供了很多不同的,可以通过这些来实现不同的防火墙策略。 iptables是数据包匹配规则的集合,包括: 1. filter:这是iptables默认的,用于过滤数据包,可以实现基本的防火墙功能。 2. nat:该用于网络地址转换(NAT),可以实现端口映射等功能。 3. mangle:该用于对数据包进行修改和处理,比如修改TTL、设置TOS等。 4. raw:该用于对数据包进行处理,但不会进行连接跟踪。 iptables是一系列规则的集合,用于对数据包进行处理,包括: 1. INPUT:处理所有进入本机的数据包。 2. OUTPUT:处理所有从本机发出的数据包。 3. FORWARD:处理所有通过本机进行转发的数据包。 4. PREROUTING:在数据包进入本机之前进行处理。 5. POSTROUTING:在数据包离开本机之后进行处理。 对于iptables的操作,可以使用以下命令: 1. iptables -A/-I/-D/-R chain rule:添加/插入/删除/替换规则到指定。 2. iptables -F chain:清空指定的所有规则。 3. iptables -L/-n/-v chain:列出指定的所有规则,可以选择是否显示IP地址和数据包数量。 4. iptables -P chain policy:设置指定的默认策略。 5. iptables-save/-restore:保存和恢复iptables规则。 以上是iptables防火墙的操作,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值