- CPU/RAM/磁盘:按业务估算,建议至少 2 vCPU + 4GB RAM 起步,磁盘选择 SSD,生产建议 40GB 以上或可扩展快照。
- 带宽与延迟:选择台北机房靠近主要用户的节点,确认带宽上行与流量计费(包年包流量或按量)。
- 操作系统:优先选择 LTS 版本(Ubuntu 22.04 / Debian 12)。下单后通过控制面板保留救援系统以便紧急恢复。
- 初始登录:收到 IP 与 root 密码后,使用 SSH 登录并立即执行:sudo apt update && sudo apt upgrade -y(Debian/Ubuntu),记录主机名并修改 /etc/hostname。
- 创建管理员用户:adduser deploy && usermod -aG sudo deploy。
- 禁用密码 root 登录:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no、PasswordAuthentication no(前提:已配置密钥),然后 sudo systemctl restart sshd。
- 上传公钥:在本地生成密钥 ssh-keygen -t ed25519,然后将公钥追加到 /home/deploy/.ssh/authorized_keys,chown deploy:deploy 与 chmod 600/700。
- 更换 SSH 端口(可选):在 sshd_config 中更改 Port 2222,重启 ssh 并在防火墙开放新端口,再关闭 22 端口。
- 安装与启用 ufw:sudo apt install ufw -y;允许必要端口:sudo ufw allow 2222/tcp(SSH)sudo ufw allow 80/tcp sudo ufw allow 443/tcp;随后 sudo ufw enable。
- 安装 fail2ban:sudo apt install fail2ban -y;创建本地配置 /etc/fail2ban/jail.local,示例:
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 3600
- 重启服务:sudo systemctl enable --now fail2ban。
- 安装 unattended-upgrades:sudo apt install unattended-upgrades apt-listchanges -y。
- 启用自动安全更新:sudo dpkg-reconfigure --priority=low unattended-upgrades,或编辑 /etc/apt/apt.conf.d/50unattended-upgrades 配置要自动升级的源。
- 定期人工巡检:每周运行 sudo apt update && sudo apt upgrade -y,并检查 /var/log/unattended-upgrades/。
- 本地日志轮转:确认 /etc/logrotate.d/ 设置,测试 sudo logrotate -d /etc/logrotate.conf。
- 集中式日志:建议使用 rsyslog+ELK 或 Graylog,快速方案可用 rsyslog 远程推送:编辑 /etc/rsyslog.conf,添加 *.* @@logserver:514,然后重启 rsyslog。
- 保留策略:关键日志(auth, nginx, app)至少保留 30 天并压缩,以便溯源。
- 安装 Node Exporter:下载合适版本,tar -xvf node_exporter*.tar.gz && sudo mv node_exporter*/node_exporter /usr/local/bin/;创建 systemd 单元文件 /etc/systemd/system/node_exporter.service,然后 sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter。
- 部署 Prometheus:在监控服务器(可选不在同一 VPS)安装 Prometheus,编辑 prometheus.yml 添加 targets: ['your_vps_ip:9100']。
- Grafana 可视化:sudo apt install -y grafana 或使用官方仓库,登陆后导入 dashboard,设置 Alertmanager 与邮件/Slack 通知。
- 简单告警规则:例如 cpu 超过 85% 持续 5 分钟触发,memory 剩余低于 10% 等。
- 对于自建服务使用 systemd 单元:编写 /etc/systemd/system/yourapp.service,配置 Restart=on-failure,LimitNOFILE 等。
- 监控进程自动重启:systemctl enable --now yourapp;结合 Prometheus node_exporter 将服务实例纳入监控并配置告警。
- 使用 monit 或 supervisor 管理脚本型任务,配置定期健康检查并发送邮件。
- 3-2-1 原则:保留至少 3 份备份,2 种介质(磁盘与云),1 份异地。
- 文件/数据库备份:数据库使用 mysqldump 或 mariabackup(逻辑/物理备份);示例 crontab:0 2 * * * /usr/bin/mysqldump -u root -p'密码' --all-databases | gzip > /backup/db_$(date +\%F).sql.gz。
- 增量与去重:推荐使用 Borg 或 restic 做加密去重增量备份,示例:restic init --repo sftp:user@backup.example:/repo;然后设置定期备份脚本并上传到远端。
- 快照恢复:如果 VPS 提供快照功能,建议在重大变更前做快照并记录标签。
- 定期恢复演练:每月至少一次在测试环境恢复数据库与文件,确认备份可用。
- 校验脚本:在备份后运行 restic check 或验证备份哈希,示例:restic -r /backup/repo check。
- 备份监控:将备份任务状态纳入监控,失败时通过邮件/Slack 报警。
- 最小权限原则:应用只使用最少权限的系统用户运行,避免 sudo。
- 容器化:建议将应用容器化(Docker/Podman),使用镜像扫描(Clair/Trivy)并限制容器网络/权限(--read-only、cap-drop)。
- 配置管理:将配置与密钥通过 Vault 或环境变量管理,避免将敏感信息写入代码库。
- 定期依赖扫描:前端/后端使用依赖扫描工具(npm audit, go vet, Snyk)。
- 系统层扫描:使用 Lynis 或 OpenSCAP 做安全审计,示例 sudo apt install lynis && sudo lynis audit system。
- 制定补丁窗口:对重要补丁设定更快速的审核与部署流程,记录变更日志。
- 安全:SSH 密钥、禁用 root、UFW、fail2ban、unattended-upgrades、定期审计(Lynis)。
- 监控:Node Exporter、Prometheus、Grafana、Alertmanager、常用告警(CPU/内存/磁盘/应用响应)。
- 备份:3-2-1、数据库定期快照、文件增量(restic/borg)、异地备份、备份校验与恢复演练。
- 运维流程:变更前快照、维护窗口、事故演练、日志与备份保留策略、权限管理与审计。
问:为什么要在台湾选择地域就近的 VPS,而不是更便宜的异地机房?
答:地域就近能显著降低延迟、提高用户访问体验并减少跨境网络不稳定因素。对于实时性要求高或本地化服务(如支付、GDPR/本地法规)也更方便合规与数据主权管理。
问:监控系统一定要部署 Prometheus + Grafana 吗?有没有轻量级替代?
答:Prometheus+Grafana 是主流且可扩展的方案,但轻量级可以使用 Netdata(安装简单、实时可视化)或 Zabbix(集成告警与模板)。选择依据是数据保留、告警复杂度与运维能力。
问:发生服务被入侵该如何快速恢复与事后处理?
答:立即隔离受影响实例(关闭网络或快照并停止服务),在备份上恢复干净环境并更新所有凭证;保留受感染主机快照供取证;复查日志确定攻击路径,补丁加固后再上线,并通知相关方与完善流程以防复发。
