基于saltstack开发自动化开通主机防火墙策略工具

一、前言

企业安全防护策略中会要求操作系统开启防火墙,开启iptables防火墙后,对于业务网络访问意味着要经常去变更调整iptables防火墙策略。如果是管理几台服务器,手工登录操作下还能接受。但在实际大型IT架构中,可能涉及到的服务器成千上万,iptables变动起来如果没有自动化的手段那种痛苦可想而知。遇到过的痛苦比如有:

痛点1:云改数转之际,针对多系统上云过程中网络开放申请工单策略繁多且规则复杂(细化后一个工单,主机iptables策略可能面临成千上万条),需要梳理出全部的三元组关系(源地址、目的地址、目的端口),导致人工梳理通常需要大半天时间,给上云工作带来很大的困扰,急需一个便利的批量组合处理工具。


痛点2:现网环境不是全部都是统一的标准化iptables模板,有些历史主机iptables开放情况各不相同,每次开通规则前还需对主机iptables开放情况先进行确认,人工确认的方式耗时较大,急需一个工具可以自动判断iptables的实情。


痛点3:主机防火墙网络权限开放后,最后需要进行开放策略的验证探测,人工探测存在取样不充分,探测效率不高的情况,急需一个工具可以在策略开通后telnet自动验证策略开通情况。

二、实现过程

1、先从源头上规范定义申请工单内容,输出标准规范的网络申请模板《上云系统主机侧开放策略模板》,例如

2、定义好输入格式后,针对应用申请的一对多、多对多和多对一的网络权限要求,通过python编写组合处理程序,输入工单内容后,自动输出全部三元组对应关系,解决了“痛点一”的问题。

程序对应文件名“list.py”---由主shell脚本调用执行

#!/usr/bin/python
# -*- coding: utf-8 -*-
# encoding=utf-8
import commands
import re
from itertools import combinations
from functools import reduce

inputf = open('/root/iptables/port.txt','r')
list1=[]
while True:
  line=inputf.readline()
  if (len(line)<1):
    break;
  outl=re.split('#',line)
  i=0
  while i<len(outl)-1:
    list1.append(outl[i])
    i=i+1
  list1.append(outl[i][0:-1])
#print list1
inputf.close()

inputf = open('/root/iptables/dest.ip','r')
list2=[]
while True:
  line=inputf.readline()
  if (len(line)<4):
    break;
  outl=re.split(',',line)
  i=0
  while i<len(outl)-1:
    list2.append(outl[i])
    i=i+1
  list2.append(outl[i][0:-1])
#print list2
inputf.close()


inputf = open('/root/iptables/source.ip','r')
list3=[]
while True:
  line=inputf.readline()
  if (len(line)<4):
    break;
  outl=re.split(',',line)
  i=0
  while i<len(outl)-1:
    list3.append(outl[i])
    i=i+1
  list3.append(outl[i][0:-1])
#print list3
inputf.close()


dict = {
    '目的地址':list1,
    '目的端口':list2,
    '源地址':list3,
}


lists=[]
def suiji(num):
    for key in combinations(dict.keys(), num):
        for i in key:
            lists.append(dict[i])
        # print(lists)
        code = '-'
        fn = lambda x, code='-': reduce(lambda x, y: [str(i) + code + str(j) for i in x for j in y], x)
        print(fn(lists, code))
        #lists.clear()
#  print('------------end----------')

if __name__ == '__main__':
        suiji(3)

3、通过调用list.py命令输出的结果,遍历策略中的目的地址,对目的地址的saltstack客户端和iptables情况进行分类汇总,输出到指定目录下指定文件。如果通过检测可salt且iptables为标准模板的主机,输出开放iptables的批量操作脚本,运行后即可批量开放对应主机权限;对于无法salt和非标准iptables的主机根据对应日志文件再进行人工判断处理。引用的程序对应文件名“chuli.sh”,这一步解决了“痛点二”的问题。

