山石防火墙-api-安全组策略
import requests
import json
import re
gongdanhao = input("输入工单号IT-003-22xxxx-xxxx:")
Src_IP = input("输入源地址:")
Dst_IP = input("输入目的地址:")
protocol_tcpudp = input("输入服务端口TCPxx/UDPxx:")
# time_youxiaoqi =input("输入时间:")
server_ip ='https://IP地址:443/rest/api/' ##服务器ip地址
#—————————————————1、token部分(token值默认有效期10分钟)----------------
url = '{0}login'.format(server_ip)
data=json.dumps({ "lang":"zh_CN", "password":"xxxxxxxx", "userName":"xxxxxx"}) ##账号密码Base64转换
response = requests.post(url, data=data,verify=False)
token=response.json().get('result')[0].get('token')
#---------------2、策略部分,策略头部---------------------------------------------
cookies = {'token': token,'username': 'Huawei@1234','vsysId': '0','role': 'admin','fromrootvsys': 'true',}
headers = {'X-API-Language': 'en', 'Content-Type': 'application/json',}
policy_url='{0}policy'.format(server_ip)
##———————————————2.1 策略名称,一般为工单号-------------------------------
# gongdanhao ="IT-003-22xxxx-xxx" # 工单号一般作为策略名称
##———————————————2.2 策略取ID值-------------------------------
response = requests.get(url=policy_url, headers=headers, cookies=cookies,verify=False)
l=[]
for i in response.json().get('result'):l.append(i.get('id'))
policy_id = str(int(max(l))+1) ##取到当前策略最大的ID号+1= 下次策略的ID号
##———————————————2.3 策略ip,可做源ip,也可做目的ip-------------------------------
#2.3.1 一段地址:10.1.1.1-10.1.1.9,做源地址时k为src_range,做目的地址时k为dst_range
# IP_range_k="src_range"
# IP_range_v = { "min" : "10.1.1.1", "max" : "10.1.1.9"}
#
# #2.3.2 一个主机位,或者掩码位:10.1.1.1/32,或者10.2.2.2/24,做源地址时k为src_subnet,做目的地址时k为dst_subnet
# IP_subnet_k ="src_subnet"
# IP_subnet_v =[{"ip": "10.1.1.1","netmask": "32"}] #10.1.1.1/32
# ########IP_subnet_v =[{"ip": "10.2.2.2","netmask": "24"}] #示例10.2.2.2/24
#
# #2.3.3 域名:www.baidu.com,做源地址时k为src_host,做目的地址时k为dst_host
# IP_domain_k ="src_host"
# IP_domain_v =[{"host": "www.baidu.com","is_ipv6": "0"}] #www.baidu.com
#
# #2.3.4 全部地址,0.0.0.0/0或者any,做源地址时k为src_addr,做目的地址时k为dst_addr
# IP_any_k ="src_addr"
# IP_any_v =[{"member": "Any","type": "0"}]
#-----------源地址----------------------
if re.findall(re.compile(r'[A-Za-z]', re.S), Src_IP):
SIP_K = "src_host"
SIP_V = {"host": Src_IP,"is_ipv6": "0"}
elif Src_IP.find('-') > 0:
qishi_ip = Src_IP.split('-')[0]
jieshu_ip = qishi_ip.rsplit('.', 1)[0] + "." + Src_IP.split('-')[1]
SIP_K = "src_range"
SIP_V = {"min": qishi_ip, "max": jieshu_ip}
elif Src_IP.find('/') > 0:
qishi_ip = Src_IP[0:Src_IP.find('/')]
jieshu_ip = Src_IP[Src_IP.find('/') + 1:]
SIP_K = "src_subnet"
SIP_V = {"ip": qishi_ip, "netmask": jieshu_ip}
elif Src_IP[Src_IP.find('/') + 1:] == '0' or Src_IP[0:Src_IP.find('/')] == '0.0.0.0':
SIP_K = "src_addr"
SIP_V = {"member": "Any","type": "0"}
elif len(Src_IP.split('.')) == 4:
ip_list = Src_IP.split(".") # 将字符串按点分割成列表
for num in ip_list:
if len(ip_list) == 4 and num.isdigit() and 0 <= int(num) <= 255:
SIP_K = "src_subnet"
SIP_V = {"ip": Src_IP, "netmask": "32"}
else:
SIP_K = "src_addr"
SIP_V = {"member": "Any", "type": "0"}
#-----------目的地址----------------------
if re.findall(re.compile(r'[A-Za-z]', re.S), Dst_IP):
DIP_K = "dst_host"
DIP_V = {"host": Dst_IP,"is_ipv6": "0"}
elif Dst_IP.find('-') > 0:
qishi_ip = Dst_IP.split('-')[0]
jieshu_ip = qishi_ip.rsplit('.', 1)[0] + "." + Dst_IP.split('-')[1]
DIP_K = "dst_range"
DIP_V = {"min": qishi_ip, "max": jieshu_ip}
elif Dst_IP.find('/') > 0:
qishi_ip = Dst_IP[0:Dst_IP.find('/')]
jieshu_ip = Dst_IP[Dst_IP.find('/') + 1:]
DIP_K = "dst_subnet"
DIP_V = {"ip": qishi_ip, "netmask": jieshu_ip}
elif Dst_IP[Dst_IP.find('/') + 1:] == '0' or Dst_IP[0:Dst_IP.find('/')] == '0.0.0.0':
DIP_K = "dst_addr"
DIP_V = {"member": "Any","type": "0"}
elif len(Dst_IP.split('.')) == 4:
ip_list = Dst_IP.split(".") # 将字符串按点分割成列表
for num in ip_list:
if len(ip_list) == 4 and num.isdigit() and 0 <= int(num) <= 255:
DIP_K = "dst_subnet"
DIP_V = {"ip": Dst_IP, "netmask": "32"}
else:
DIP_K = "dst_addr"
DIP_V = {"member": "Any", "type": "0"}
#———————————————————3、服务端口TCP:XXX---------------------
# protocol_url='{0}servicebook'.format(server_ip)
# protocol_data =[{"name" : "TCP80", ##协议名称,一般以TCPxxx或者UDPxx
# "type" : "0",
# "row" : [{"protocol" : "6", #6表示TCP,17表示UDP
# "sp_low" : "0", #源端口从0-65535,不变
# "sp_high" : "65535",#源端口从0-65535,不变
# "dp_low" : "80", #目的端口起始
# "dp_high" : "80", }] #目的端口结束
# }]
# response = requests.post(url=protocol_url, headers=headers, cookies=cookies, data=json.dumps(protocol_data),verify=False)
# print(response.json())
if protocol_tcpudp.startswith('T') or protocol_tcpudp.startswith('t'):
protocol_id= 6
elif protocol_tcpudp.startswith('U') or protocol_tcpudp.startswith('u'):
protocol_id = 17
pro = protocol_tcpudp.split('P')[1] or protocol_tcpudp.split('p')[1] or protocol_tcpudp.split('U')[1] or protocol_tcpudp.split('u')[1]
protocol_url='{0}servicebook'.format(server_ip)
protocol_data =[{"name" : protocol_tcpudp, ##协议名称,一般以TCPxxx或者UDPxx
"type" : "0",
"row" : [{"protocol" : protocol_id, #6表示TCP,17表示UDP
"sp_low" : "0", #源端口从0-65535,不变
"sp_high" : "65535",#源端口从0-65535,不变
"dp_low" : pro, #目的端口起始
"dp_high" : pro, }] #目的端口结束
}]
response = requests.post(url=protocol_url, headers=headers, cookies=cookies, data=json.dumps(protocol_data),verify=False)
#———————————————————4、时间参数---------------------
# time_url='{0}schedule'.format(server_ip)
# time_data=[{"name": gongdanhao, #时间名称 ,一般为工单号
# "schedule_absolute":
# {"start_time_mask": 1,
# "start_year": 2022, #起始年
# "start_month": 11, #起始月
# "start_day": 23, #起始日
# "start_hour": 0, #起始时
# "start_minutes": 0, #起始分
# "start_second": 0, #起始秒
# "end_time_mask": 1,
# "end_year": 2022, #结束年
# "end_month": 11, #结束月
# "end_day": 30, #结束日
# "end_hour": 23, #结束时
# "end_minutes": 59, #结束分
# "end_second": 59 #结束秒
# }}]
# response = requests.post(url=time_url, headers=headers, cookies=cookies, data=json.dumps(time_data),verify=False)
###### print(response.json())
######"schedname": [ { "name": "gongdanhao" } ], ##策略中使用time参数,一般为工单号
#----------------------------------------------------------------
policy_data = [{ "name" : { "name" : gongdanhao},
"id":policy_id,
"enable" : 1,
"src_zone" : { "name": "Any" },
SIP_K : SIP_V,
"dst_zone" : { "name": "Any" },
DIP_K: DIP_V,
"service" : [{"member": protocol_tcpudp,"type": "0"}],
"action" : "2",
"log_end": "1",
"log_start": "1",
"assistant_enable": "0",}] #可以利用assistant_enable参数进行时间替换
#"schedname": [ { "name": 时间名称 } ], #4、时间参数,时间有效期,没有的话注释掉,
response = requests.post(url=policy_url, headers=headers, cookies=cookies, data=json.dumps(policy_data),verify=False)
print(response.json())
#-------------------移动策略------------------------
move_policy_data=[{"id":policy_id,"location":"before",}]
response = requests.put(url=policy_url, headers=headers, cookies=cookies, data=json.dumps(move_policy_data),verify=False)
山石防火墙-api-安全组策略相关推荐
- 域控服务器怎么统一改策略,使用域组策略及脚本统一配置防火墙
使用域组策略/脚本统一配置防火墙 目前企业内网多为域环境,部分企业应用例如***检测等需要客户端统一开放某一端口比如Ping,如果企业环境较大,客户端数千个逐个设置将是浪费工作效率且不灵活的方案:所以 ...
- 使用组策略配置Windows 7的高级防火墙
示例:使用组策略配置Windows 7的高级防火墙 微软河北技术支持中心的培训部门的员工不允许访问FTP站点,其他出站的流量允许.现在你需要使用组策略中配置培训部门的计算机的高级防火墙,实现出站流量的 ...
- 计算机配置cpo,使用域组策略及脚本统一配置防火墙-20210421070355.docx-原创力文档...
使用域组策略/脚本统一配置防火墙 目前企业内网多为域环境,部分企业应用例如入侵检测等需要客户端统一开放某一端口比如Ping,如果企业环境 较大,客户端数千个逐个设置将是浪费工作效率且不灵活的方案:所以 ...
- 使用组策略配置Windows防火墙设置和规则
Windows防火墙允许限制特定应用程序,协议或TCP / IP端口的入站/出站网络流量.这是一种限制与用户工作站或服务器之间的网络访问的简便方法.您可以在每台计算机上分别配置Windows防火墙规则 ...
- Windows防火墙问题3--由于安全考虑,某些设置由组策略控制
"常规"选项卡变虚了!由于安全考虑,某些设置由组策略控制 在运行里面输入gpedit.msc回车 然后找到计算机配置下的安全模板--网络--Windows防火墙--标准配置文件-- ...
- 利用配置组策略解决Chrome浏览器第三方扩展被停用的问题
首先根据以下代码生成文件chrome.adm CLASS MACHINECATEGORY !!googleCATEGORY !!googlechromeKEYNAME "Software\P ...
- Windows 组策略(Group Policy Object)机制的漏洞分析
Windows 组策略(Group Policy Object)机制的漏洞类大约有60个,专门针对策略更新步骤,允许域环境中的标准用户执行文件系统攻击,进而使恶意用户可以逃避反恶意软件解决方案,绕过安 ...
- 6425C-Lab6 实现组策略
共有3个实验: 实验6A:组策略的实现 实验6B:管理组策略的作用域 实验6C:组策略应用的排错 ========== 实验6A:组策略的实现 共2个练习: 练习1:创建.编辑和链接GPO 练习2:使 ...
- Windows Server 2008组策略安全实践手册
相信很多人都知道Windows Server 2008系统的安全功能非法强大,而它的强大之处不仅仅是新增加了一些安全功能,而且还表现在一些不起眼的传统功能上.这不,巧妙对Windows Server ...
最新文章
- R语言Box-Cox变换实战(Box-Cox Transformation):将非正态分布数据转换为正态分布数据、计算最佳λ、变换后构建模型
- 【机器学习】一文读懂层次聚类(Python代码)
- 窗口分析函数_5_计算累加乘
- 信息学奥赛一本通 1012:计算多项式的值 | OpenJudge NOI 1.3 07
- python万年历时钟_python实现万年历类calendar
- 俄罗斯议会预计2021年代币发行将激增
- 音视频开发-websocket教程
- 图(一):图的邻接表表示
- mybatis中的mapper代理的应用
- 15投影矩阵与Moore-Penrose逆(1)
- CTCS列控系统原理--详细学习笔记
- 谷歌浏览器如何截全屏长图(非常实用)
- A Neural Algorithm of Artistic Style : Neural Style Transfer with Eager Executon
- 厉害!他33岁破格晋升教授和博导,成果还打破国外技术垄断
- 安卓adb问题处理总结
- 【LaTex】解决:Origin导出pdf图片在latex中线条变粗
- matlab编写数学公式计算,关于MATLAB Function实现数学运算的相关介绍
- 什么是文件管理软件?你为什么需要它?
- 判断sign签名(json格式)
- 数字经济背景下的多元化转型,电信运营商如何突围?
热门文章
- 流媒体后视镜方案关键技术--失效模式控制
- Shopfa:有哪些果蔬生鲜电商平台?
- R语言解决package ‘MODIS’ is not available (for R version 3.6.3) 的问题
- 使用.reg文件操作注册编辑表
- 让阿根廷队“告吹”的三个球背后,2022 年世界杯暗藏哪些技术玄机?
- 桌面管理,Windows自带工具!很强!
- 大数据之Flume:Flume概述
- HDU 4950 Monster
- 机器人焊枪动作与编程实验_敲黑板 | 机器人是怎么完成任务的?这三种编程方式的区别你造吗...
- 深度|为什么一定要从DevOps走向BizDevOps?