在阿里云ECS上搭建 MySQL 和 Redis 服务时,为了保障系统的安全性,需要从多个层面进行安全设置。以下是关键的安全建议和最佳实践:
一、网络与访问控制
-
使用VPC专有网络
- 将ECS实例部署在VPC中,避免使用经典网络。
- 利用VPC的隔离性增强网络安全。
-
配置安全组(Security Group)
- 最小权限原则:只开放必要的端口。
- MySQL 默认端口:3306
- Redis 默认端口:6379
- 限制源IP访问:
- 不要对
0.0.0.0/0开放数据库端口。 - 只允许特定IP或业务服务器IP访问(如应用服务器)。
- 不要对
- 示例规则:
方向:入方向 协议类型:TCP 端口范围:3306 授权对象:x.x.x.x/32(你的应用服务器IP)
- 最小权限原则:只开放必要的端口。
-
使用内网通信
- 如果应用服务器也在阿里云,将MySQL/Redis部署在内网,并通过私有IP连接,避免公网暴露。
-
禁用公网IP(如非必要)
- ECS实例尽量不分配公网IP,通过跳板机(堡垒机)或NAT网关管理维护。
二、操作系统层安全
-
及时更新系统和软件
- 定期执行
yum update或apt upgrade更新系统补丁。
- 定期执行
-
关闭不必要的服务
- 移除不需要的软件包和服务,减少攻击面。
-
使用非root用户运行服务
- MySQL 和 Redis 应以专用低权限用户运行,避免使用 root。
-
文件权限设置
- 配置文件(如
my.cnf,redis.conf)权限设为600,仅属主可读写。
- 配置文件(如
-
开启防火墙(iptables/firewalld)
- 作为安全组的补充,可在系统层进一步限制访问。
三、MySQL 安全设置
-
修改默认端口(可选)
- 修改默认的3306端口可降低被扫描攻击的风险(但不能替代访问控制)。
-
禁用远程登录(如仅本地使用)
- 在
my.cnf中设置:bind-address = 127.0.0.1 - 若需远程访问,绑定到内网IP而非
0.0.0.0。
- 在
-
删除匿名账户和测试数据库
DROP USER ''@'localhost'; DROP USER ''@'your-hostname'; DROP DATABASE IF EXISTS test; -
强密码策略
- 所有用户设置高强度密码。
- 启用密码复杂度插件(如
validate_password)。
-
最小化用户权限
- 按需分配权限,避免使用
GRANT ALL。
- 按需分配权限,避免使用
-
启用SSL加密(可选)
- 配置MySQL支持SSL连接,防止数据在传输中被窃听。
四、Redis 安全设置
-
设置强密码(requirepass)
- 在
redis.conf中启用密码认证:requirepass your_strong_password - 连接时需使用
AUTH password。
- 在
-
禁止外部访问(bind)
- 如仅本地使用:
bind 127.0.0.1 - 若需远程访问,绑定到内网IP。
- 如仅本地使用:
-
禁用危险命令(rename-command)
- 重命名或禁用高危命令如
FLUSHALL,CONFIG,SHUTDOWN:rename-command FLUSHALL "" rename-command CONFIG "random-string-config"
- 重命名或禁用高危命令如
-
保护模式(protected-mode)
- 确保
protected-mode yes(默认开启),防止未授权访问。
- 确保
-
禁用AOF或RDB中的敏感信息
- 避免在持久化文件中存储明文密码等敏感数据。
-
升级到较新版本
- 老版本Redis存在安全漏洞(如未授权访问、Lua沙箱逃逸),建议使用 Redis 6+ 并启用 ACL。
-
使用ACL(Redis 6+)
- 启用基于角色的访问控制,精细化权限管理。
五、日志与监控
-
开启审计日志
- MySQL:启用 general log 或 audit plugin(如 Percona Audit Log)。
- Redis:记录客户端命令日志(谨慎开启,影响性能)。
-
使用云监控和告警
- 配置阿里云云监控,对CPU、内存、网络异常连接进行告警。
-
定期检查日志
- 分析登录失败、异常访问等日志行为。
六、备份与灾备
-
定期备份数据
- 使用
mysqldump、xtrabackup或阿里云快照功能。 - Redis 使用 RDB/AOF 并定期备份到OSS。
- 使用
-
测试恢复流程
- 确保备份可正常恢复。
七、其他建议
- 使用SSH密钥登录ECS,禁用密码登录。
- 启用阿里云安骑士(云安全中心),检测入侵、漏洞和基线风险。
- 定期进行安全扫描,如端口扫描、弱口令检测。
- 考虑使用阿里云RDS和云数据库Redis版:更安全、自动备份、高可用,适合生产环境。
总结
| 安全维度 | 关键措施 |
|---|---|
| 网络访问控制 | 安全组 + VPC + 内网通信 |
| 身份认证 | 强密码 + 最小权限用户 |
| 服务配置 | 禁用远程/危险命令 + 绑定内网 |
| 日志监控 | 开启日志 + 云监控告警 |
| 数据安全 | 加密传输 + 定期备份 |
⚠️ 重要提醒:不要将数据库直接暴露在公网!若必须对外提供服务,请使用X_X、专线或通过应用层X_X(如API网关)间接访问。
通过以上设置,可以显著提升你在阿里云ECS上自建MySQL和Redis服务的安全性。如有条件,建议优先使用阿里云托管数据库服务(RDS for MySQL / 云数据库Redis版),安全性更高且运维更简便。
云服务器