# 阿里云安全组动态IP更新工具 ![阿里云CLI](https://img.shields.io/badge/Aliyun-CLI-orange) 用于动态更新阿里云安全组规则的自动化脚本。 ## 核心功能 - ✅ 自动检测公网IP变动 - ✅ 批量更新多安全组规则 - ✅ 智能迁移旧IP规则到新IP - ✅ 严格验证协议和端口规则 - ✅ 自动记录IP变更历史 ## 系统要求 - 已配置阿里云API访问权限 - 基础工具:`curl`、`jq` ## 安装指南 ### 1. 安装基础依赖 ```bash sudo yum install -y curl jq ``` ### 2. 安装阿里云CLI(二进制方式) [aliyun命令行工具下载及详细教程地址](https://help.aliyun.com/zh/cli/install-cli-on-linux?spm=a2c4g.11186623.help-menu-29991.d_2_2.3745606fJSX2wt) ```bash # 解压安装包 tar -zxvf aliyun-cli-linux-latest-amd64.tgz -C /usr/local/bin/ # 设置执行权限 chmod +x /usr/local/bin/aliyun # 验证安装 aliyun --version ``` ### 3. 配置阿里云CLI ```bash aliyun configure ``` 按照提示输入: - AccessKey ID - AccessKey Secret - 默认地域ID(如 `cn-beijing`) - 输出格式选择 `json` ## 脚本配置 编辑 `alisg.sh` 修改以下参数: ```bash # 必填配置 REGION="cn-beijing" # 您的阿里云地域 SECURITY_GROUP_IDS=("sg-2zebj4i9uydml05xwejg") # 安全组ID数组 LOG_FILE="/var/log/ip-update.log" # 推荐使用绝对路径 # 可选调试参数 # _LAST_IP="142.171.168.162" # 手动指定旧IP # _CURRENT_IP="115.171.170.151" # 手动指定新IP ``` ## 使用方法 ### 首次运行(测试模式) ```bash chmod +x alisg.sh ./alisg.sh ``` ### 生产环境建议 ```bash # 1. 创建专用目录 sudo mkdir -p /opt/aliyun_sg sudo cp alisg.sh /opt/aliyun_sg/ sudo chown root:root /opt/aliyun_sg/alisg.sh # 2. 设置定时任务(每小时检查) echo "0 * * * * root /opt/aliyun_sg/alisg.sh >> /var/log/ip-update.log 2>&1" | sudo tee /etc/cron.d/aliyun_sg_update ``` ## 日志监控 建议定期检查日志文件: ```bash tail -f /var/log/ip-update.log ``` 典型成功日志示例: ``` [2023-11-15 14:00:01] 检测到IP变更 旧IP:142.171.168.162 新IP:115.171.170.151 安全组 sg-2zebj4i9uydml05xwejg 处理完成: - 已移除 TCP/22/22 规则 - 已添加 TCP/22/22 规则(新IP) IP日志已更新 ``` ## 安全建议 1. 限制日志文件权限: ```bash sudo chmod 600 /var/log/ip-update.log ``` 2. 使用最小权限的AccessKey 3. 定期备份安全组规则: ```bash aliyun ecs DescribeSecurityGroupAttribute --RegionId $REGION --SecurityGroupId $SG_ID > sg_backup.json ``` ## 故障排除 | 错误现象 | 解决方案 | |---------|----------| | `aliyun: command not found` | 检查PATH或使用完整路径 `/usr/local/bin/aliyun` | | 权限拒绝错误 | 使用 `sudo` 或检查AccessKey权限 | | JSON解析错误 | 安装正确版本的 `jq` 工具 | ## 许可证 MIT License - 自由使用和修改