在防火墙构建器中使用TCP和UDP服务对象

在Firewall Builder中使用TCP和UDP服务对象

作者:vadim@fwbuilder.org
http://www.fwbuilder.org

本文继续关于Fireall Builder的一系列文章,一个支持许多开源防火墙平台以及Cisco IOS访问列表和Cisco ASA(PIX)的图形化防火墙配置和管理工具。 防火墙生成器早期在此站点上引入, 使用 防火墙生成器入门,在防火墙生成器使用内置版本控制,在防火墙生成器使用内置策略安装程序在防火墙生成器使用防火墙对象 。 本文演示如何在Firewall Builder中使用TCPUDP服务对象。

有关Firewall Builder,预构建的二进制包和源代码,文档和Firewall Builder Cookbook的更多信息 ,请访问项目网站www.fwbuilder.org 。 观看项目博客 ,了解使用Firewall Builder的所有方面的公告和文章。

在Firewall Builder中使用TCP和UDP服务对象

TCP服务

TCP服务对象是TCP协议的泛化,其提供面向连接的可靠字节流服务。 许多知名的,经常使用的应用协议使用TCP协议:FTP(文件传输协议),SMTP(简单邮件传输协议),HTTP(超文本传输​​协议)等。 TCP头包含特殊字段,指示用于标识发送和接收应用程序的源和目标端口号。 这两个值以及IP头中的源IP地址和目标IP地址唯一标识每个连接。

由于端口号用于使用TCP协议提供的数据流区分应用程序,因此每个应用程序应使用唯一的端口号。 为了确保互操作性,这些数字必须由中央机构以协调的方式分配。 互联网号码分配机构(IANA)也是这样做的。 分配的TCP和UDP端口号可以在http://www.iana.org/assignments/port-numbers查找。 大多数Unix系统还带有一个/ etc / services文件,其中包含一个分配的端口号列表。

防火墙生成器附带一组预定义的TCP服务对象,其端口号已经配置。 您可以在策略规则中简单地使用这些对象,因此您无需在每次需要时查找端口号。 这些对象是标准对象库的一部分,位于Services / TCP分支中。

典型的TCP服务对象在以下屏幕截图中表示:

在Firewall Builder中,TCP Service对象是TCP协议的泛化。 数据包的TCP报头仅为源端口固定一个值,目的端口只有一个固定值。 TCP服务对象允许用于源端口和目标端口的一系列值。 这允许单个TCP服务对象使用连续的端口号来描述一系列协议,或者使用可能使用可变端口号的协议或简单地使用特定范围内的端口号的许多协议。 例如,在Unix系统上,由特权进程打开的TCP会话始终将源端口号从低于1024的范围分配,而非特权进程使用从1024及以上的范围开始的源端口号。 源端口范围定义如下所示的TCP服务对象描述了所有特权的TCP会话。

使用“0”作为范围的起始和终止值表示该范围的“任何值”。 “特权TCP”对象的源端口范围从0开始,结束于1023(端口范围包含在防火墙生成器中),而其目标端口范围的开始和结束都设置为零,这意味着“任何目标端口”。 此对象描述任何具有范围0-1023的源端口和任何目标端口的TCP协议。

如果您需要创建一个对象来描述具有特定目标端口的TCP协议,则只需对目标端口范围的起始和终止使用相同的端口号(有效创建由单个值组成的范围) 。 图6-70中的示例显示了这样的服务。

TCP报头还包含一个携带各种控制信息的一位字段或标志的集合。 例如,SYN和ACK标志用于连接建立,FIN标志用于连接终止。 在正常协议操作期间,不允许标志的某些组合,并且可能在一些系统中引起不可预测的反应; 因此,防火墙管理员可能希望用不必要的标志组合阻止TCP数据包。

TCP头中有六个标志。 我们在这里简单地提到他们; 更多信息可以在W. Richard Stevens的第17章的TCP / IP Illustrated第1卷中找到。

U(URG) “紧急”指针有效
A(ACK) 确认号码有效
P(PSH) 接收方应尽快将此数据传递给应用程序
R(RST) 重置连接
S(SYN) 同步序列号以启动连接。
F(FIN) 发送方完成发送数据。

