iptables看书笔记

来源:互联网 发布:flash编程弹出窗口 编辑:程序博客网 时间:2024/05/18 06:53

iptables只过滤IP及其之上协议的数据包,也就是>=网络层之上的。

iptables和netfilter间的差别:
由linux提供的所有包过滤和包修改设施的官方项目名为netfilter,这个术语同时也指linux内核中的一个框架,它可以用于在不同阶段将函数挂接(hook)进网络栈。iptables使用netfilter框架旨的将对数据包执行操作(如过滤)的函数挂接进网络桡。也可以这样认为,netfilter提供了一个框架,iptables在它之上建立了防火墙功能。

iptables还指同名的用户层工具,它解析命令并将防火墙策略传递给内核。

netfilter本身并不对数据包进行过滤--它只是允许可以过滤数据包的函数挂接到内核中适当的位置。netfilter项目还在内核中提供了一些基础设施,如连接跟踪和日志记录,任何iptables策略都可以使用这些设施来执行特定的数据包处理。

每个iptables规则应用于一个表中的一个链。一个iptables链是一个规则集,这些规则按序与包含共同特征的数据包进行比较。

表(table):iptables构建块,它描述了其功能的大类,如包过滤或网络地址转换(nat).iptables中共有4个表:filter:过滤规则 nat:NAT规则 mangle:修改分组数据的特定规则 raw:独立于netfilter连接跟踪子系统起作用的规则 

链(chain):每个表都有自己的一组内置链,用户还可以对链进行自定义,这样用户就可以建立一组规则,它们都关联到一个共同的标签如:INPUT_ESTABLISHED或DMZ_NETWORK.


最重要的内置链是filter表中的INPUT OUTPUT FORWARD链。
另外两个对于关键iptables部署很重要的链是nat表中的PREROUTING和POSTROUTING链。

INPUT:当一个数据包由内核中的路由计算确定为指向本地linux系统之后,它将经过INPUT链的检查。
OUTPUT:保留给由linux系统自身生成的数据包。
FORWARD:管理经过linux系统路由的数据包(即当iptables防火墙用于连接两个网络,且两个网络间的数据包必须流经此防火墙)
PREROUTING:在内核进行ip路由计算之后修改数据包的头部。
POSTROUTING:在内核进行ip路由计算之后修改数据包的头部。

图显示数据包是如何通过内核中的nat和filter表的。

                                                           /---------------------------------------------------------------------------------------------/
                                                            |                                                              应用层                                                  |
                                                            /---------------------------------------------------------------------------------------------/
                                                                        //                                                                                              |
                                                                         |                                                                                              |
                                                                         |                                                                                              //
                                                               /----------------------------------/                                                  /-------------------/
                                                               |              filter INPUT           |                                                 |filter OUTPUT |
                                                               /------------------------------  --/                                                  /-------------------/
                                                                                 //                                                                                    /
                                                                                  |                                                                                      /
                                                                                  |                                                                                       //
                           /---------------------------/        /-----------------/            /----------------------/         /---------------------------/
流入数据包--->|nat PREROUTING     |-->|    路由决策     |----->|filter FORWARD|----->|nat POSTROUTING|-->流出数据包
                           /----------------------------/        /-----------------/           /----------------------/         /---------------------------/


每个iptables规则都包含一组匹配以及一个目标,后者告诉iptables对于符合规则的数据包应该采取什么动作。
匹配(match):指的是数据包必须匹配的条件,只有当数据包满足所有的匹配条件时,iptables才能根据由该规则的目标所指定的动作来处理该数据包。

目标(target):iptables支持一组目标,它们用于在数据包匹配一条规则时触发一个动作。如:ACCEPT:允许数据包通过 DROP:丢弃数据包,不对此数据包做进一步的处理 LOG:将数据包信息记录到syslog  REJECT:丢弃数据包,同时发送适当的响应报文 RETURN:在调用链中继续处理数据包。


可加载内核模块(LKM)与内置编译的安全:
支持LKM的话容易初安装一个内核级的rootkit.而内置编译则对于升级及修改等不方便。

构建iptables策略的最后一步是在linux内核中启用IP转发:
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables-save命令建立一个文件,其中包含了在一个正在运行的策略中所包含的所有iptables规则,而且是以一种可读的格式提供的。这种格式可以被iptables-restore程序解释,该程序将读取ipt.save文件中的每一个规则并在运行内核中立即启用它。执行一次iptables-restore程序就可以在内核中重建整个iptables策略,而不需要多次执行iptables程序。

保存当前正在运行的策略
iptables-save > /root/ipt.save
重建保存了策略:
cat /root/ipt.save | iptables-restore

nc工具  测试tcp连接的   如:测试192.168.1.1 3500 端口是否能够连接  
nc -v 192.168.1.1 3500
hping 测试udp连接的

2
网络层是在因特网上分组数据端到端路由和交付的主要机制。

记录IP选项:
IP选项提供了针对IP通信的各种控制功能,包括时间戳 某些安全功能和一些特定路由特性的规定。

记录IP首部中的选项部分:
iptables -A INPUT -j LOG --log-ip-options



/---------------------------------------------------------------------------------------------/
| 应用层 |
/---------------------------------------------------------------------------------------------/
// |
| |
| //
/----------------------------------/ /-------------------/
| filter INPUT | |filter OUTPUT |
/------------------------------ --/ /-------------------/
// /
| /
| //
/---------------------------/ /-----------------/ /----------------------/ /---------------------------/
流入数据包--->|nat PREROUTING |-->| 路由决策 |----->|filter FORWARD|----->|nat POSTROUTING|-->流出数据包
/----------------------------/ /-----------------/ /----------------------/ /---------------------------/

 

 

原创粉丝点击