首页 > 编程语言 >python3修改安全组

python3修改安全组

时间:2023-11-16 10:12:20浏览次数:37  
标签:__ old 安全 ip self request 修改 id python3

场景:办公网络访问云资源,公司出口IP会变,试试更新到安全组

脚本如下:

#!/usr/bin/env python 
# -*- coding: utf-8 -*-
# @Time    : 2023/11/15 13:12
# @File    : security_group.py
# @Author  : zk_linux
# @Software: PyCharm
# @Description:

import json
import socket
from aliyunsdkecs.request.v20140526 import DescribeSecurityGroupAttributeRequest, RevokeSecurityGroupRequest, AuthorizeSecurityGroupRequest
from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526 import RevokeSecurityGroupRequest
from aliyunsdkcore.acs_exception.exceptions import ServerException
import logging
import time

# 认证信息
access_key_id = ""
access_key_secret = ""
# 地域
region_id = "cn-hangzhou"
# 安全组 ID
security_group_id = "sg-"
port = "80/80"

# 公司出口域名
hostname = "www.abc.cn"
# hostname = "baidu.com"

# 初始化实例
client = AcsClient(access_key_id, access_key_secret, 'cn-hangzhou')

# 日志路径
file_path = '/tmp/ip_address.log'

logging.basicConfig(level=logging.INFO,
                    filename=file_path,
                    filemode='a',
                    format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
                    )


class Domain_name_resolution:

    def __init__(self, name):
        self.name = name

    def domain_name(self):
        '''
        解析域名--> IP
        :return: IP
        '''
        try:
            ip_address = socket.gethostbyname(self.name)
            return ip_address
        except socket.error as e:
            print(f"Error: {e}")
            return None


class Query_rule:

    def __init__(self, sg_id, client):
        self.sg_id = sg_id
        self.client = client

    def query_rule(self):
        '''
        查询安全组80规则
        :return: 0 规则不存在
        '''

        describe_request = DescribeSecurityGroupAttributeRequest.DescribeSecurityGroupAttributeRequest()
        describe_request.set_SecurityGroupId(self.sg_id)
        describe_response = self.client.do_action_with_exception(describe_request)
        current_ip_ranges = describe_response.decode('utf-8')

        data = json.loads(current_ip_ranges)
        source_cidr_ip = data.get('Permissions', {}).get('Permission', [{}])

        for i in source_cidr_ip:
            if i.get('PortRange') != "80/80":
                return 0
            else:
                return i.get('SourceCidrIp')


class Delete_old_rules:

    def __init__(self, sg_id, port, old_public_ip):
        self.security_group_id = sg_id
        self.port = port
        self.old_public_ip = old_public_ip

    def Delete_old_ip(self):
        '''
        删除规则
        :return:
        '''
        revoke_request = RevokeSecurityGroupRequest.RevokeSecurityGroupRequest()
        revoke_request.set_SecurityGroupId(self.security_group_id)
        revoke_request.set_IpProtocol("tcp")
        revoke_request.set_PortRange(self.port)
        revoke_request.set_SourceCidrIp(self.old_public_ip)
        revoke_response = client.do_action_with_exception(revoke_request)
        return revoke_response


class Add_an_access_rule:
    def __init__(self, sg_id, port, new_ip):
        self.sg_id = sg_id
        self.port = port
        self.new_ip = new_ip

    def Add_rule(self):
        '''
        出口IP变动更新到安全组
        :return:
        '''
        authorize_request = AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequest()
        authorize_request.set_SecurityGroupId(self.sg_id)
        authorize_request.set_IpProtocol("tcp")
        authorize_request.set_PortRange(self.port)
        authorize_request.set_SourceCidrIp(self.new_ip)

        authorize_response = client.do_action_with_exception(authorize_request)
        return authorize_response


class Check_public_ip:
    @classmethod
    def Check_ip_is_updated(cls):
        # 获取当前出口新IP
        ojb1 = Domain_name_resolution(hostname)
        new_ip = ojb1.domain_name()
        # 获取安全组中失效IP
        obj = Query_rule(security_group_id, client)
        old_ip = obj.query_rule()
        # 入网80端口存在,先删除,在添加

        if old_ip != 0:
            logging.warning("规则存在")
            if old_ip != new_ip:
                logging.warning("删除规则")
                del_ip = Delete_old_rules(security_group_id, port, old_ip)
                del_response = del_ip.Delete_old_ip()
                logging.warning("删除响应:{}".format(del_response))
                Add = Add_an_access_rule(security_group_id, port, new_ip)
                add_response = Add.Add_rule()
                logging.info("80入网IP更新,更新IP:{}响应:{}".format(new_ip, add_response))
            else:
                logging.info("出口IP未更新.")

        else:
            logging.error("80入网规则不存在")


