Skip to main content

Automating Update AWS Security Group

·1 min
Table of Contents

最近在 AWS 上弄了一个 EC2 主机用来放一些比较杂的东西,开放了某个端口,由于我并不想放开所有的 IP 的访问权限, 就写了一个脚本用来获取我本机的公网地址然后用 AWS CLI 获取,撤销、更新 AWS 安全组规则中的 IP 地址。

请确保你已经配置好 AWS CLI 并拥有适当的权限来执行相关操作。

获取当前允许访问端口 xx 的 IP 地址
#

#!/usr/bin/env fish

# 获取当前 IP
set current_cidr (aws ec2 describe-security-groups --group-ids sg-xxxxx --query "SecurityGroups[0].IpPermissions[?FromPort=='xx'].IpRanges[0].CidrIp" --output text)

echo "当前端口 xx 的 CIDR: $current_cidr"

撤销旧的 IP 权限
#

if [ -n "$current_cidr" ]
    aws ec2 revoke-security-group-ingress --group-id sg-xxxxx --protocol tcp --port xx --cidr "$current_cidr"
    echo "从端口 xx 撤销了 CIDR $current_cidr"
else
    echo "未找到端口 xx 的 CIDR"
end

获取本机的公共 IP 地址
#

set local_ip (curl -s ifconfig.me)
echo "本机公共 IP 地址: $local_ip"

添加新的 IP 权限
#

if [ -n "$local_ip" ]
    aws ec2 authorize-security-group-ingress --group-id sg-xxxxx --protocol tcp --port xx --cidr "$local_ip/32"
    echo "将新的 CIDR $local_ip/32 添加到端口 xx"
else
    echo "无法获取本机公共 IP 地址"
end

以上脚本中的 sg-xxxxx 需要替换为实际的安全组 ID。此脚本会按照上述步骤执行操作,以管理安全组规则




Comments