AWS Shield Advanced 防护 ALB 的开发和使用,aws security

AWS Shield Advanced 防护 ALB 的开发和使用引言 在现代网络环境中,Web 应用程序面临着日益严峻的网络威胁。为了确保 Web 应用程序的可用性和安全性,AWS 提供了一套全面的解决方案&#

引言

在现代网络环境中,Web应用面临着日益严重的网络威胁。为了确保Web 应用程序的可用性和安全性,AWS 提供了一整套解决方案,包括AWS Shield Advanced。 Shield Advanced 是一项托管DDoS 防护服务,旨在保护您的应用程序免受网络攻击。

本文介绍了如何使用适用于Python 的AWS 开发工具包(Boto3),并提供了一些自动开发和使用AWS Shield Advanced 服务的实用技巧,特别是保护应用程序负载均衡器(ALB) 免受DDoS 攻击。

1. 为什么选择开发 Shield 防护 ALB?

1.1 网络攻击的威胁

网络攻击已成为日常业务的一部分,不容忽视。 DDoS(分布式拒绝服务)攻击是一种利用多个计算机系统对目标系统发起攻击,使其无法提供正常服务的网络攻击。这些攻击可能导致系统故障、服务不可用和数据泄露。

1.2 AWS Shield Advanced 的优势

AWS Shield Advanced 是AWS 提供的全面DDoS 防护服务,具有以下优势:

凭借全球网络规模, Shield Advanced利用AWS全球基础设施,在全球多个区域提供高效的DDoS防护服务。实时监控和威胁情报: Shield Advanced 提供实时网络流量监控,并集成AWS 威胁情报服务,以快速响应新兴网络威胁。自动防御机制: Shield Advanced 不仅可以检测DDoS 攻击,还可以自动采取必要的防御措施来维持应用程序的高可用性。

2. 开发 Shield 防护 ALB 的脚本示例

下面是一组使用Boto3(适用于Python 的AWS 开发工具包)编写的示例脚本,用于自动添加和删除受AWS Shield 保护的ALB。

2.1 批量添加 Shield 防护

笔记:

AWS Shield Advanced 功能已在该区域开启

新保护返回状态200。如果为空,则表示作者已受到保护。如果没有,请自行更改。

登录后复制

导入boto3

从日期和时间导入日期和时间

def get_load_balancer_arns():

elbv2=boto3.client(\’elbv2\’, 区域名称=\’us-east-1\’)

响应=elbv2.describe_load_balancers()

load_balancer_arns=[lb[\’LoadBalancerArn\’] for lb in response[\’LoadBalancers\’] if

lb[\’Type\’]==\’Application\’ 而不是lb[\’Scheme\’]==\’internal\’ 和lb[

[\’in-hk-test-alb\’、\’CL-Pr-LoadB-26SNF9ERPK26\’]] 中缺少\’LoadBalancerName\’]

返回load_balancer_arns

def create_cloudwatch_alarm(警报名称, 负载均衡器名称):

Cloudwatch=boto3.client(\’cloudwatch\’,region_name=\’us-east-1\’)

