前言:逆风的方向,更适合飞翔!
一、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: 路由决定了。数据包在将它们交给硬件之前进入这个链。
二、iptables用法
1.基础表类型
raw表决定数据包是否被数据跟踪处理 mangle表用来mangle数据包,可以改变不同的包及包头的内容 nat表用于转换包的源地址和目的地址 filter表是专门过滤包
2.基础用法
1.iptables —help
2.iptables -t nat -nL —line //查看当前表的规则
链与链之间的区别:
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.conf
2.开启ipv4 forward
方法2: 直接sysctl修改
使用sysctl -w net.ipv4.ip_forward=1
然后查看系统参数和之前修改的一样。
查看sysctl -p
3.实现过程:
原理1.本地端口转发
REDIRECT模式是防火墙所在的机子内部转发包或流到另一个端口,也就是所有接收的包只转发给本地端口。 步骤1:通过PREROUTING链,将外网访问端口转发到本机端口,此时本机端口并不进行转发。
原理2:分流
步骤2:通过PREROUTING链,将测试网段的端口的包转发到本机端口,其他网段则正常访问原端口。
iptables -t nat -A PREROUTING -p tcp -s 192.168.10.0/24 —dport 1234 -j REDIRECT —to-ports 6666
原理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 -jMASQUERADE
步骤4:删除配置规则,关闭端口转发 iptables -t nat -D PREROUTING 2 //删除规则
service iptables stop //关闭端口转发.
总结:
iptables在端口转发具有一定的稳定性,在配置防火墙过滤规则的时候也是十分好用的。无论用在攻与防都十分好用。