1.
系统初始加固(操作系统与账号管理)
- 创建非root管理账号:sudo adduser deploy; sudo usermod -aG sudo deploy。
- 禁用root远程登录:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no、PasswordAuthentication no,重启 SSH:sudo systemctl restart sshd。
- 使用SSH密钥登录:在本地生成密钥 ssh-keygen -t ed25519,并把公钥追加到服务器 ~deploy/.ssh/authorized_keys,权限设置为700/600。
2.
SSH与访问控制优化
- 修改默认端口:在 /etc/ssh/sshd_config 中 Port 22022(示例),防止被自动扫描。
- 配置Fail2Ban:sudo apt install fail2ban,创建 /etc/fail2ban/jail.d/ssh.conf,启用 bantime、maxretry,重载服务。
- 使用防火墙白名单:推荐 nftables/ufw。示例 UFW:sudo ufw default deny incoming; sudo ufw allow 22022/tcp; sudo ufw allow 443/tcp; sudo ufw enable。
3.
TLS/证书与Web服务器安全
- 安装证书(Let's Encrypt):sudo apt install certbot python3-certbot-nginx;sudo certbot --nginx -d example.com。
- 强制 TLS 最低版本:在 Nginx 配置 ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers 推荐现代套件并启用 ssl_prefer_server_ciphers on。
- 开启 HSTS、强安全头:add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff。
4.
Web 应用防火墙与请求白名单
- 部署 ModSecurity(与 Nginx/Apache 配合),启用 OWASP CRS 规则集,定期排查误拦截。
- 对支付回调使用IP白名单:在 Nginx 里 location /callback { allow 1.2.3.4; deny all; },并验证回调签名。
- 使用速率限制:nginx limit_req_zone $binary_remote_addr zone=rl:10m rate=10r/s; 在支付接口处限流以防暴力请求。
5.
数据库与敏感数据保护
- 不在VPS上明文存储卡号:使用第三方支付或 tokenize;若必须存储,符合 PCI 要求并加密。
- MySQL 加固:限制远程连接 bind-address=127.0.0.1,使用强密码并删除匿名账户,执行 mysql_secure_installation。
- 启用传输层加密:为 MySQL 配置 ssl,修改 client/server 配置并使用证书验证。
6.
日志、监控与入侵检测
- 集中日志:把重要日志(/var/log/nginx、auth、mysql)发送到远端 syslog 或 OSS(例如 ELK/Cloudwatch),防止被本地篡改。
- 部署 IDS/IPS:安装 Fail2Ban、OSSEC 或 Wazuh,配置邮件/Slack告警规则。
- 定期审计:启用 auditd(sudo apt install auditd),添加关键文件/目录监控规则并每周查看异常。
7.
备份、加密与恢复演练
- 数据库备份脚本示例:mysqldump -u root -p'密码' dbname | gzip > /backup/db-$(date +%F).sql.gz;使用 GPG 加密:gpg --encrypt --recipient admin@your.com file。
- 将备份推送到异地(S3/对象存储)并测试恢复流程(每月一次)。
- 对备份与磁盘使用全盘加密(LUKS),防止物理偷窃泄露。
8.
合规与支付场景特殊注意(PCI 基础要点)
- 不存储 CVV,使用 Tokenization;实现最小权限与网络隔离(VPC、私有子网)。
- 日志保留与审计:保存至少 1 年审计日志、按需加密传输日志。
- 向第三方支付接口使用固定回调地址并验证签名/时间戳,拒绝重复或延迟请求。
9.
常见问:如何在泰国VPS上验证TLS配置正确性?
问:如何确认我的 TLS 配置满足支付要求?
答:使用 openssl s_client -connect example.com:443 -tls1_2 查看协商信息,并用 SSL Labs(Qualys)扫描域名,确保支持 TLS1.2/1.3、没有高危套件并且证书链完整。
10.
常见问:支付回调被伪造怎么办?
问:如果怀疑支付回调被伪造我应该怎么办?
答:立即屏蔽异常 IP、检查服务端回调签名校验逻辑、比对时间戳与订单状态、从支付方控制台核实回调记录,并用回放检测(nonce、一次性 token)防止重复。
11.
常见问:如何快速评估VPS是否达到上线支付条件?
问:上线支付前应检查哪些关键项?
答:确认操作系统与软件已更新、SSH密钥与防火墙生效、HTTPS证书有效并通过 SSL Labs 扫描、支付接口限流与回调签名校验、日志远端备份与告警、无明文卡片存储并完成基本 PCI/SAQ 自检。
来源:支付与结算场景下泰国电商vps的安全配置与优化建议