阿里云服务器运维全记录(Day 2 安全加固与性能优化)
一、文档定位与目标
本文档为《阿里云服务器搭建全记录》的进阶篇,专注于Day 2 运维场景。针对 1核 0.5GB 内存 的极限环境,提供一套“轻量级、高生存率”的安全加固与性能优化方案。
适用人群:已完成 Hexo 博客基础部署,希望提升服务器安全性、访问速度及建立容灾体系的初学者。
核心价值:
- 安全加固:从网络层到应用层构建四道防线,抵御自动化脚本攻击。
- 性能压榨:在不升级硬件的前提下,通过 Gzip 和缓存策略大幅提升加载速度。
- 容灾自动化:建立“异地双备份”与“一键发布”流程,确保数据万无一失。
二、安全加固全景图 (Security Panorama)
在执行本指南前,请对照下表确认当前状态。
| 检查项 | 加固前 (Risky) | 加固后 (Hardened) | 作用 |
|---|---|---|---|
| 登录方式 | Root 账户 + 密码登录 | 普通用户 + 仅密钥登录 | 防止暴力破解密码 |
| 防火墙 | 阿里云安全组 (端口全开) | UFW 防火墙 (仅开 22/80/443) | 最小化攻击面 |
| 主动防御 | 无 | Fail2Ban (自动封禁恶意 IP) | 阻断 SSH 爆破脚本 |
| Web 伪装 | Nginx 显示版本号 (如 1.18.0) | 隐藏版本号 | 减少针对特定版本的漏洞攻击 |
| SSL 证书 | 手动申请,90天后过期 | Certbot 自动续期 | 防止证书过期导致网站不可用 |
三、分阶段加固操作手册
阶段 1:账号与 SSH 访问控制
阶段目标:切断 Root 密码登录入口,仅允许持有密钥的用户进入。
1.1 创建普通 Sudo 用户(可选但推荐)
说明:避免直接使用 root 操作是 Linux 安全的最佳实践。
1 | # 1. 创建用户 (将 <user> 替换为你喜欢的用户名) |
1.2 强制 SSH 密钥认证
警告:修改配置前,请务必确保你已经可以通过 SSH 密钥成功登录服务器,否则会把自己锁在门外。
1 | # 编辑 SSH 配置文件 |
- 验证步骤:保持当前终端不关闭,新开一个终端尝试登录。如果不需要输入密码直接进入,则配置成功。
阶段 2:构建系统防火墙 (UFW)
阶段目标:启用 Ubuntu 自带的 UFW 防火墙,只允许必要的端口通讯。
高危操作提示:必须先执行 allow ssh,否则启用防火墙瞬间会断开连接。
1 | # 1. 检查状态 (默认为 inactive) |
- 验证步骤:执行
sudo ufw status,应看到Status: active且包含SSH和Nginx Full的规则。
阶段 3:Nginx 隐身与 SSL 续期
阶段目标:隐藏 Nginx 版本号,并确保 HTTPS 证书能自动续命。
3.1 隐藏 Nginx 版本号
1 | # 编辑 Nginx 主配置 |
- 验证步骤:在本地终端执行
curl -I http://<服务器IP>。响应头Server字段应仅显示nginx,无数字版本号。
3.2 验证 SSL 自动续期
Let's Encrypt 证书有效期仅 90 天。Certbot 通常会自动配置定时任务。
1 | # 1. 检查定时器是否存活 |
- 预期输出:若显示
Congratulations, all simulated renewals succeeded,则自动化机制正常。
阶段 4:部署 Fail2Ban (反暴力破解)
阶段目标:安装“全自动保安”,监控日志并封禁多次尝试登录失败的 IP。
4.1 安装与配置
1 | # 1. 安装 |
4.2 关键参数修改指南
在 jail.local 文件中找到对应位置进行修改:
1 | [DEFAULT] |
4.3 启动与状态检查
1 | sudo systemctl restart fail2ban |
四、性能优化实战 (0.5GB 极限压榨)
对于小内存服务器,优化的核心是 “用计算换带宽” 和 “用缓存换计算”。
4.1 Nginx Gzip 压缩 (服务端)
开启 Gzip 可将 HTML/CSS/JS 体积减少 60%-80%。
1 | # 编辑 /etc/nginx/nginx.conf,在 http 块中加入: |
4.2 静态资源缓存 (浏览器端)
告诉浏览器缓存图片和样式表,减少服务器请求。
1 | # 编辑站点配置 (如 /etc/nginx/sites-available/default) |
操作后必做:sudo nginx -t (检查语法) -> sudo systemctl reload nginx。
4.3 本地构建优化 (Hexo Neat)
背景:hexo-all-minifier 依赖 C++ 编译,在 Windows 上极易报错。推荐使用纯 JS 实现的 hexo-neat。
安装插件 (在本地博客根目录):
npm install hexo-neat --save配置 _config.yml (添加至文件末尾):
1 | neat_enable: true |
五、容灾与自动化运维
5.1 异地双重备份 (Git Private Repo)
避免因电脑损坏或服务器宕机导致源码丢失。
GitHub 操作:创建一个新的 Private (私有) 仓库。
本地关联:
git remote add origin_backup git@github.com:<用户名>/<仓库名>.git日常备份:每次发布后执行
git push origin_backup main。
5.2 一键发布脚本 (npm run ship)
将清理、生成、部署、备份合并为一个命令。编辑本地 package.json 的 scripts 字段:
1 | "scripts": { |
- 使用方法:终端输入
npm run ship,即可全自动完成博客发布与源码备份。
5.3 外部监控 (UptimeRobot)
由于服务器内存紧张,不建议安装复杂的监控软件。推荐使用 UptimeRobot 免费版:
- 配置方式:添加
HTTPS Monitor,指向你的域名。 - 作用:每 5 分钟检查一次,网站宕机时发送邮件报警。
六、命令速查表
| 功能 | 命令 | 说明 |
|---|---|---|
| 系统监控 | htop | 显存/CPU 可视化监控 (推荐) |
| 防火墙 | sudo ufw status | 查看防火墙规则 |
| 封禁状态 | sudo fail2ban-client status sshd | 查看被 ban 的 IP 数量 |
| Nginx 测试 | sudo nginx -t | 修改配置后必须执行 |
| Nginx 重载 | sudo systemctl reload nginx | 平滑重启,不中断连接 |
| 证书测试 | sudo certbot renew --dry-run | 模拟证书续期 |
八、配置示例库
1. 推荐的 Fail2Ban 配置 (/etc/fail2ban/jail.local)
1 | [DEFAULT] |
2. 包含 Gzip 的 Nginx 主配置片段 (/etc/nginx/nginx.conf)
1 | http { |