“已建立”不是TCP标志。 相反,选中此框将导致防火墙匹配已建立会话中的任何数据包。 选中此复选框将禁用其他TCP标志控件。

Firewall Builder支持所有六个标志,尽管并非所有目标防火墙平台都可以匹配所有TCP标志或任何标志的组合。 例如,iptables,pf,ipfilter和ipfw可以匹配标志及其组合,但Cisco PIX不能。

通常,防火墙不仅可以匹配标志的组合,还可以仅检查给定的TCP标志子集。 Firewall Builder提供两组TCP标志和标志掩码的复选框(见下面的屏幕截图)。 第一行中的复选框控制我们希望防火墙检查的TCP标志,第二行中的复选框告诉它是否应该设置或清除。 只有设置了第一行复选框的标志才会被防火墙所看。 屏幕截图中的对象匹配TCP数据包与端口号,TCP标志SYN置位和所有其他标志清除的任何组合。 防火墙将检查所有TCP标志。

标志和掩码的组合可用于查找要设置或取消设置的某些标志的规则,并忽略其他标志,而不管其状态如何。 例如,我们可以创建一个检测所谓的“空扫描”的规则,这是通过清除所有标志的TCP数据包完成的。 对于此规则,我们创建一个TCP服务对象“tcp空扫描”,其中所有标志掩码都被设置,但所有TCP标志都被清除。 这意味着我们检查所有标志,但只有当它们被清除时才匹配它们。 此对象在以下屏幕截图中表示:

TCP服务对话框提供以下控件:

  • 名称:这是对象的名称
  • 源端口范围:这两个控件定义源端口范围的开始和结束。 他们接受值0到65535。
  • 目标端口范围:这两个控件定义目标端口范围的开始和结束。 他们接受值0到65535。
  • TCP标志:TCP标志和掩码,见上文。 “已建立”复选框使防火墙与已建立的会话中的数据包相匹配。 选中此复选框将禁用其他TCP标志控件。
  • 评论:这是一个用于评论的自由式文本字段。

在规则中使用TCP服务

单目的TCP端口

我们从一个使用描述HTTP协议的简单TCP服务的例子开始。 这个服务对象的源端口范围的开始和结束都被设置为“0”,这意味着当它生成目标防火墙配置时,程序将离开这些。 目标端口范围定义为“80-80”,表示对象仅描述单个目标TCP端口“80”。 所有标志复选框未被选中,这意味着不会生成标志匹配配置。

现在我们将这个对象放在规则的“Service”元素中,如下一个截图所示。 为了使这个简单的例子更有意思,我将策略规则设置为“组合的IPv4和IPv6”,并将两个地址对象放在目的地,一个是IPv4地址,另一个是IPv6地址。

此规则汇编为iptables的以下内容:

# ================ IPv4 

# Rule 0 (global)
#
$IPTABLES -A FORWARD -p tcp -m tcp -d 70.85.175.170 \
--dport 80 -m state --state NEW -j ACCEPT

# ================ IPv4

# Rule 0 (global)
#
$IP6TABLES -A FORWARD -p tcp -m tcp -d 2001:470:1f0e:162::2 \
--dport 80 -m state --state NEW -j ACCEPT

对于PF,我们得到以下内容。 请注意,PF版本设置为“any”或“3.x”,这就是为什么添加了“keep state”的原因。 对于PF 4.x,“Keep state”是默认值,如果在此防火墙对象中将版本配置为“4.x”,则策略编译器将从放置的配置中删除“保持状态”。

# Rule 0 (global) 
#
pass in quick inet proto tcp from any to 70.85.175.170 port 80 keep state
pass out quick inet proto tcp from any to 70.85.175.170 port 80 keep state

# Rule 0 (global)
#
pass in quick inet6 proto tcp from any to 2001:470:1f0e:162::2 port 80 keep state
pass out quick inet6 proto tcp from any to 2001:470:1f0e:162::2 port 80 keep state
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