运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

AWS 清理安全组

运维开发网 https://www.qedev.com 2020-07-22 09:37 出处:51CTO 作者:beanxyz
豆子今天用AWSTrustAdvisor查看了一下安全组的设置,发现里面有N多安全组的端口设置都没有限制IP,还有几十个安全组明细是测试的产物,但是测试完了没有删除,就这么扔在那里。这些安全组的名单可以下载为Excel文件。我需要处理两件事情,第一,找到这些安全组对应的EC2实例,查看之后做好对应的修改;第二,那些完全没有用的安全组我可以删掉。下面看看怎么做的。我有一台EC2的管理服务器,上面已经

豆子今天用AWS Trust Advisor查看了一下安全组的设置,发现里面有N多安全组的端口设置都没有限制IP,还有几十个安全组是测试的产物,但是测试完了没有删除,就这么扔在那里。

AWS 清理安全组

AWS 清理安全组

这些安全组的名单可以下载为Excel 文件。

AWS 清理安全组

我需要处理两件事情,第一,找到这些安全组对应的EC2 实例,查看之后做好对应的修改;第二,那些完全没有用的安全组 我可以删掉。

下面看看怎么做的。

我有一台EC2 的管理服务器,上面已经配好了对应的IAM Role,因此可以直接跑AWS PowerShell,CLI或者Python Boto3 的代码。

下面是PS的脚本代码。思路很简单,读取Excel文件,然后通过group id 来查找对应的EC2实例,把对应的tag Name标签找到,这样我就知道是什么服务器了

$file=import-excel C:\temp\1iG5NDGVre.xlsx -StartRow 10

$result=@()
foreach($one in $file){

    $id=$one.'Security Group ID'.Split()[0].trim()
    $all=Get-EC2Instance -Filter @{name='instance.group-id';value=$id } | select -ExpandProperty Instances     
    foreach($item in $all){

        $Name=$item.tag | Where-Object {$_.Key -eq 'Name'} | select -ExpandProperty value
        $item | add-member -NotePropertyName Description -NotePropertyValue $name
        $item
        $result+=$item
    }

}

$result | select -Unique Description, InstanceID, SecurityGroups, @{n='State';e={$_.state.Name}} | Where-Object {$_.state -ne 'stopped'}

结果如下

AWS 清理安全组

对于每个实例,我需要实际的登陆之后,通过 netstate -an 来查看established和 listening的端口,然后给对应的安全组进行限制。

第二点也很容易实现,方法类似,查看所有的安全组,如果找不到匹配的EC2Networkinterface,那就输出来。这里我把EC2instance改成了EC2Networkinterface是因为 安全组不仅仅会分配给EC2,还会分配给Application Load Balancer


$all=Get-EC2SecurityGroup
$temp=@()
foreach($one in $all){
    $id=$one.groupid
    $all=Get-EC2NetworkInterface -Filter @{name='group-id';value=$id } 
    #$all=Get-EC2Instance -Filter @{name='instance.group-id';value=$id } 

    if ($all -eq $null){

        $temp+=$one
    }

}

$temp | ft

AWS 清理安全组

确认无误之后 把这些无用的安全组删掉即可。

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消