alisg/README.md
2025-04-13 10:09:49 +08:00

129 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 阿里云安全组动态IP更新工具CentOS 7.9 适用)
![CentOS 7.9](https://img.shields.io/badge/CentOS-7.9-blue)
![阿里云CLI](https://img.shields.io/badge/Aliyun-CLI-orange)
用于动态更新阿里云安全组规则的自动化脚本,特别适配 CentOS 7.9 系统环境。
## 核心功能
- ✅ 自动检测公网IP变动
- ✅ 批量更新多安全组规则
- ✅ 智能迁移旧IP规则到新IP
- ✅ 严格验证协议和端口规则
- ✅ 自动记录IP变更历史
## 系统要求
- CentOS 7.9 操作系统
- 已配置阿里云API访问权限
- 基础工具:`curl``jq`
## 安装指南
### 1. 安装基础依赖
```bash
sudo yum install -y curl jq
```
### 2. 安装阿里云CLI二进制方式
[下载及教程地址](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变更
旧IP142.171.168.162
新IP115.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 - 自由使用和修改