iptables/netfilter介绍、样例实验和配置规则

0x 01 前言

Iptables是运行在用户空间的应用级(Ring3)防火墙软件,通过调用Linux内核的Netfilter模块,进行网络数据包的流动、转送以及修改。iptables是状态防火墙,可以对会话的状态进行跟踪,这点相较于无状态防火墙要方便许多。
Netfilter是由Rusty Russell提出的Linux 2.4.x内核防火墙框架,目前支持的内核包括2.4、2.6及3.0。iptables所设置的规则最终是存放在内核内存中的Xtables(Netfilter的配置表)。Iptables和ip6_tables、arp_tables等Netfilter的项目都是建构在Xtables的架构下。


0x 02 表,链以及规则

1、表(tables)

表是包含了不同默认链的组合,每个表都和数据包的处理有关,iptables共内置了5个表,即filter,nat,mangle,raw,security分别实现数据包过滤、动态网络地址转换,(Network Address Translation,NAT),数据包修改,数据包状态跟踪,以及实现强制访问控制MAC(Mandatory Access Control )和自主访问控制DAC(Discretionary Access Control )等。

2、链(chains)

链是决定数据包是否可以通过的决定因素,每个数据包从进入系统,到离开系统,都至少要通过2条链。
链是Netfilter中的挂载点(Hook Point)在iptables中的体现,共包括5条链,分别为PREROUTING(数据包进入路由表之前),INPUT(通过路由表后目的地为本机),FORWARD(通过路由表后,目的地不为本机),OUTPUT(由本机产生,向外转发),POSTROUTING(发送到网卡接口之前),对应Netfilter中5个挂载点:

NF_INET_PRE_ROUTING,NF_INET_LOCAL_IN,NF_INET_FORWARD,NF_INET_LOCAL_OUT,NF_INET_POST_ROUTING

图1 Netfilter框架

注:挂载点(Hook Point),可以理解为回调函数点,数据包到达这些位置的时候,会主动调用对应的函数,使其在数据包路由的时候可以改变它们的路径以及内容。

3、规则(rules)

规则在链里面决定对数据包的处理动作,存储在内核空间的Xtables中。在这里,可以定义对数据包的具体处理(target)。当数据包穿过一条链的时候,每条规则会依序检查它(包括源目地址,协议等参数),如果没有规则与其相匹配,则数据包会被传递到下一条规则去尝试匹配,当匹配上之后,会按照target中规定的动作对数据包进行梳理。

图2  iptables中表、链以及规则的对应关系


0x 03 利用Iptables进行网络地址转换实例展示

我们经常使用xshell等交互式工具进行端口转发和地址转换,iptables中的地址转换功能对大部分人来说用到不算很多,但是却很有用。以此例来展示iptables的使用。

1、环境:
  • 1台centos7主机作为web主机
ip=192.168.0.10,hostname=webserver
  • 1台Ubuntu 16.04作为iptables所在主机,iptables版本为iptables 1.6.0
ip=192.168.0.5,hostname= IptablesTest
  • 1台Ubuntu 16.04作为client(192.168.0.20)
ip=192.168.0.20,hostname=client
2、需求描述

模仿反向代理的场景,webserver的http流量不能被其他机器直接访问,需要通过IptablesTes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值