快速结论
云服务器安全的3个阶段:
- 基础防护(必做):安全组配置、SSH加固、密码管理 - 防止99%的通用攻击
- 应用加固(推荐):WAF、DDoS防护、日志监控 - 防止针对性攻击
- 高级防御(可选):入侵检测、容器隔离、零信任架构 - 企业级需求(容器安全与编排基础见容器技术指南)
本指南重点讲前两个阶段,帮你快速构建安全的生产环境。
第一层:网络层安全(防火墙)
安全组配置(必做)
安全组相当于云服务器的防火墙,默认拒绝所有入站流量,只允许你显式开放的端口。
最小化开放原则:只开放业务必需的端口。
推荐配置
入站规则:
┌─────────────┬──────────┬──────────────────┬──────────┐
│ 协议 │ 端口 │ 来源 │ 描述 │
├─────────────┼──────────┼──────────────────┼──────────┤
│ HTTP │ 80 │ 0.0.0.0/0 │ 公网访问 │
│ HTTPS │ 443 │ 0.0.0.0/0 │ 公网访问 │
│ SSH │ 22 │ 你的办公IP/VPN │ 管理员 │
│ (可选)MySQL │ 3306 │ 特定IP范围 │ 应用服务 │
└─────────────┴──────────┴──────────────────┴──────────┘
出站规则:
允许所有出站(服务器需要下载依赖、发送数据等)风险案例:
❌ 错误的SSH配置:
SSH 22 端口允许 0.0.0.0/0(全网访问)
结果:每天收到数千次暴力破解尝试
✅ 正确的SSH配置:
SSH 22 端口仅允许 203.0.113.0/24(你的办公网段)
结果:黑客根本连不上密钥登录、authorized_keys 权限与关闭密码登录的具体命令见Linux 运维命令速查。
配置步骤(以阿里云为例)
- 进入ECS实例详情
- 点击"安全组"
- 编入站规则
- 只保留必要的端口(HTTP/HTTPS/SSH)
- 删除其他不必要的规则
修改SSH默认端口(可选但推荐)
SSH默认端口22是攻击的重点目标。修改端口能减少噪音干扰。
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config
# 找到 Port 22 这一行,改为
Port 2222 # 改为不常见的端口号
# 重启SSH服务
sudo systemctl restart sshd
# 注意:还需在安全组中开放新端口 2222需要记住新端口号:以后连接时使用
ssh -p 2222 user@server_ip第二层:身份认证安全
SSH密钥认证(必做)
相比密码认证,密钥认证安全性高1000倍,且无法暴力破解。
生成和配置密钥对
在本地机器上生成(不在服务器上):
# 生成密钥对
ssh-keygen -t rsa -b 4096 -f ~/.ssh/my-server-key
# 输出两个文件:
# ~/.ssh/my-server-key (私钥,绝对保密)
# ~/.ssh/my-server-key.pub (公钥,放在服务器上)上传公钥到服务器:
# 方法1:使用ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/my-server-key.pub user@server_ip
# 方法2:手动上传
scp ~/.ssh/my-server-key.pub user@server_ip:~/
ssh user@server_ip
mkdir -p ~/.ssh
cat ~/my-server-key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys禁用密码认证(仅在确认密钥认证成功后):
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config
# 修改以下行
PasswordAuthentication no
PubkeyAuthentication yes
# 重启SSH
sudo systemctl restart sshd风险:如果禁用密码认证后丢失私钥,将无法连接服务器。建议先测试成功再禁用。
禁用root登录(推荐)
root账户是黑客的优先目标,禁用root直接登录能大幅降低风险。
# 编辑SSH配置
sudo nano /etc/ssh/sshd_config
# 修改为
PermitRootLogin no
# 重启SSH
sudo systemctl restart sshd操作方式:
# 登录普通用户
ssh user@server_ip
# 需要root权限时使用sudo
sudo systemctl restart nginx
# 或切换到root
sudo su -设置强密码策略
即使禁用密码认证,某些场景仍需要密码(如登录Linux用户账户)。
# 安装password-quality工具
sudo apt-get install libpam-pwquality
# 编辑密码策略文件
sudo nano /etc/security/pwquality.conf
# 添加以下规则
minlen = 14 # 最小长度14字符
dcredit = -1 # 至少包含1个数字
ucredit = -1 # 至少包含1个大写字母
lcredit = -1 # 至少包含1个小写字母
ocredit = -1 # 至少包含1个特殊字符第三层:应用层安全
定期更新系统和软件(必做)
大多数安全漏洞已有补丁。定期更新能关闭99%的已知漏洞。
# Ubuntu/Debian系统
sudo apt-get update
sudo apt-get upgrade
# CentOS/RHEL系统
sudo yum update
# 推荐设置自动更新
sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades建议:每周更新一次,或启用自动更新。
Web应用防火墙(WAF)
WAF保护Web应用免受SQL注入、XSS、DDoS等攻击。
使用云服务商的WAF(推荐)
阿里云WAF:
价格:199元/月起
功能:防SQL注入、防XSS、防DDoS、IP黑名单等腾讯云WAF:
价格:99元/月起
功能:与阿里云相近配置步骤:
- 在云服务商的WAF控制台添加域名
- 修改域名的DNS指向WAF的CNAME
- WAF自动检测并阻止恶意请求
开源WAF(成本低)
如果不想付费,可在服务器上部署开源WAF。
# 安装ModSecurity(Nginx下的WAF)
sudo apt-get install libnginx-mod-http-modsecurity
# 启用模块
sudo nano /etc/nginx/nginx.conf
# 添加
modsecurity on;
# 重启Nginx
sudo systemctl restart nginx防DDoS攻击
DDoS是网络层攻击,防护需要在网络边界。
小规模防护(阿里云/腾讯云包含):
- 基础防护:5Gbps流量清洗
- 检测和自动防御
大规模防护(需额外购买):
- 按防护容量付费(10Gbps起,约1000元/月)
- 专业DDoS防护团队
应对DDoS的策略:
1. 基础防护充足:大多数网站根本不会被DDoS
2. 遭遇DDoS时:
- 启用云厂商的DDoS防护
- 切换到更大容量的DDoS防护方案
- 增加带宽临时缓解
3. 长期对策:
- 使用CDN(如Cloudflare)
- 配置负载均衡器第四层:监控与日志
启用系统日志监控
日志帮助你检测异常活动和调查安全事件。
# 启用审计日志
sudo apt-get install auditd
# 记录所有文件修改
sudo auditctl -w /etc -p wa -k system-changes
# 查看日志
sudo ausearch -k system-changes
# 查看登录日志
sudo grep "sshd" /var/log/auth.log | tail -20
# 查看执行的命令
sudo journalctl -u sshd配置云服务商的安全监控
阿里云和腾讯云提供免费的基础安全监控。
阿里云云安全中心:
功能:
- 检测恶意登录(来自异常地区的登录尝试)
- 发现web漏洞
- 检测异常账户活动
- 提供修复建议
启用方式:在控制台启用即可,免费版功能够用定期审计和日志分析
# 检查是否有未授权的用户
cat /etc/passwd
# 检查是否有异常的定时任务
crontab -l
# 检查监听的端口(只应有HTTP/HTTPS/SSH)
sudo netstat -tulpn
sudo ss -tulpn # 更现代的命令
# 检查最近登录的用户
last | head -20
# 检查失败的登录尝试
sudo grep "Failed password" /var/log/auth.log | wc -l第五层:数据备份与恢复
安全的关键部分:防护再好也可能被突破,备份能让你快速恢复。
数据备份策略
3-2-1备份原则:
3份副本(原始 + 2份备份)
2种不同的存储介质(云 + 本地)
1份副本在异地(防止数据中心故障)推荐方案
定期快照(每天一次):
# 阿里云快照自动执行
1. 进入ECS实例
2. 选择"快照"
3. 创建自动快照策略(每天凌晨2点)
4. 保留7天快照数据库备份:
# MySQL定期备份脚本
#!/bin/bash
mysql -u root -p'password' --all-databases > /backup/mysql-$(date +%Y%m%d).sql
# 上传到云存储(OSS/OBS)文件备份:
# 使用rsync定期同步到云存储
rsync -avz /var/www/html/ \
username@remote-server:/backups/
# 或上传到对象存储
aws s3 sync /var/www/html/ s3://my-backup/测试恢复过程
重要:定期测试备份是否可恢复(很多人备份了但恢复时发现失败)。
# 每月进行一次恢复测试
1. 创建临时测试实例
2. 从最新备份恢复数据
3. 验证数据完整性和应用可用性
4. 记录恢复所需时间安全检查清单
部署新服务器时使用此清单:
- [ ] 安全组仅开放必需端口(80、443、SSH)
- [ ] SSH改用非22端口
- [ ] 禁用SSH密码认证,仅允许密钥
- [ ] 禁用root直接登录
- [ ] 安装系统补丁(apt-get update && upgrade)
- [ ] 禁用不必要的服务
- [ ] 安装并启用防火墙(ufw或firewalld)
- [ ] 配置WAF(云服务商或ModSecurity)
- [ ] 启用日志监控和定期审计
- [ ] 配置自动快照(每天)
- [ ] 测试备份恢复过程
- [ ] 配置告警(异常登录、高流量等)
常见问题
Q: 被暴力破解SSH怎么办?
A: 采取措施:
- 立即:改SSH端口或禁用密码登录
- 查看日志:
grep Failed /var/log/auth.log - 加入防护:使用fail2ban工具
sudo apt-get install fail2ban
# 配置:3次失败后锁定IP 10分钟Q: 数据被黑客删除了怎么办?
A: 这是最坏的情况,但有恢复方法:
- 停止所有写入:防止新数据覆盖旧数据
- 恢复快照:在阿里云/腾讯云控制台选择最新的快照
- 验证数据:确保恢复的数据完整且未被污染
这就是定期备份的重要性。
Q: 怎样判断是否被黑客入侵?
A: 观察以下迹象:
- CPU/内存异常占用
- 网络流量陡增
- 日志中有异常的登录IP
- 出现不认识的用户账户
- 文件被修改(通过
stat命令检查)
Q: 云服务器安全需要这么复杂吗?
A: 不需要。按优先级:
- 必做:安全组 + SSH密钥 + 定期更新
- 强烈推荐:定期备份 + 日志监控
- 可选:WAF + DDoS防护(根据业务重要性)
99%的网站只需要做前两项就很安全了。
WeHosts推荐方案
个人网站:安全组(仅开80/443) + SSH密钥 + 自动快照,完全免费且充分安全。
中小企业:基础安全 + 云厂商免费防护中心 + WAF(199元/月),总成本约200-300元/月。
关键业务:加强版防护 + DDoS防护(1000元/月以上) + 专业安全咨询,需要根据业务规模定制。
更新时间:2026年3月24日。云安全威胁持续演变,建议定期关注云服务商的安全公告。