4、最后,再根据策略中源地址salt情况,输出抽样telnet验证的批量操作脚本。关于telnet的拨测是使用了该文中介绍的telnetfull的工具。引用的程序对应文件名“chuli.sh”,这一步解决了“痛点三”的问题。

telnetfull工具参考如下:

https://vincentwong.blog.csdn.net/article/details/135333290

三、实现效果

1、将应用申请的策略表格,按照模板规范要求检查没问题后,直接copy导入到chuli.txt文件中。例如:

2、然后执行命令 sh chuli.sh,输入处理的工单号

3、执行命令结束后无报错出现如下提示,表示执行处理正常。

4、执行结束后,在result子目录对应工单目录下生成8个结果文档

chuli.txt:备份工单提交的策略申请内容

Iptables-null:目标地址未启动iptables的策略清单,无需处理,输出记录。

Iptables-ok:目标地址已启动标准iptables的策略清单,作为输出自动脚本的传参文件。

Iptables-other:目标地址已启动非标准iptables的策略单,需人工查看继续判断处理

salt-notok:目标地址无法被salt管理的策略清单,需人工查看继续判断处理

salt_iptables.log: 自动输出的批量iptables开放脚本(开通策略无脑粘贴即可)

shuchu.log:根据提交的工单内容,组合输出的全部策略的三元组组合对应清单

salt_telnet.log:自动输出的批量telnet验证脚本(验证策略无脑粘贴即可)

5、 执行1-4的步骤后,大大提升了之前处理网络策略的时间,也解放了生产力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/356474.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript基础入门】05 JavaScript基础语法(三)

JavaScript基础语法&#xff08;三&#xff09; 目录 JavaScript基础语法&#xff08;三&#xff09;数组概述数组语法多维数组 操作数组修改数组获取数组长度数组和字符串之间的转换添加和删除数组项 Null 和 Undefined字符串连接字符串字符串转换获取字符串的长度在字符串中查…

后台管理系统模板搭建/项目配置

1 项目初始化 一个项目要有统一的规范&#xff0c;需要使用eslintstylelintprettier来对我们的代码质量做检测和修复&#xff0c;需要使用husky来做commit拦截&#xff0c;需要使用commitlint来统一提交规范&#xff0c;需要使用preinstall来统一包管理工具。 1.1 环境准备 1…

合合信息技术能力

体验中心网址&#xff1a; https://www.textin.com/TextIn体验中心 - 在线免费体验中心https://www.textin.com/ 合合技术团队CSDN&#xff1a; 合合技术团队的博客_CSDN博客-基于深度学习的文本检测与识别技术白皮书,【通用文本信息抽取技术白皮书】,【技术应用】领域博主 …

xss靶场实战

靶场链接&#xff1a;https://pan.baidu.com/s/1ors60QJujcmIZPf3iU3SmA?pwd4mg4 提取码&#xff1a;4mg4 XSS漏洞原理 XSS又叫CSS&#xff08;Cross Site Script&#xff09;&#xff0c;跨站脚本攻击。因为与html中的css样式同&#xff0c;所以称之为XSS。在OWASP top 1…

Python Tornado 实现SSE服务端主动推送方案

一、SSE 服务端消息推送 SSE 是 Server-Sent Events 的简称&#xff0c; 是一种服务器端到客户端(浏览器)的单项消息推送。对应的浏览器端实现 Event Source 接口被制定为HTML5 的一部分。相比于 WebSocket&#xff0c;服务器端和客户端工作量都要小很多、简单很多&#xff0c…

深度强化学习(王树森)笔记05

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

政安晨的机器学习笔记——基于Ubuntu系统的Miniconda安装Jupyter Notebook

一、准备工作 Miniconda的安装请参考我的另一篇博客文章&#xff1a; 实例讲解深度学习工具PyTorch在Ubuntu系统上的安装入门&#xff08;基于Miniconda&#xff09;&#xff08;非常详细&#xff09;https://blog.csdn.net/snowdenkeke/article/details/135887509 这里…

༺༽༾ཊ—Unity之-05-抽象工厂模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用 抽象工厂模式 创建 人物与宠物 模型&#xff0c; 首先资源商店下载 人物与宠物…