响应=Cloudwatch.put_metric_alarm(

报警名称=报警名称,

MetricName=\’目标响应时间\’,

命名空间=\’AWS/应用程序ELB\’,

统计=\’平均\’,

尺寸=[

{

\’名称\’: \’负载均衡器\’,

\’value\’ : 负载均衡器名称

},

],

周期=60,

评估期=20,

报警数据点=1,

阈值=5.0,

ComparisonOperator=\’GreaterThanOrEqualToThreshold\’,

TreatMissingData=\’notBreaching\’, #notBreaching 不会生成丢失数据警报。

单位=\’秒\’

def create_route53_health_check(警报名称):

Route53=boto3.client(\’route53\’)

current_time=datetime.now().strftime(\’%Y-%m-%d-%H:%M:%S\’)

响应=Route53.create_health_check(

CallerReference=f\'{current_time}\’,

健康检查配置={

\’类型\’: \’CLOUDWATCH_METRIC\’,

‘反转’: 假,

“已禁用”: 错误,

\’警报标识符\’: {

\’地区\’: \’us-east-1\’,

\’名称\’: f\'{alarm_name}\’

},

\’数据健康状态不足\’: \’最后已知状态\’

}

health_check_arn=响应[\’HealthCheck\’][\’Id\’]

返回health_check_arn

def Shield_is_alb_protected(alb_arn):

屏蔽=boto3.client(\’屏蔽\’)

受保护资源=[]

响应=Shield.list_protections(MaxResults=100)

protected_resources.extend([protection[\’ResourceArn\’] 用于响应[\’Protections\’]] 中的保护)

而“NextToken”响应:

响应=Shield.list_protections(MaxResults=100, NextToken=response[\’NextToken\’])

protected_resources.extend([protection[\’ResourceArn\’] 用于响应[\’Protections\’]] 中的保护)

返回protected_resources 的alb_arn

def create_shield_protection(alb_arn,protection_name):

屏蔽=boto3.client(\’屏蔽\’)

响应=Shield.create_protection(

名称=受保护的名称,

资源Arn=alb_arn

返回响应

def Protection_alb(alb_arn):

受保护的名称=alb_arn.split(\’/\’)[-1]

响应=create_shield_protection(alb_arn, 保护名称)

Protection_id=响应[\’保护ID\’]

返回protection_id

def Associate_health_check(health_check_arn,protection_id):

屏蔽=boto3.client(\’屏蔽\’)

响应=Shield.associate_health_check(

ProtectionId=protection_id,

HealthCheckArn=health_check_arn

返回响应

def enable_shield_automatic_response(resource_arn,操作):

屏蔽=boto3.client(\’屏蔽\’)

响应=Shield.enable_application_layer_automatic_response(ResourceArn=resource_arn,Action={f\'{action}\’:{}})

返回响应

如何使用

# 检查ALB是否受到保护

load_balancer_arns=get_load_balancer_arns()

对于load_balancer_arns: 中的alb_arn

警报名称=f\’TargetResponseTime-{alb_arn.split(\’/\’)[-1]}\’

负载均衡器名称=\’/\’.join(alb_arn.split(\’/\’)[+1:])

is_protected=is_alb_protected(alb_arn)

否则is_protected:

create_cloudwatch_alarm(警报名称,负载均衡器名称)

health_check_id=create_route53_health_check(警报名称)

保护_id=保护_alb(alb_arn)

health_check_arn=\’arn:aws:route53:healthcheck/\’ + health_check_id

响应=Associate_health_check(health_check_arn,protection_id)

动作=\’计数\’

响应=Enable_shield_automatic_response(alb_arn, 操作)

打印(响应[\’ResponseMetadata\’][\’HTTPStatusCode\’])

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.4 4.45.46.47.48.49.50 51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90。 9 1.92.93.94.95.96.97.98。 99.100.101.102.103.104.105.106.107.108.109.110。

此代码用于批量检查ALB 是否受AWS Shield 保护。如果未受保护,则会创建CloudWatch 警报、Route 53 运行状况检查和屏蔽保护,以确保您的ALB 受到DDoS 攻击时得到及时保护。

2.2 批量移除 Shield 防护

登录后复制

导入boto3

def get_load_balancer_arns():

elbv2=boto3.client(\’elbv2\’, 区域名称=\’us-east-1\’)

响应=elbv2.describe_load_balancers()

load_balancer_arns=[lb[\’LoadBalancerArn\’] for lb in response[\’LoadBalancers\’] if

lb[\’Type\’]==\’Application\’ 而不是lb[\’Scheme\’]==\’internal\’ 和lb[

[\’in-hk-test-alb\’、\’CL-Pr-LoadB-26SNF9ERPK26\’]] 中缺少\’LoadBalancerName\’]

返回load_balancer_arns

def description_shield_protection(resource_arn):

屏蔽=boto3.client(\’屏蔽\’)

响应=Shield.describe_protection(

ResourceArn=resource_arn

返回响应

def delete_protection(protection_id):

屏蔽=boto3.client(\’屏蔽\’)

响应=Shield.delete_protection(ProtectionId=f\'{protection_id}\’)

返回响应

def delete_health_check(health_check_id):

Route53=boto3.client(\’route53\’)

响应=Route53.delete_health_check(

HealthCheckId=health_check_id

返回响应

def delete_alarms(警报名称):

Cloudwatch=boto3.client(\’cloudwatch\’)

响应=Cloudwatch.delete_alarms(

警报名称=[

f\'{警报名称}\’,

]

返回响应

def is_alb_protected(alb_arn):

屏蔽=boto3.client(\’屏蔽\’)

响应=Shield.list_protections()

protected_resources=[保护[\’ResourceArn\’] 保护[\’保护\’]] 响应

返回受保护资源的alb_arn

如何使用

load_balancer_arns=get_load_balancer_arns()

对于load_balancer_arns: 中的resources_arn

is_protected=is_alb_protected(resource_arn)

对于is_protected:

警报名称=f\’TargetResponseTime-{resource_arn.split(\’/\’)[-1]}\’

响应=描述_屏蔽_保护(resource_arn)

Protection_id=响应[\’保护\’][\’ID\’]

health_check_id=响应[\’保护\’][\’HealthCheckIds\’][0]

删除_保护(保护id)

删除健康检查(健康检查ID)

delete_alarms(警报名称)

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.4 4.45.46.47.48.49.50 51.52.53.54.55.56.57。

此代码用于批量检查ALB 是否受AWS Shield 保护。如果已受到保护,则会检索保护详细信息,并通过AWS 开发工具包删除Shield 保护,并删除关联的CloudWatch 警报和Route 53 运行状况检查。

3. 结语

AWS Shield Advanced 提供了强大的解决方案,可确保您的Web 应用程序免受不断变化的网络威胁。使用Boto3 编写脚本使您可以轻松地将Shield 保护集成到自动化工作流程中,从而提高整个应用程序架构的安全性和可用性。在日益复杂的网络环境中,采取主动措施来保护您的应用程序非常重要,而AWS Shield Advanced 是一个可靠的选择。

我们希望这些脚本和示例可以帮助您更好地了解和使用AWS Shield 保护服务来提高Web 应用程序的安全性。

#AWS Shield Advanced 防护以上ALB开发和使用相关内容来源仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92583.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月27日 下午5:00
下一篇 2024年6月27日 下午5:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注