在阿里云 ECS 上自建 MySQL 和 Redis 服务时,安全配置至关重要。由于数据库是核心数据资产,一旦泄露或遭受攻击可能导致严重损失。以下是从网络、系统、应用层到运维监控的全方位安全建议:
一、网络层安全(最关键)
-
安全组(Security Group)最小化开放
- 禁止对公网开放数据库端口(MySQL: 3306, Redis: 6379)。
- 仅允许内网 IP(如同一 VPC 内的其他 ECS、SLB、RDS 等)访问数据库端口。
- 若必须通过公网管理(不推荐),应:
- 使用 SSH 跳板机 + 端口转发;
- 限制源 IP 为固定办公 IP;
- 启用 SSH 密钥登录并禁用密码;
- 设置超时自动断开。
-
VPC 与子网隔离
- 将数据库部署在私有子网(无公网 IP),仅通过 NAT 网关或 Bastion Host 访问。
- 使用不同安全组区分 Web 层、App 层、DB 层,实现纵深防御。
-
关闭不必要的协议/端口
- 检查
iptables或firewalld,确保只放行必要流量(如 3306、6379 仅限指定内网 IP)。
- 检查
二、操作系统层加固
-
账户与权限控制
- 禁用 root 远程登录(
PermitRootLogin noin/etc/ssh/sshd_config)。 - 创建专用低权限用户用于日常维护,配合
sudo提权。 - 定期审计用户列表:
cat /etc/passwd | grep -v nologin
- 禁用 root 远程登录(
-
系统更新与补丁
- 开启自动安全更新(
unattended-upgradesfor Debian/Ubuntu;yum-cronfor CentOS)。 - 定期执行
apt update && apt upgrade或yum update。
- 开启自动安全更新(
-
文件权限与 SELinux/AppArmor
- 数据库目录权限设为
750或更严格(如chmod 700 /var/lib/mysql)。 - 启用并配置 SELinux(CentOS/RHEL)或 AppArmor(Ubuntu)强制访问控制。
- 数据库目录权限设为
-
日志审计
- 开启系统日志(
rsyslog)并集中收集到云盾或第三方 SIEM 平台。 - 记录所有 sudo 操作、SSH 登录尝试。
- 开启系统日志(
三、数据库应用层安全
✅ MySQL 安全配置
# /etc/my.cnf 或 my.cnf.d/server.cnf
[mysqld]
bind-address = 127.0.0.1 # 仅本地监听(配合安全组控制网络访问)
skip-name-resolve # 禁用 DNS 解析防慢速攻击
local_infile = 0 # 禁用 LOAD DATA LOCAL INFILE
secure_file_priv = /data/mysql # 限定文件导入导出路径
sql_mode = STRICT_TRANS_TABLES # 严格模式防注入
max_connections = 100 # 限制连接数防 DDoS
-
账号策略:
- 删除默认空密码、anonymous 用户。
- 每个应用使用独立账号,遵循最小权限原则(如只 grant SELECT/INSERT on app_db.*)。
- 启用密码复杂度策略(
validate_password_policy=MEDIUM)。 - 定期轮换密码(可结合 KMS 或 Vault 管理)。
-
加密与认证:
- 启用 TLS/SSL 客户端连接(
require_secure_transport=ON+ 证书配置)。 - 使用
caching_sha2_password认证插件(比 mysql_native_password 更安全)。
- 启用 TLS/SSL 客户端连接(
✅ Redis 安全配置
# /etc/redis.conf
bind 127.0.0.1 # 仅本地监听
protected-mode yes # 启用保护模式(关键!)
requirepass <强密码> # 设置复杂密码(≥16 位,含大小写+数字+符号)
rename-command FLUSHALL "" # 禁用危险命令
rename-command CONFIG "" # 禁止动态修改配置
rename-command DEBUG "" # 禁用调试命令
timeout 300 # 空闲连接超时
tcp-keepalive 60 # 保持连接活跃检测
- 额外建议:
- 禁用
AUTH明文传输(启用 TLS 需 Redis 6+ 支持)。 - 使用 ACL(Access Control List)精细控制命令权限(Redis 6+)。
- 定期备份并验证恢复流程(
BGSAVE+ RDB/AOF 双保险)。
- 禁用
四、运维与监控安全
-
备份与容灾
- 开启阿里云快照备份(ECS 自动快照)+ 数据库逻辑备份(mysqldump / redis-cli BGSAVE)。
- 备份文件加密存储至 OSS(启用 SSE-KMS),并设置生命周期规则。
- 定期演练灾难恢复(DRP)。
-
监控与告警
- 使用 云监控(CloudMonitor) 配置:
- CPU/内存/磁盘使用率阈值告警;
- 异常登录次数、慢查询、连接数突增;
- 安全组规则变更告警。
- 集成 云安全中心(态势感知) 实时检测漏洞、入侵行为。
- 使用 云监控(CloudMonitor) 配置:
-
密钥管理
- 避免硬编码密码在代码中!使用:
- 阿里云 KMS(Key Management Service)加密敏感配置;
- RAM 角色 + STS 临时凭证;
- 环境变量 + 启动脚本注入(非 commit 到 Git)。
- 避免硬编码密码在代码中!使用:
-
合规与审计
- 开启数据库审计日志(MySQL 通用日志/慢日志 + Redis slowlog),接入云审计服务(ActionTrail)。
- 定期生成安全报告,满足等保 2.0 要求(如需)。
⚠️ 重要提醒:优先评估是否可用云原生服务
| 服务 | 自建风险 | 推荐替代方案 |
|---|---|---|
| MySQL | 高可用性难保障、备份恢复复杂 | Aurora / PolarDB |
| Redis | 集群搭建复杂、故障切换风险高 | Tair / ApsaraDB for Redis |
✅ 对于生产环境,强烈建议使用阿里云托管的 PaaS 服务(PolarDB、Tair),它们已内置高可用、自动备份、安全加固、DDoS 防护等企业级能力,大幅降低运维负担与安全盲区。
如您有具体场景(如:微服务架构、混合云、等保三级合规),我可进一步提供定制化加固方案。
云知识