C++STL之map、set的使用和模拟实现

绪论​&#xff1a; “我这个人走得很慢&#xff0c;但是我从不后退。——亚伯拉罕林肯”&#xff0c;本章是接上一章搜索二叉树中红黑树的后续文章&#xff0c;若没有看过强烈建议观看&#xff0c;否则后面模拟实现部分很看懂其代码原理。本章主要讲了map、set是如何使用的&am…

torch与cuda\cudnn和torchvision的对应

以上图片来源于这篇博客 于是&#xff0c;我需要手动下载0.9.0torchvision 直接在网站https://pypi.tuna.tsinghua.edu.cn/simple/后面加上torchvision&#xff0c;就不用ctrlF搜torchvision了&#xff0c;即进入下面这个网站&#xff0c;找到对应版本的包下载安装即可 https…

html页面练习——公司发展流程图

1.效果图 2.html <div class"center"><header><h1>发展历程</h1><h3>CONMPANY HISTORY</h3></header><main><div class"left"><div class"time1">2012.12</div><div cla…

C/C++编码问题研究

文章目录 一、Unicode字符集与U8/U16/U32编码二、编码1. 占字节数2. ASCII、GB2312、GBK、GB18030 以及 UTF8 的关系3. BOM4. UTF-8的存储实现 三、编译器字符集设置1. GCC语法Example 2. MSVC语法Example 三、wchar_t五、编码转换函数六、代码 & 实践1. UTF8与UTF16、UTF3…

opencv#35 连通域分析

连通域分割原理 像素领域介绍: 4邻域是指中心的像素与它邻近的上下左右一共有4个像素&#xff0c;那么称这4个像素为中心像素的4邻域。 8邻域是以中心像素周围的8个像素分别是上下左右和对角线上的4个像素。 连通域的定义(分割)分为两种:以4邻域为相邻判定条件的连通域分割和…

老司机用脚本批量巧删恶意文件

作者&#xff1a;田逸&#xff08;formyz&#xff09; 一个NFS服务器&#xff0c;为多个Web项目所共享。这些目录包括PHP程序、图片、HTML页面和用户上传的文档和附件等。因为某些Web框架古老&#xff0c;存在诸如不对上传文件做严格的安全性检查&#xff0c;虽然此NFS服务器位…

腾讯发表多模态大模型最新综述,从26个主流大模型看多模态效果提升关键方法

在大规模语言模型&#xff08;LLMs&#xff09;通往通用人工智能&#xff08;AGI&#xff09;的道路中&#xff0c;从传统的单一的“语言模态”扩展到“图像”、“语音”等等的“多模态”必然是大模型进化的必经之路。 在过去的 2023 年&#xff0c;多模态大规模语言模型&…

建筑效果图渲染制作周期是多久

建筑效果图的渲染制作周期会根据多种因素而变化&#xff0c;包括项目的复杂性、渲染的详细程度、分辨率要求、场景中的元素数量和复杂度、以及项目所需的修改和迭代次数等。 通常&#xff0c;简单的建筑效果图可能在几个工作日内完成&#xff0c;而大型或高度复杂的项目可能需要…

合并两个排序的链表

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

Cantor表(刷题)(C语言)

个人博客主页&#xff1a;https://blog.csdn.net/2301_79293429?typeblog 专栏&#xff1a;https://blog.csdn.net/2301_79293429/category_12545690.html 题目描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的&…

【JLU】校园网linux客户端运行方法

终于给这输入法整好了&#xff0c;就像上面图里那样执行命令就行 写一个开机自启的脚本会更方便&#xff0c;每次都运行也挺烦的 补充了一键运行脚本&#xff0c;文件路径需要自己修改 #!/bin/bashrun_per_prog"sudo /home/d0/ubuntu-drclient-64/DrClient/privillege.s…

Java项目:基于SSM框架实现的高校毕业生就业管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm817基于SSM框架实现的高校毕业生就业管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调…