1.2 使用iptables进行包过滤

 

透过iptables防火墙用户可对与Linux系统进行交互的IP数据包执行高度的控制,而且这一控制是在Linux内核中实现的。由iptables构建的策略就像一个精力旺盛的交警——不允许通过的数据包将被湮没并不再出现,而符合要求的数据包将继续它们快乐的旅程或经过修改以符合本地网络的要求。

iptables策略是由一组有序的规则建立的,它告诉内核应如何处理某些类别的数据包。每一个iptables规则应用于一个表中的一个链。一个iptables链是一个规则集,这些规则按序与包含共同特征的数据包(如都被路由到Linux系统的数据包——与从Linux系统出去的数据包相反)进行比较。

1.2.1 表

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

1.2.2 链

每个表都有自己的一组内置链,用户还可以对链进行自定义,这样用户就可以建立一组规则,它们都关联到一个共同的标签如INPUT_ESTABLISHED或DMZ_NETWORK。对本书来说,最重要的内置链是filter表中的INPUT、OUTPUT和FORWARD链。

l    当一个数据包由内核中的路由计算确定为指向本地Linux系统(即该数据包指向一个本地套接字)之后,它将经过INPUT链的检查。

l    OUTPUT链保留给由Linux系统自身生成的数据包。

l    FORWARD链管理经过Linux系统路由的数据包(即当iptables防火墙用于连接两个网络,并且两个网络之间的数据包必须流经该防火墙)。

另外两个对于关键iptables部署很重要的链是nat表中的PREROUTING和POSTROUTING链,它们分别用于在内核进行IP路由计算之前和之后修改数据包的头部。本章后面的iptables命令示例将说明PREROUTING和POSTROUTING链的用法。此外图1-1显示了数据包是如何通过内核中的nat和filter表的。

filter FORWARD

 

nat POSTROUTING

 

nat PREROUTING

 

流出

数据包

 

流入

数据包

 

路由

决策

 

内核

 

用户

 

本地套接字

 

filter INPUT

 

filter OUTPUT

 

图1-1 iptables数据包流程

1.2.3 匹配

每个iptables规则都包含一组匹配以及一个目标,后者告诉iptables对于符合规则的数据包应该采取什么动作。iptables匹配指的是数据包必须匹配的条件,只有当数据包满足所有的匹配条件时,iptables才能根据由该规则的目标所指定的动作来处理该数据包。例如,如果想定义只针对TCP报文的规则,可以使用--protocol匹配。

每个匹配都在iptables的命令行中指定。对于本书来说,最重要的iptables匹配如下所示(当在1.8节讨论用于全书的默认iptables策略时,你将看到更多有关匹配的内容):

l    --source (-s)——匹配源IP地址或网络

l    --destination (-d)——匹配目标IP地址或网络

l    --protocol (-p)——匹配IP值

l    --in-interface (-i)——流入接口(例如,eth0)

l    --out-interface (-o)——流出接口

l    --state ——匹配一组连接状态

l    --string ——匹配应用层数据字节序列

l    --comment ——在内核内存中为一个规则关联多达256个字节的注释数据

1.2.4 目标

最后,iptables支持一组目标,它们用于在数据包匹配一条规则时触发一个动作。本书中使用如下重要的目标。

l    ACCEPT——允许数据包通过;

l    DROP——丢弃数据包,不对该数据包做进一步的处理,对接收栈而言,就好像该数据包从来没有被接收一样;

l    LOG——将数据包信息记录到syslog;

l    REJECT——丢弃数据包,同时发送适当的响应报文(例如,针对TCP连接的TCP重置数据包或针对UDP数据包的ICMP端口不可达消息)。

l    RETURN——在调用链中继续处理数据包。

我们将在1.8节中使用上面讨论的一些匹配和目标来建立各种iptables规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值