基于windows平台的防火墙实现 :
netminder
大致原理:
在windows平台下实现基于包过滤加状态监测防火墙系统,我们需要在系统的协议栈中附加我们自己的例程,在收到的数据包被送往tcp/ip栈之前,在核心层做预先的数据包验证和访问控制,而且该例程能够与工作在用户层应用程序交互,以接受配置数据和保存一些日志信息。
首先,分析windows系统的协议栈,可以参考ms的ddk文档。需要设计一个中间层的driver,用来拦截数据包。在driver内部对收到的数据做按照配置检查。当然,也要包括做相应的nat工作,以便提供共享连接。还要将需要记录的内容返回给应用程序。安装程序也要确保系统的上层协议没有直接绑定在网卡上,而是绑定在自己重新设计的driver上,而自己的driver是直接绑定在网卡上的,这个是通过driver的安装文件来确保的。一些原理可以参考msddk提供的几个sample来理解:packet、imsamp、passthru这三个sample基本上描述清楚了如何与ms协议栈协同工作。
其次,需要一个应用程序以service方式运行,它负责解析配置文件,并将这些配置数据传送给自己的driver。如何做的灵活一点,可以参考bpf的实现,使driver对数据检查的流程也是动态可配置的。而且,这个应用程序也需要负责保存用户配置界面送来的配置数据(包括规则),负责保存自己driver送来的日志数据与当前状态数据。
再次,需要一个用户配置界面负责配置整个系统的运行状态,配置规则,配置其他一些检查要素。
最后,在设计driver对收到的数据包检查流程时,就需要考虑一些安全检查的步骤,比如:应该对一些简单攻击进行防范,那么在检查中需要确认数据包是否有攻击行为,例如,ip非法分片,端口扫描等;应该实现访问控制,那么在检查中需要确认数据包是否满足访问控制规则;应该提供隐藏内部的ip地址,那么需要在检查后修改数据包。等等
欢迎有兴趣的朋友探讨。tang002@163.net
|