1.
环境准备与权限管理
- 首先登录到每台VPS:ssh root@IP 或使用密钥 ssh -i ~/.ssh/id_rsa user@IP。
- 创建普通管理用户并授权:adduser deploy;usermod -aG sudo deploy(Debian/Ubuntu)或 usermod -aG wheel deploy(CentOS)。
- 配置公钥登录:在本地运行 ssh-keygen,复制公钥到服务器 ssh-copy-id deploy@IP 或手动将 id_rsa.pub 内容追加到 /home/deploy/.ssh/authorized_keys,确保权限为700/.ssh 和600/authorized_keys。
2.
SSH加固(实操命令)
- 编辑 /etc/ssh/sshd_config:更改 Port(如 2222)、PermitRootLogin no、PasswordAuthentication no、AllowUsers deploy。
- 重启SSH服务:systemctl restart sshd(CentOS/RedHat)或 systemctl restart ssh(Debian/Ubuntu)。
- 验证新配置:在另一个终端用新端口和密钥登录,确保连接正常后再关闭旧会话。
3.
防火墙与入侵防护
- 推荐使用 ufw(Ubuntu)或 firewalld(CentOS):ufw default deny incoming; ufw allow 2222/tcp; ufw allow http/tcp; ufw allow https/tcp; ufw enable。
- 安装并启用 fail2ban:apt install fail2ban 或 yum install epel-release && yum install fail2ban,配置 /etc/fail2ban/jail.local 监控 ssh、nginx、ftp 等,设置 bantime、maxretry。
- 如需更细颗粒控制,可使用 iptables/nftables 写规则阻断可疑IP并配合 GeoIP 限制(注意合法性)。
4.
系统与软件更新自动化
- 建议启用非破坏性自动安全更新:Ubuntu apt install unattended-upgrades 并配置 /etc/apt/apt.conf.d/50unattended-upgrades。
- 对于 CentOS 使用 yum-cron 或 dnf-automatic:yum install yum-cron ; systemctl enable --now yum-cron,并配置自动仅安装安全更新。
- 定期人工审查内核与主要应用更新窗口,测试后再批量应用到站群以避免兼容性问题。
5.
备份策略设计与工具选择
- 采用三二一原则:至少3份备份、保存在2种介质、1份异地(例如大陆/香港/海外云或对象存储)。
- 数据层采用 rsync(增量文件)、mysqldump + gzip(数据库)或 xtrabackup(在线物理备份);镜像层采用 LVM 快照或 VPS 提供商快照。
- 推荐工具:rsync、borgbackup(加密去重)、duplicity(到云端)、rclone(同步到 S3/GCS/OneDrive)。
6.
具体备份实现(示例脚本与cron)
- 网站文件增量同步到远程备份机(示例):rsync -az --delete --exclude='cache/' /var/www/ user@backup.ip:/backups/siteA/;将该命令加入 /etc/cron.d/rsync_siteA,每日凌晨2点执行。
- MySQL 逻辑备份并保留7天:mysqldump -ubackup -p'PASS' --single-transaction --databases site_db | gzip > /backup/mysql/site_db_$(date +%F).sql.gz;并写cron每日03:00运行,保留与删除脚本 find /backup/mysql -type f -mtime +7 -delete。
- 使用 borg 进行加密去重:borg init --encryption=repokey /mnt/backuprepo;borg create --stats /mnt/backuprepo::$(date +%F) /var/www /etc;并设置 prune 保留策略 borg prune -v --keep-daily=7 --keep-weekly=4 --keep-monthly=6。
7.
快照与恢复演练
- 如果VPS提供商支持快照(例如按天快照),把快照与备份结合:在重大变更前触发快照,发生问题快速回滚。
- 恢复测试:至少每月在测试环境做一次完整恢复演练,包括数据库导入、文件回放、服务启动。记录恢复耗时并优化文档。
- 提示:测试恢复时使用独立网络/端口,避免影响线上业务。
8.
监控与告警配置
- 部署轻量监控(Prometheus + node_exporter 或 Zabbix agent),监控 CPU、内存、磁盘、进程、端口。
- 配置告警(邮件/Telegram/Slack):磁盘使用率>80%、SSH 连续失败次数异常、备份失败等立即告警。
- 日志集中化:rsyslog/Fluentd 推送到集中日志服务,结合 fail2ban 自动封堵恶意IP。
9.
运维自动化与配置管理
- 使用 Ansible 编写 playbook 管理站群统一加固、用户、证书、备份任务与防火墙规则,示例:ansible-playbook site_hardening.yml --limit taiwan_group。
- 将关键配置(sshd_config、fail2ban、ufw 规则、cron 脚本)放入版本控制(git),并在变更前走审核流程。
- 定期同步时间(ntp/chrony),保持证书自动续期(certbot renew 并设置hook重载服务)。
10.
问:如何保证备份数据的安全性与合规性?
11.
答:备份安全实施步骤
- 备份加密:使用 borg 或 duplicity 等工具启用端到端加密,避免明文备份在传输或存储中泄露。
- 访问控制:备份目的地只允许备份账号访问,使用密钥认证并限制 IP。记录访问日志满足审计要求。
- 合规性:根据数据类别(个人信息、支付数据),调整保留策略与地域存储位置,遵循当地法规与服务商政策。
12.
问:如何在多个台湾VPS间统一恢复某一台出现故障的节点?
13.
答:快速恢复流程
- 事前准备:保持基础镜像与配置库存(Ansible playbook + 镜像快照)。
- 故障恢复:启动新VPS->应用基础镜像或执行 Ansible playbook -> rsync 恢复最近备份文件 -> 导入最新数据库备份 -> 启动服务并运行健康检查。
- 验证:核对站点响应、日志、业务链路,确认无误后更新负载均衡或 DNS 指向新节点。
来源:安全加固与备份策略保障台湾站群vps长期可用性