0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

[AWS] Security Group と WAF に設定されている IP アドレスを削除するスクリプト

Last updated at Posted at 2024-07-10

はじめに

↓ の機能拡張版で、Security Group と WAF に設定されている IP を削除するスクリプトを修正しました。

仕様

AWS の SG と WAF から 指定された IP アドレスを削除するためのスクリプトです。IP アドレスにCIDR 表記("/" が含まれているかどうか)によって条件分岐し、それに応じて適切に削除します。(デフォルトで /32 を追加します)

コマンド

上記仕様に加えて以下のオプションがあります。

  • SG を二つ用意
    • SG_ID1 ではポート 3389 のもの、SG_ID2 ではポート 443 のものを削除
#!/bin/bash
set -euo pipefail

# 変数格納
IP_ARRAY=("5.5.5.5/32" "6.6.6.6/32" "7.7.7.7" "8.8.8.8/32" "9.9.9.9")
DESCRIPTION=("go" "roku" "nana" "hati" "kyu")
SG_ID1="sg-XXXXXXXXXXXXXXXXX"
SG_ID2="sg-YYYYYYYYYYYYYYYYY"
WAF_ID="XXX"
WAF_NAME="testip"

for (( i=0; i < ${#IP_ARRAY[*]}; i++ )); do
    aws ec2 revoke-security-group-ingress \
        --group-id $SG_ID1 \
        --protocol tcp \
        --port 3389 \
        --cidr ${IP_ARRAY[$i]}

    aws ec2 revoke-security-group-ingress \
        --group-id $SG_ID2 \
        --protocol tcp \
        --port 443 \
        --cidr ${IP_ARRAY[$i]}

    # 現在登録されているIPを取得
    json=$(aws wafv2 get-ip-set \
        --name $WAF_NAME \
        --scope REGIONAL \
        --region=ap-northeast-1 \
        --id $WAF_ID)

    IPs=$(echo $json | jq -r '.IPSet.Addresses[]')
    LOCK_TOKEN=$(echo $json | jq -r '.LockToken')

    # リストから指定のIPを省き、それを登録するようにする
    NEW_IPs=$(echo ${IPs//${IP_ARRAY[$i]}/})

    # IP更新
    aws wafv2 update-ip-set \
        --name $WAF_NAME \
        --scope REGIONAL \
        --id $WAF_ID \
        --addresses $NEW_IPs \
        --lock-token $LOCK_TOKEN

done

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0