防火墙智能分析工具(juniper srx)

2024-02-05 06:10

本文主要是介绍防火墙智能分析工具(juniper srx),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

防火墙策略梳理及转换工具

  • 随便说说
  • SRX配置文件分析及数据结构选则
  • 思路及实现过程
    • 功能展示
      • 策略和nat梳理表格输出
      • 配置文件转换

随便说说

防火墙作为网络安全的第一道防线,在网络中的地位是毋庸置疑的。防火墙自上线以来,其策略数量随着业务量增长日益增加,很多时候运维人员需要对现网的策略做些优化和梳理工作,了解墙的线上配置都开了哪些策略,这些策略都放行了什么IP的什么端口;又或者领导让出一下关于A地址的所有策略都开了哪些端口的表格等等。虽然有些任务通过命令检查一下就能看到结果,大家都知道现在的墙策略大部分都是调用的对象名称,而并不能直观的显示其具体的内容。针对防火墙策略不多的情况,偶尔人工梳理一次也未尝不可,但如果把这些工作都变成常态的话,估计再有耐心的人都会给逼疯,暂且不说梳理一次需要的工时。
设备老旧了、新政策出台、国产化推进等等各种因素,会将批量的国外安全设备替换为国内品牌。防火墙的迁移替换工作可不比防火墙,交换机路由器只要架构性配置搞定就可以了,可以说没有太大工作量;而防火墙确不一样,防火墙的配置迁移说白了就是策略的迁移,策略的多少决定了工作量大小,如果是nat环境,工作量再加倍。防火墙跨平台配置转换一般厂家都提供相应的配置迁移工具,实现配置转换,我接触过的国内和国外防火墙配置迁移工具可以说没有一个完美支持nat的,或者只支持特定的nat配置语法,或者只是半转换(转换不彻底),再有就是其他各种不常见的语法无法支持到位。即使转了也要再加上大量的人工对其进行后期修订才能使用。
作为一名长期工作在运维人一线的我,不堪把时间都花费在这些方面,于是就产生了写脚本,自动化的各种想法…

SRX配置文件分析及数据结构选则

我工作中接触的juniper和hillstone防火墙比较多,本次先拿juniper 的srx配置来做初步的梳理和实现。Juniper srx墙给予junos系统,其配置文件的set格式结构比较清晰,语法都是固定格式,这里就不贴配置了,接触过的自然明白。

策略对象主要包含内容:策略id,from安全域,to安全域,源地址、目标地址、服务端口、动作、日志开关、时间表,状态。
策略的源地址、目标地址可以调用地址簿对象和地址组对象,服务端口可调用预定义服务端口和自定义服务端口,动作常用的也就permit和deny,日志开关也就是session-init和session-close,时间调用schedule,状态默认是enable,除非明确disable。

地址簿对象:地址簿可定义单个地址,一个子网、或者使用通配符掩码也就这3中格式。
地址组对象:地址组对象是一个容器,其成员可以是地址簿对象或者地址组对象,如果地址组里放地址组,我暂且叫他地址组嵌套。
服务簿对象:一种是自定义,一种是预定义的;服务簿有协议类型、源端口范围、目标端口范围、超时时长和应用关联这几项内容。一个服务簿里可以通过多个term实现多个不同协议及端口定义。
服务组对象:服务组是一个容器,其成员可以使自定义服务簿对象,预定义服务簿对象,亦可以是服务组对象,类似地址组。
时间表对象:也就两种,一种是例行性时间定义,一种是绝对时间的定义方式。
nat规则:srx防火墙支持三种类型nat配置,静态、动态源和动态目的;静态nat比较简单就是一对一或者n对n的地址映射,动态源和动态目地nat的语法类似策略,有匹配条件和动作,即满足什么源地址、目标地址、协议及端口的nat成pool的地址。
如何将这些策略、nat及相关对象配置进行数据结构化?采用什么样的数据结构便于存储这些元素信息,又便于做查找、调用及展现?数据结构不要太过于复杂。综合以上考虑,最终选择采用字典为主、列表为辅及两者的嵌套结构。

