1.
准备与环境确认
- 确认服务器所在地(香港节点)与带宽需求;选择支持IPv6/IPv4和DDoS防护的香港云或机房。
- 登录方式:确保你有root或sudo账户,准备好SSH key(ssh-keygen -t ed25519)。示例:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your.hk.server。
2.
基础系统更新与用户管理
- 更新系统:Debian/Ubuntu: sudo apt update && sudo apt upgrade -y。CentOS: sudo yum update -y。
- 新建管理用户并授予sudo:sudo adduser admin && sudo usermod -aG sudo admin。禁止root直连后续在sshd配置中设置。
3.
SSH安全硬化
- 编辑 /etc/ssh/sshd_config:禁止密码登录(PasswordAuthentication no)、禁止PermitRootLogin no、使用非默认端口(Port 22022)、仅允许公钥认证(PubkeyAuthentication yes)。保存后重启:sudo systemctl restart sshd。
- 配合UFW/iptables限制SSH来源:sudo ufw allow from 1.2.3.4 to any port 22022 proto tcp(替换为管理IP),并启用ufw:sudo ufw enable。
4.
防火墙与网络访问控制
- 使用UFW基本规则:sudo ufw default deny incoming && sudo ufw default allow outgoing。开放必要端口:HTTPS 443, HTTP 80(仅用于Let's Encrypt挑战),应用自定义API端口。
- 高级防护:部署ipset + iptables阻断黑名单/扫描源;或使用云供应商的安全组与DDoS防护。
5.
TLS/HTTPS及证书管理
- 使用Let's Encrypt与Certbot自动签发:sudo apt install certbot && sudo certbot certonly --nginx -d api.example.hk。
- Nginx配置强制TLS:ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers '...'; 启用HSTS:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always。
6.
反向代理与Web应用防火墙(WAF)
- 推荐使用Nginx做反向代理,将移动请求导向后端应用,启用limit_req、limit_conn限流。示例:limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;。
- 对外部流量使用云WAF或ModSecurity + CRS规则集,防止SQLi/XSS等常见攻击。
7.
认证与API访问控制
- 使用OAuth2 / JWT进行移动端认证,Token采用短有效期(如15分钟)并实现刷新机制。JWT签名使用强算法(RS256)。
- 对敏感API启用双因素或设备绑定(device_id)验证,服务端保存设备指纹与最后登录时间。
8.
移动端通信加固(App侧)
- 启用证书校验与证书绑定(pinning),Android使用Network Security Config或OkHttp证书钉住,iOS使用NSURLSession证书验证。
- 在APP端使用安全存储(Android Keystore, iOS Keychain)保存Token;避免明文存储在SharedPreferences或NSUserDefaults。
9.
入侵检测与日志监控
- 部署集中日志:使用rsyslog/Fluentd/Logstash将系统与应用日志推送到ELK或Splunk。关键字段:IP、User-Agent、请求路径、响应码。
- 启用并配置fail2ban监控SSH/HTTP异常登录,示例:/etc/fail2ban/jail.local 定义nginx-http-auth,启动:sudo systemctl enable --now fail2ban。
10.
备份、恢复与高可用
- 配置数据库与文件定期备份到异地(建议香港以外的区域做一份异地备份),使用每日全量+每小时增量策略。
- 配置负载均衡与健康检查(HAProxy/Nginx LB或云LB),保证移动访问的高可用性与可伸缩性。
11.
压力与安全测试
- 在上线前做接口安全扫描(OWASP ZAP、Burp),以及移动端模拟攻击(滥用、暴力破解、身份劫持)。
- 做受控的压力测试(JMeter、k6),验证速率限制与WAF规则是否生效,避免误封正常用户。
12.
常用命令与示例配置片段
- 修改sshd:sudo sed -i 's/#Port 22/Port 22022/' /etc/ssh/sshd_config && sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config && sudo systemctl restart sshd。
- Nginx限流示例片段:http { limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s; } server { location /api/ { limit_req zone=one burst=10 nodelay; } }
13.
问:在香港节点如何降低DDoS风险?
答:通过启用供应商提供的DDoS防护、使用云CDN(如Cloudflare、Akamai)做前端清洗、设置网络ACL和速率限制,并在流量异常时触发流量黑洞或切换到备用节点。具体操作:在云控制台开启DDoS保护,配置WAF规则与速率限制。
14.
问:移动端Token丢失如何快速处置?
答:立即在服务端作废该Token(维护一个黑名单或在数据库标记token_revoked=true),同时通知受影响用户强制重新登录并建议修改密码。配合日志溯源定位来源IP与异常操作。
15.
问:如何在香港合规地记录与存储用户访问日志?
答:先确认适用的隐私法规(例如本地数据保护条例),最小化日志敏感信息(脱敏IP或哈希处理),并在隐私政策中告知用途。备份与存储时加密(AES-256),并限制访问权限与审计日志。
来源:香港手机服务器安全配置与移动访问防护实用步骤