一、前言
硬件防火墙为常备主用网络安全设备,主要通过网络访问控制方式实现安全防护。
不同厂家防火墙的网络访问控制功能均采用同样的模式操作:防火墙配置若干条防火墙规则,当IP包到来,防火墙根据包的五元组属性(协议、源地址、源端口、目的地址、目的端口)和到来及目的接口所属安全域按顺序对规则匹配(目的接口由路由决定),对IP包转发还是丢弃由首条命中的规则决定,一旦命中后,后续规则将不在匹配,如果没有命中,包默认丢弃。
大型IT网络环境中,可能采用了不同厂商防火墙支撑各类业务安全,不同墙之间互相也有关联。在网络安全日常维护中,如何审计全部防火墙网络策略是否安全合理,如何快速查找指定IP开放策略范围,如何统一纳管不同品牌防火墙统一查询规则,这些对于提升运维效率和安全防护水平尤其重要。
二、防火墙规则基础介绍
每条防火墙规则的核心要素包含:协议类型(TCP/UDP等)、源安全域、目的安全域、源地址(范围)、目的地址(范围)、端口(服务)、动作(允许/拒绝),这些要素参与匹配,其余要素为备注性质,但对理解规则也十分重要,包括:规则号(非匹配顺序,用于唯一性确定规则)、规则名称、描述。
早期的防火墙,规则以ACL文本形式配置,上述要素每样只能单选一条,但现代防火墙拓展了规则范围,安全域、地址和端口均能多选和为空。
协议类型:TCP、UDP、icmp等
安全域:文本字符串,可多条或为空。
地址:基本的单条地址录入有三种形式,包括单个地址host,网络掩码subnet、地址范围range。
服务:对于协议为TCP/UDP,单条服务包含源端口范围和目的端口范围,即开始结束共4个字段,每个取值都是0~65535。
三、项目开发需求
1、解析不同品牌防火墙配置文件,统一输出格式入库防火墙规则展示表(该表内容基本同防火墙Web界面显示的规则,一条规则一行),实现和防火墙界面相同水平的规则展示;内容包含:
序号:非防火墙规则文本内容,按读取顺序生成
协议类型:文本
规则号:文本
规则名称:文本
源安全域、目的安全域:文本可多个逗号隔开
源地址、目的地址:文本可多个逗号隔开,文本展示内容参考防火墙Web界面。
服务:文本可多个逗号隔开
动作:允许/拒绝
描述:文本
2、生成防火墙规则展开表(根据基础展示表笛卡尔展开生成,每条规则很多行,用于精确查询条件匹配),实现IP地址点对点的高级查询,并且可自定义地址组对象和端口组对象作为条件进行高级查询,包含内容:
序号:内容同规则展示表
协议类型:内容同规则展示表
规则号:内容同规则展示表
规则名称:内容同规则展示表
源安全域、目的安全域:内容同规则展示表
源地址、目的地址:每个包含4个字段,开始地址、结束地址、地址文本、地址组名称
服务:包含4个字段,开始源端口、结束源端口、开始目的端口、结束目的端口、服务组名称
动作:内容同规则展示表
描述:内容同规则展示表
四、开发工作项
根据开发需求,梳理出需要进行的工作事项,包含了以下内容:
1、防火墙配置文本数据的解析、清洗、加工、处理、入库。(生成防火墙规则基础表数据和展开表数据,各类表数据入库保存。)
2、网络防火墙规则查询页面设计、需求功能开发实现。
3、功能测试验证,问题整改。
五、预期效果
登录页面
首页展示
防火墙规则查询页面(支持基本查询、高级查询)
防火墙规则明细查询(展开后规则详情)
本次实现系统功能采用shel+python+flask+mysql的搭配实战整套开发过程。后续文章会展开一步一步来写具体实现过程。届时会给出部分测试数据,有兴趣的小伙伴也可动手一起玩一下~