131 lines
3.1 KiB
Markdown
131 lines
3.1 KiB
Markdown
```markdown
|
||
# 阿里云安全组动态IP更新工具(CentOS 7.9 适用)
|
||
|
||

|
||

|
||
|
||
用于动态更新阿里云安全组规则的自动化脚本,特别适配 CentOS 7.9 系统环境。
|
||
|
||
## 核心功能
|
||
|
||
- ✅ 自动检测公网IP变动
|
||
- ✅ 批量更新多安全组规则
|
||
- ✅ 智能迁移旧IP规则到新IP
|
||
- ✅ 严格验证协议和端口规则
|
||
- ✅ 自动记录IP变更历史
|
||
|
||
## 系统要求
|
||
|
||
- CentOS 7.9 操作系统
|
||
- 已配置阿里云API访问权限
|
||
- 基础工具:`curl`、`jq`
|
||
|
||
## 安装指南
|
||
|
||
### 1. 安装基础依赖
|
||
```bash
|
||
sudo yum install -y curl jq
|
||
```
|
||
|
||
### 2. 安装阿里云CLI(二进制方式)
|
||

|
||
```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 - 自由使用和修改
|
||
```
|