if __name__ == '__main__':
    while True:
        zk_net = Check_public_ip()
        zk_net.Check_ip_is_updated()
        time.sleep(3)

  

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back  

标签:__,old,安全,ip,self,request,修改,id,python3
From: https://www.cnblogs.com/sseban/p/17835572.html

相关文章

  • 第十五天-登录验证&Cookie&Session&验证码安全
    1、后台验证-登录用户逻辑安全2、后台验证-COOKIE&SESSION3、后台验证-验证码&万能密码等登陆验证流程:1.发送登录请求:账号,密码2.接收账号密码3.判断账号密码准确性正确->成功登录,跳转页面失败->跳转到重新登录页面后台管理系统有多个文件页面,为了方便验证,一般会选用cook......
  • 抖音私信群发工具cookie,批量导入UID安全码,易语言谷歌模版开源
    用精易浏览器的谷歌模版开发的工具,最主要的是可以多账号登录抖音号,而且可以导入COOKIE,也能提取cookie,就实现了一种多账号私信的效果,可以搭配代理IP效果的,这个我没加入,我就分享下源码,开源就行了,软件基础都设计好了,可以实现的功能就是可以多账号登录【cookie写入本地txt分割】然后导......
  • 抖音批量私信群发工具,非脚本,cookie多账号uid安全码,谷歌浏览器内核
    为什么说是谷歌浏览器内核呢?因为它调用的是谷歌浏览器内核,调用你本地电脑上安装的谷歌浏览器,比如cookie提取还有原创,以及网页的填表都是直接调用你电脑的谷歌浏览器内核,所以安全性和稳定性非常高,用精易VIP模块开发的,支持导入抖音用户ID,然后实现批量群发私信的效果,因为是cookie原理......
  • 我给网站做公安备案年度安全评估
    我是卢松松,点点上面的头像,欢迎关注我哦!差不多从2020年开始,我们的网站每年11月左右就要去公安备案做一次年度的安全评估,而现在又新增了APP和小程序备案。如下图所示:评估的内容也很简单,主要是确认安全管理负责人、用户真实身份核验、个人信息保护、投诉举报机制等内容。而这次是公安......
  • 2023-2024-1 20211211 《信息安全系统设计与实现(上)》第12章
    块设备I/O缓冲区文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识的磁盘块时,它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。如果该缓冲区存在并且包含有效数据,那么它只需从缓冲区中读取数据,而无须再次从磁盘中读取数据块。大多数文件系统使用......
  • WorkPlus Meet视频会议系统,可私有化部署,保障内部数据安全
    WorkPlusMeet作为一款私有化音视频会议平台,具有高度安全性和部署灵活性,能够根据参会人数进行灵活的调配,这样企业可以有效控制会议成本,避免资源浪费。同时,WorkPlusMeet平台支持多种功能,满足不同场景下的视频会议需求。其中包括屏幕共享功能,可以让与会人员方便地分享自己的屏幕内容......
  • 【iOS逆向与安全】某茅台App算法分析还原
    1.目标某茅台软件的actParam算法分析还原。2.使用工具mac系统frida-ios-dump:砸壳已越狱iOS设备:脱壳及frida调试IDAPro:静态分析Charles:抓包工具ss:小火箭,配合Charles使用3.流程处理启动闪退在IDAPro搜索SVC得到如下函数列表:NOP掉sub_函数的最后一行汇编......
  • 2023-2024-1 信安课程设计 主机安全检测工具设计方案
    主机安全检测工具设计方案开发平台和工具程序架构设计开发路线目前存在的困难开发平台和工具使用Linux平台。选择Python作为主要编程语言。使用第三方库如socket、platform等来简化开发。程序架构设计模块划分1.用户界面模块:处理用户输入,向其他模块传递参数。(初......
  • 代码安全之代码混淆及加固(Android)
    ​代码安全之代码混淆及加固(Android)......
  • vue3 父组件传值给子组件 子组件修改后回传给父组件
    父组件<jdy-goods-attrv-model:goods_sn="goods.goods_sn"></jdy-goods-attr>//尤总在vue3的时候给我们提供了一个新的思路:v-model来实现父传子,并且子也可以修改父组件传递过来的数据。子组件constprops=defineProps({goods_sn:{type:String,default:'......