一文带你了解iptables用法及端口转发

前言:逆风的方向,更适合飞翔!

一、iptables简介

1.定义:

iptables的是一个用户空间实用程序,其允许系统管理员来配置IP分组过滤器规则的的Linux内核 防火墙,因为不同的实施Netfilter的模块。过滤器组织在不同的表中,其中包含有关如何处理网络流量数据包的规则链。不同的内核模块和程序目前用于不同的协议;iptables适用于 IPv4,ip6tables适用于IPv6,arptables 适用于ARP,ebtables 适用于以太网帧。

2.操作:

IPTABLES需要提升权限才能操作,必须由root用户执行,否则无法运行。在大多数 Linux 系统上,iptables 安装为/usr/sbin/iptables并记录在其手册页中,可以man iptables在安装时打开使用。它也可以在/sbin/iptables 中找到,但由于 iptables 更像是一个服务而不是“基本二进制文件”,首选位置仍然是/usr/sbin。

3.用途

iptables也常用于泛指内核级组件。x_tables是内核模块的名称,其中包含所有四个模块使用的共享代码部分,还提供用于扩展的 API;随后,Xtables或多或少被用来指代整个防火墙(v4、v6、arp 和 eb)架构。

4.概述:

iptables允许系统管理员定义包含用于处理数据包的规则链的表。每个表都与不同种类的数据包处理相关联。通过在链中顺序遍历规则来处理数据包。链中的规则可以导致转到或跳转到另一个链,并且可以重复执行所需的任何嵌套级别。(跳转就像一个“调用”,即记住跳转的点。)每个到达或离开计算机的网络数据包至少要经过一条链。

数据包流路径。数据包从给定的盒子开始,并会沿着特定的路径流动,具体取决于环境。

数据包的来源决定了它最初穿过哪条链。有五个预定义的链(映射到五个可用的 Netfilter 钩子),尽管一个表可能没有所有的链。预定义的链有一个策略,例如 DROP,如果数据包到达链的末端,它就会应用于数据包。

系统管理员可以根据需要创建任意数量的其他链。这些连锁店没有政策;如果一个数据包到达链的末端,它将返回到调用它的链。链可能是空的。

PREROUTING:在做出路由决定之前,数据包将进入此链。

INPUT: 数据包将在本地交付。它与具有打开套接字的进程没有任何关系;本地交付由“本地交付”路由表控制:ip route show table local。

FORWARD:所有已路由且不用于本地传送的数据包将遍历此链。

OUTPUT:从机器本身发送的数据包将访问此链。

POSTROUTING: 路由决定了。数据包在将它们交给硬件之前进入这个链。

1632106652_6147f89c128e4f6374397.png!small?1632106652341

二、iptables用法

1.基础表类型

raw表决定数据包是否被数据跟踪处理 mangle表用来mangle数据包,可以改变不同的包及包头的内容 nat表用于转换包的源地址和目的地址 filter表是专门过滤包

2.基础用法

1.iptables —help1632106672_6147f8b0f32a81705f352.png!small

2.iptables -t nat -nL —line //查看当前表的规则1632106707_6147f8d3f058f90483566.png!small?1632106708076

链与链之间的区别

1.PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址,是从外部连接过来时的转发

2.OUTPUT链改变本地产生的包的目的地址,是本机连接时的转发

POSTROUTING链在包就要离开防火墙之前改变其源地址 ## 3.语法规则

iptablesiptables -nvL 查看规则iptables -F 清空规则iptables save 保存写入的规则iptables -Z 清空iptables的数据流计数器iptables -A INPUT -s 源IP -p tcp --sprot 来源端口 -d 目标IP --dport 目标端口 -j DROP/ACCEPT 指定放行的数据流和端口iptables -I/-A/-D INPUT -s 源IP -j DROP 添加一条简单的匹配规则iptables -nvL --line-numbers 列出规则的排列序号,例如用于根据序号来删除某条规则iptables -P INPUT DROP 用于修改链的默认policy(规则),修改前需确认是否会影响数据连接

三、实验操作:

1.实验环境:

(A)kali: 192.168.10.2

(B)win7: 192.168.20.2

(C)win2008主机 192.168.10.6

2.基础配置

1.修改内核文件实现端口转发

方法1

1.编辑sysctl配置文件 vim /etc/sysctl.conf1632106820_6147f944433ffcc84780a.png!small?1632106820802

2.开启ipv4 forward1632106854_6147f96636db02e138e13.png!small?1632106854308

方法2: 直接sysctl修改

使用sysctl -w net.ipv4.ip_forward=1

然后查看系统参数和之前修改的一样。

查看sysctl -p1632106889_6147f98961249f30c55b5.png!small?1632106889393

3.实现过程:

原理1.本地端口转发

REDIRECT模式是防火墙所在的机子内部转发包或流到另一个端口,也就是所有接收的包只转发给本地端口。 步骤1:通过PREROUTING链,将外网访问端口转发到本机端口,此时本机端口并不进行转发。1632106940_6147f9bc39c071d8a3251.png!small?1632106940296

原理2:分流

步骤2:通过PREROUTING链,将测试网段的端口的包转发到本机端口,其他网段则正常访问原端口。

iptables -t nat -A PREROUTING -p tcp -s 192.168.10.0/24 —dport 1234 -j REDIRECT —to-ports 6666

1632106960_6147f9d07ac790adbe2a7.png!small

原理3:远程端口转发

DNAT模式是用来做目的网络地址转换, 可以做某种类型地负载平衡。SNAT模式用来源网络地址转换的,就是重写包的源IP地址。如果直接转发包的话,网络响应包上就不知道往哪儿发送应答,所以需要改为防火墙的地址。

步骤3: 通过PREROUTING链,将源为A访问B的1234端口的包,转发到C的6666端口,其他的不管

php MASQUERADE模式 ptables-tnat-APREROUTING--source 192.168.10.2-ptcp--dport 1234 -jDNAT--to-destination 192.168.10.6:6666 

SNAT模式 iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE iptables-tnat-APOSTROUTING--dst 192.168.10.2-ptcp--dport 6666 -jMASQUERADE1632107057_6147fa31051615d8882b7.png!small?1632107056966

步骤4:删除配置规则,关闭端口转发 iptables -t nat -D PREROUTING 2   //删除规则

service iptables stop   //关闭端口转发.1632107104_6147fa60ede83b10e6303.png!small?1632107105130

总结:

iptables在端口转发具有一定的稳定性,在配置防火墙过滤规则的时候也是十分好用的。无论用在攻与防都十分好用。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发