摘 要: 随着网络信息安全问题日益突出,防火墙是目前广泛使用的一种网络安全技术。如何高效地拦截和过滤所有的数据包是当前的一个重要的课题。 本文介绍了数据包过滤技术,重点分析了数据包的拦截技术和实现方法,并设计了了基于IP过滤驱动的包过滤功能的实现方法。
关键词:防火墙;包拦截;包过滤;过滤规则
1. 网络信息安全
随着Internet快速发展,计算机网络在各个领域应用,网络信息安全问题更显的尤为重要。
对于企业网络的防御系统来说,防火墙属于被动防御型的网络安全措施,防火墙不仅包括主机或路由器等硬件设备,还包括网络的安全策略和安全行为。
防火墙的基本功能是对网络通信进行筛选屏蔽以防未经授权的访问进出计算机网络。
2. Windows下数据包拦截技术原理
所有基于Windows操作系统的个人防火墙核心技术在于Windows操作系统下数据包拦截技术。
包过滤系统工作在OSI模型中的网络层,可以根据数据包报头等信息来制定规则。 包过滤系统的工作流程图如图所示
3. Windows防火墙实现
3.1需求规格分析
建立基于封包过滤技术的Windows2000/XP防火墙,主要功能包括:提供封包监视界面,开始/停止过滤以及添加/删除过滤规则;保存过滤规则;提供过滤规则的设置界面;根据过滤规则对进出封包进行过滤。
过滤规则的设置包括:源地址掩码、源IP地址、目的IP地址、目的地址掩码、目的端口、源端口、动作、过滤规则名称、使用的协议等;
3.2包过滤防火墙的总体系统实现
包过滤防火墙总的实现有三部分组成:表示层、应用层逻辑层和存储层。
(1)在表示层上,主要是防火墙与用户交互界面的实现;
(2)在应用逻辑高层,主要是利用系统提供的IP过滤驱动注册用户处理数据包的函数,包括实现分析数据包、过滤数据包等功能;
(3)在应用逻辑低层主要是利用系统提供的IP过滤驱动ipfltdrv.sys实现数据包的拦截;在存储层上,主要实现用户定义的过滤规则的存储。
3.3 包过滤技术防火墙方案设计
3.3.1程序功能设计模块
主要实现以下五方面的功能模块:
(1) 开始过滤:开始运行数据包过滤规则。
(2) 停止过滤:停止运行数据包过滤规则。
(3) 添加:添加数据包过滤规则。
(4) 删除:删除数据包过滤规则。
(5) 查看规则:查看已注册的过滤规则。
3.3.2 数据包的截获
在Windows 2000和Windows XP系统中,System32/drivers目录下的ipfltdrv.sys文件是Microsoft提供的IP协议过滤驱动程序,IP协议过滤驱动程序由应用程序类载入并完成初始化,作为系统提供的服务,一旦IP协议过滤的服务启动后,就自动对经过网络的数据的数据包进行拦截。
3.3.3数据包的过滤
过滤的基本过程是:
(1)展开数据包的包头(Packet Header)
(2)检查数据包中相关的协议,并与过滤规则相比较。
(3)在协议一致情况下,检查源地址和目的地址。
(4)如果是TCP协议,检查端口。
(5)最后决定数据包是通过防火墙还是丢弃。
注册的基本过程是:
(1)载入IP协议过滤驱动程序。
(2)创建与IP协议过滤驱动程序相关的服务,并启动服务。
(3)服务根据防火墙程序发送的消息确定是否进行过滤。
3.3.4 包过滤防火墙主要数据包的数据结构设计
(1) IP数据包结构设计
IP包的数据定义:
typedef struct IpHeader
{ UCHAR iph VerLen; // 版本号和头长度
UCHAR ipTos; // 服务类型
USHORT ipLength; // 总的数据包大小
USHORT ipID; // 特殊标识符
USHORT ipFlags; // 标志
USHORT ipTTL; // 生存期
UCHAR ipProtocol; // 协议
USHORT ipChecksum; // 数据包检验和
ULONG ipSource; // 源地址
ULONG ipDestination; // 目的地址
} IPPacket;
(2)TCP数据包数据结构
TCP数据定义:
typedef struct_TCPHeader
{ USHORT sourcePort; // 源端口号
USHORT destinationPort; // 目的端口号
ULONG sequenceNumber; // 序号
ULONG acknowledgeNumber; // 确认序号
UCHAR dataoffset; // 数据指针
UCHAR flags; // 标志
USHORT windows; // 窗口大小
USHORT checksum; // 校验和
USHORT urgentPointer; // 紧急指针
} TCPHeader;
(3) UDP数据包数据结构
UDP数据定义:
typedef struct_UDPHeader
{ USHORT sourcePort; // 源端口号
USHORT destinationPort; // 目的端口号
USHORT len; // 封包长度
USHORT checksum; // 校验和
} UDPHeader;
3.3.5 过滤规则的设计
过滤规则定义:
struct CIPFilter
{ USHORT protocol; // 使用的协议
ULONG sourceIP; // 源IP地址
ULONG destinationIP; // 目标IP地址
ULONG sourceMask; // 源地址屏蔽码
ULONG destinationMask; // 目的地址屏蔽码
USHORT sourcePort; // 源端口号
USHORT destinationPort; // 目的端口号
BOOLEAN bDrop; // 是否丢弃此封包
};
规则列表定义:
struct CFilterList
{ CIPFilter ipf; // 过滤规则
CFilterList* pNext; // 指向下一个CFilterList结构
};
四、结 论
防火墙技术是目前目前比较流行并且行之有效的网络安全解决方案。
进一步的研究工作有:
(1) 动态包过滤:根据TCP连接的情况以及上下文等建立过滤规则。
(2) 先进的用户认证机制
(3)内部网络信息隐藏:使用NAT地址转换技术,对内部地址信息进行隐藏。
(4)智能型的日志、审计和实时报警 。
参考文献:
[1] [美]KeithE.strassberg,RichardJ.Gondek.GaryRollie.防火墙技术大全[M].李昂,刘芳萍,杨旭,程鹏,等,译.北京:机械工业出版社,2004.
[2] (美)Chris Hare Karanjit Siyan,著. 刘成勇 刘明刚 王明举 译 Internet防火墙与网络安全.北京:机械工业出版社,1998
[3]SCOTT Fuller,KEVIN Pagan.Internet Firewalls[M].董 春,张红雨,刘英杰.北京:电子工业出版社,1997.