思路及实现过程

开发环境选择python,因为简单易上手。
通过配置文件分析,我需要构建地址簿字典,地址组字典、服务簿字典、服务组字典、预定义服务字典、策略字典、nat字典,时间表字典。
防火墙配置初始化函数实现配置文件的读取,通过正则匹配将各对象的语法及数据转变为字典结构的数据模型。策略配置和nat规则转成表的过程无非就是将策略里的对象名展现为其真实内容而已。
安全策略和nat规则梳理成表功能实现起来难度不大,只是配置识别,然后展现,再通过固定格式输出就可以了。但防火墙配置迁移转换功能模块实现起来就稍微复杂。首先必须熟通两个平台的语法,其次要清楚数据流处理机制,再有就是做等价语法转换。
说起来简单,做起来难呀。比如juniper的netscreen墙的策略和nat就非常灵活,可以使用静态mip,可以基于策略实现源和目的nat或者port-map,基于接口的nat模式,及以上几种nat的混合使用。配置转换并不是直译,并不是你看到什么配置,将其转换成另一平台语法即可,看到的并不一定是真实的。比如一条策略源地址转换调用了dip 地址池的地址,那么策略源地址一定会转换为dip的地址吗,答案不一定是,如果你直接这么转了,那可就有风险了,因为mip的优先级是最高的,源地址在出接口上有mip配置的话,其会转换为mip定义的对应地址。再有trust接口如果是nat模式,其具体会对哪些方向的流量默认做源地址转换为接口ip,这个具体就不细说了。再比如juniper的srx墙,策略和nat是分离的,策略里源地址和目标地址都是真实IP地址,而不是nat前的地址,这个与山石墙的策略和nat规则就不一样了,如果是直译,那就直接死掉了。顺便补充一句,山石墙不支持bnat和snat、dnat混用,切记!

1、通过类class Srx类实现配置文件初始化,并构建数据模型;
2、循环策略字典,将每条策略的源地址、目标地址、服务端口展现为对象的真实内容;
3、nat规则本身就是真实地址,无需展现;
4、将展现后的策略字典和nat字典内容输出到csv文件。
5、梳理某IP策略的功能首先要编写ip地址匹配函数,我调用了IPy模块,并写了自己的函数,可以实现单个IP,IP范围、不连续IP作为输入条件进行匹配查找,将满足条件的策略输出到csv文件;

配置迁移转换以juniper srx 转hillstone 为例,nat规则配置迁移转换可直译,保证语法等价即可,需要注意的地方就是静态nat需要转换为山石的snat和dnat,前面说过了山石nat不支持静态和动态混用。策略配置转换需将每条策略的目标地址通过特殊匹配算法找到其相关的nat条目,取出nat规则里的nat地址并予以替换。这项工作就相当于把策略表里的所有的策略条目,在nat表里跑一遍,用匹配的nat条目的nat地址对策略目标地址进行替换。如果是人工作这项工作的话,500条策略,试算下需要多少工时?

##安全策略输出表格格式:

idfromtosrc_groupsrc_addressdst_groupdst_addressport_groupportsactionschedulestatus
xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx

##NAT策略表格格式:

typeidsrc_addressdst_addressprotocolportsnat_addressport_map
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx

功能展示

目前工具已实现主体功能,其中由于华为的版本语法差异太大,目前只实现了v3版本;还有很多想法,比如垃圾对象配置梳理并自动生产删除脚本功能模块;策略合规检查模块;策略自动生成配置模块;多套防火墙自动定位及策略匹配查找模块;基于访问关系需求表自动生成配置模块;防火墙基线合规检查模块等等。废话少说:“翠花,上菜,,,,”

策略和nat梳理表格输出

在这里插入图片描述
policy_table.xls:
在这里插入图片描述
nat_table.xls:
在这里插入图片描述

配置文件转换

附图为juniper srx转山石防火墙配置示例:

在这里插入图片描述

山石墙配置文件由于内容太多,只是将文件段落做下展示:
在这里插入图片描述

这篇关于防火墙智能分析工具(juniper srx)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679950

相关文章

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas