[OpenBSD]

[上一小节: 运行选项] [总目录] [下一小节:锚]

PF: 净化(数据包标准化)


目录


介绍

"净化"是数据包标准化, 这样最终接收方可以确切知道此数据包的含义。净化命令也可以重组破碎的数据包, 使一些操作系统避免某些形式的攻击, 和丢弃带有无效标志组合的TCP数据包。 净化命令的一个简单的形式是:
scrub in all

这将在净化所有的接口上进入数据包。

一个不在某接口上进行净化的原因是用户想通过PF访问NFS, 某些非OpenBSD平台发送(和期待)奇怪的数据包——设置了"do not fragment"位的分片数据包, 这些数据包被净化规则(完全地)拒绝。另一个原因是某些多人游戏在PF启用scrub后会出现连接问题。除了这些有点极端的案例, 这里强烈推荐净化所有的数据包。

scrub命令的语法与filtering语法很相似, 这使它可以准确地选择数据包进行净化。scrub前面没有关键字可以用来指定哪些数据包不被净化, 就像nat规则, 第一条匹配的规则是胜者。

更多净化的原则和概念可以在 Network Intrusion Detection: Evasion, Traffic Normalization, and End-to-End Protocol Semantics 找到。

选项

Scrub有下列选项:
no-df
清除IP数据包头里的 don't fragment 位。大家知道一些操作系统会产生设定了don't fragment 位的分片数据包, 特别是NFS。除非指定了 no-df选项, 否则Scrub会丢弃这些数据包。因为某些操作系统产生的 don't fragment 数据包的IP头标识区域是0, 推荐 no-dfrandom-id 选项一同使用。
random-id
用随机值替换数据包的IP标识区域以调整操作系统的预设值。这个规则仅应用于自由重组后不分片的数据包。
min-ttl num
强制将IP数据包头部的生存时间(TTL)设置为一个最小值。
max-mss num
强制将TCP数据包头部的最大数据片长度(MSS)设置成一个最大值。
fragment reassemble
缓存进入的数据包碎片, 并在通过过滤引擎前将这些碎片重组成一个完整的数据包。优点是过滤引擎只处理完整的数据包而忽略碎片;缺点是缓存数据包碎片增大了内存占用。当没有指定frament选项时这是默认行为。这也与NAT一同工作时唯一的fragment选项。
fragment crop
丢弃重复的碎片并修剪重叠的碎片。不像fragment reassemble, 使用这个选项时不缓存碎片, 而是处理后直接传递。(译者注:原文这里是一到达就直接传送。)
fragment drop-ovl
fragment crop相似, 除了所有重复、重叠的碎片同其它更多的通信碎片一样会被丢弃。
reassemble tcp
TCP连接状态标准化。当使用scrub reassemble tcp 时, 不需要指定一个方向(入/出)。可执行下列标准化:

例子:

scrub in on fxp0 all fragment reassemble min-ttl 15 max-mss 1400
scrub in on fxp0 all no-df
scrub    on fxp0 all reassemble tcp

[上一小节: 运行选项] [总目录] [下一小节:锚]


[back] www@openbsd.org
$OpenBSD: scrub.html, v 1.15 2008/07/30 10:35:44 nick Exp $