1.
概述与准备工作
- 说明目标:在DigitalOcean新加坡节点部署并安全加固网站与服务。
- 准备事项:注册do账号、绑定信用卡、准备域名并完成域名解析(A记录指向浮动IP)。
- 操作系统建议:Ubuntu 22.04 LTS 或 Debian 11,镜像选择新加坡区域。
- 控制面板选项:使用do控制面板或安装Webmin/ISPConfig做图形管理。
- 安全前置:启用二步验证、生成SSH密钥对、记录管理IP与应急联系人。
2.
选择与创建Droplet(新加坡节点)
- 推荐配置依据流量:低流量测试可选1GB,生产常见2GB或4GB起步。
- 网络设置:选择VPC私有网络、启用浮动IP便于切换。
- 快照与备份:创建首次快照并启用每周备份计划。
- 控制面板实践:在控制面板创建Droplet时添加SSH公钥减少密码登录风险。
- 示例命令:ssh -i ~/.ssh/id_rsa root@203.0.113.45(203.0.113.45为示例新加坡公网IP)。
3.
基础系统配置步骤
- 更新系统与安装常用工具:apt update && apt upgrade -y;安装curl、htop、ufw、fail2ban。
- 创建非root用户并授予sudo:adduser deployer;usermod -aG sudo deployer。
- 配置时区与主机名:timedatectl set-timezone Asia/Singapore;hostnamectl set-hostname web-sg。
- 配置SSH:修改/etc/ssh/sshd_config,示例更改端口为22022、禁止PermitRootLogin yes改为 prohibit-password。
- 启用并测试Swap(若内存小于2GB):fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile。
4.
防火墙与入侵防护配置
- UFW基础规则:ufw allow 22022/tcp;ufw allow 80/tcp;ufw allow 443/tcp;ufw enable。
- DigitalOcean Cloud Firewall:在控制面板添加允许管理IP和CDN的规则,阻断所有其它管理端口。
- fail2ban示例:启用sshd监控,/etc/fail2ban/jail.local 设置 maxretry = 5;bantime = 3600。
- SSH强化:禁止密码登录 PasswordAuthentication no,使用公钥并开启AllowUsers deployer。
- 日志与告警:配置logwatch或使用Prometheus+Alertmanager推送异常登录告警。
5.
CDN、DDoS防御与流量策略
- 推荐CDN:Cloudflare(免费层即可提供基础DDoS保护与缓存)。
- DNS与代理:在域名解析中将A记录指向Cloudflare代理后再到浮动IP,隐藏源IP以降低直接攻击风险。
- 速率限制与防刷:在Nginx中配置limit_req_zone,示例 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s。
- Web应用防火墙:启用Cloudflare WAF规则并在Nginx使用ModSecurity做二次过滤。
- 流量监控:结合do控制面板带宽图与Cloudflare Analytics观察异常流量峰值并启用挑战页面。
6.
真实案例与配置表(示例数据)
- 案例背景:某SaaS在新加坡部署主站和API,起初使用2GB Droplet,遭遇短时流量峰值后启用Cloudflare并增加缓存,成功将带宽峰值从800Mbps削减至50Mbps。
- 备份策略:主站采用每日快照+每周外部备份到对象存储并保持最近7份。
- 监控配置:Prometheus抓取/metrics并用Grafana做展示,设置CPU>80%告警。
- 示例安全命令清单:ufw status;systemctl enable fail2ban;ssh -p22022 deployer@203.0.113.45。
- 以下为Droplet规格示例:
| 类型 | RAM | vCPU | SSD | 月传输 |
| 小型 | 1 GB | 1 | 25 GB | 1 TB |
| 标准 | 2 GB | 1 | 50 GB | 2 TB |
| 推荐 | 4 GB | 2 | 80 GB | 4 TB |
来源:快速上手do新加坡服务器控制面板配置与安全设置指南