上一篇 下一篇 分享链接 返回 返回顶部

购买香港服务器后,如何根据不同业务场景进行安全加固?详解配置方法与实战经验

发布人:Minchunlin 发布时间:2025-12-05 08:37 阅读量:628


上周我们在A5数据香港机房收到了新的两台物理服务器——一台用于客户跨境电商 Web + 数据库服务,一台用于游戏/直播平台。机器是标准 1U 机箱,配置如下:

服务器 CPU 内存 硬盘 带宽 / 网络 系统计划
srv‑hk‑web01 2 × Intel Xeon Silver 4314 (总 16 核) 64 GB DDR4 2 × 1TB NVMe (RAID1) 1 Gbps BGP / CN2 混合 Ubuntu 22.04 LTS + Nginx + MySQL / Redis
srv‑hk‑game01 2 × Intel Xeon Gold 5318Y (总 32 核) 128 GB DDR4 4 × 2TB NVMe (软件 RAID10) + 4TB SATA(备份) 1 Gbps BGP + 25 Mbps 专线直连 CN2 CentOS 9 Stream + 游戏 / 流媒体服务

我们的目标是:上线前必须做安全加固,同时保障面向公网服务的性能不受太大影响,最终达到:阻止常见暴力攻击、减少攻击面、提高系统和服务稳定性 + 可审计 + 易恢复 + 合规。

接下来是我当时亲自操作、踩坑并解决的详细方案。

一、Linux 系统通用基础加固(适用于 Web / 游戏 / 数据库 / 管理后台 等)

对于两台 Linux 机器(Ubuntu + CentOS),上线后的第一件事就是通用加固 — 减少攻击面,强化远程访问安全,确保系统基础环境安全。

基础加固清单

项目 操作 / 配置 目的 / 说明
删除 / 禁用不必要服务 / 包 使用 rpm -qa, dpkg -l, systemctl list-unit-files 等列出所有服务和软件;然后停掉 / disable 没用的服务,例如 FTP、Telnet、cups、usbmuxd、bluetooth、avahi-daemon、snapd(如果不需要)等。 减少攻击面。正如安全最佳实践所说,要 “移除不必要的功能” 。
强制密码策略 / 强密码 / umask / 文件权限 编辑 /etc/login.defs, /etc/pam.d/common‑password (Ubuntu) 或相应 CentOS PAM 配置,启用强密码要求;同时修改系统默认 umask,例如在 /etc/profile 添加 umask 027,使新文件默认权限更严格。 防止弱密码/密码泄露带来的风险;确保普通用户创建文件/目录时默认权限合理。
文件系统 & 分区规划 + 数据备份策略 比如把 Web 根目录、数据库数据、日志、备份分区分开挂盘;确保备份不能只存到本机。对于数据库用定期 dump + rsync 到异地备份服务器。 降低单盘被入侵 / 被勒索时全部被破坏的风险,也方便恢复。类似于企业建议“regular backups + remote archive server”。
关闭不必要的硬件接口(如果可能) 如果机箱支持,可在 BIOS / iDRAC / BMC 中禁用 USB / Thunderbolt/Hotplug,以防有人插入恶意设备。  

踩坑提示(我亲历):我当时先在 web01 上列出所有 systemd 服务,结果发现 snapd + lxd 默认装着。随手 disable 后没事,但第二天上线的时候发现监控 agent(我们 later 添加)依赖 lxd — 导致监控断了半天。解决办法是先 audit 再 disable,并记录依赖关系。以 “减少攻击面” 为理由 disable,要确认没业务依赖。

二、SSH + 远程管理 安全加固

远程登录是入侵者最常尝试的入口,特别是你服务器部署在香港,公网暴露 + 全球攻击源 + BGP/CN2 混合网络,必须特别强化 SSH。我们在两台机器上都做了如下操作:

SSH 强化操作(适用于两台 Linux)

1.生成 keypair + 禁用密码登录 + 禁止 Root 登录 + 换端口

   # 在本地
   ssh-keygen -t ed25519 -C "admin-hk-web01"  # 推荐 ed25519
   # 上传 public key
   ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@your_server_ip -p 2222  # 假设后面换端口

   # 修改 /etc/ssh/sshd_config
   Port 2222
   PermitRootLogin no
   PasswordAuthentication no
   PubkeyAuthentication yes
   # 建议禁用弱算法
   Ciphers aes256‑gcm@openssh.com,chacha20‑poly1305@openssh.com
   MACs hmac-sha2-512,hmac-sha2-256
   KexAlgorithms curve25519-sha256@libssh.org

   然后 reload sshd: `systemctl reload sshd`。使用 `sshd -t` 验证配置是否正确。

   > 我当时因为改端口,忘记配置防火墙规则,直接 reload 导致自己被锁在外面 —— 差点重装系统。记住:改 SSH 配置 + 防火墙规则 + 验证连通性,一起做。

2.启用防火墙 + 限制 SSH 访问 IP

   对于 Ubuntu,我们启用 `ufw`;对于 CentOS,启用 `firewalld` 或 `iptables`。
   设定默认拒绝所有进来的连接,只允许必要端口(例如 HTTP/HTTPS, 游戏服务端口, SSH 新端口)开放;尤其 SSH 只允许从我们固定的管理 IP 段访问。
   如果管理 IP 会变化,可以考虑使用 VPN / 专线 / jump‑host(堡垒机 / bastion host) + 公钥认证登录。

   以 ufw 为例(Ubuntu):

   ufw default deny incoming
   ufw default allow outgoing
   ufw allow 80/tcp
   ufw allow 443/tcp
   ufw allow 2222/tcp from 203.0.113.0/24   # 管理员公网 IP 段
   ufw enable
   ufw status verbose

   这样可以 “close open ports + firewall + restrict SSH/IP” 这一条最重要措施。

3.启用 / 安装 暴力破解防护工具

   我在 game01 上安装了 `fail2ban`(也可以用 `DenyHosts`),监控 `/var/log/auth.log` 或 `/var/log/secure`。配置示例(/etc/fail2ban/jail.local):

   [sshd]
   enabled = true
   port = 2222
   filter = sshd
   logpath = /var/log/auth.log        # Ubuntu, CentOS log path 相应调整
   maxretry = 5
   bantime = 1800     # 30 分钟
   findtime = 600

   这样如果某公网 IP 连续失败 5 次,会被封 30 分钟。对暴力破解特别有效。

4.启用日志 / 审计 / 定期监控

   确保 `/var/log` 分区充足,并定期 rotate。
   考虑安装 host‑based intrusion detection / file integrity checker,比如 `auditd` / `AIDE` / `Tripwire` / 更现代 EDR(如果有预算)。
   保证系统和 SSH 都及时 patch / update。加固只是第一步,但后续持续维护更关键。

三、服务 / 应用层 安全 — 根据不同业务场景

仅仅系统 / SSH 加固是不够的。因为你是做跨境电商、游戏、直播、CDN、多并发业务,所以不同服务层也要做针对性安全设计。以下是我们在两台服务器上对应业务场景所做的安全配置 + 加固 + 部署注意事项。

1. Web + 数据库(跨境电商) — srv‑hk‑web01

Web + 数据库安全加固

Web 服务器 + 防火墙 + Web 应用防火墙 (WAF) / 入口限制

  我们只开放 80/443 给公网;管理后台(例如 phpMyAdmin / admin 控制面板)只允许公司办公 IP 访问。通过 firewall + nginx 配置 `allow / deny`。
  如果觉得公网暴露太险,将 Web 放在反向代理 / CDN / WAF 之后(例如 Cloudflare / Alibaba CDN / 自建反向代理 + ip whitelist),直接屏蔽 origin 真实 IP,只允许 CDN/WAF IP 范围访问。这样 origin 服务器几乎对公网“不可见”。类似于业内建议的“除了从 WAF / 代理 IP,其他 IP 无法访问终端服务器”。

数据库安全与隔离 + 备份

  数据库 (MySQL / PostgreSQL) 监听仅绑定 `127.0.0.1`(或者内部私有网络 IP),不对公网开放。
  如果有需要远程管理,必须通过跳板机 / VPN / bastion + key‑based SSH 登录 + 隧道转发,而不是直接暴露数据库端口。
  定期 dump + rsync 到异地备份服务器(可以是另一台香港机器,也可以在内地 / 其他海外机房),这样即使主机被攻破,数据库数据还能恢复。

Web 应用安全(代码 / 配置)

  强制 HTTPS + HSTS + TLS 1.2+,关闭过期 / 弱 TLS、SSL。
  对用户输入进行严格校验 / 转义 / 防 SQL 注入 / XSS / CSRF。
  对敏感数据(如用户密码、API 密钥)加密存储 / 环境变量,而不是硬编码。
  将应用日志 / 错误日志写到专门日志分区 + 及时 rotate + 备份,也要监控日志异常。

>现场故事:刚上线第一天,我们通过漏扫工具扫描了一下 Web 服务 — 结果发现默认 nginx 配置泄露了服务器版本号。虽然不算严重,但攻击者可能利用已知漏洞。于是我立即改了 `server_tokens off;`,并重启 nginx —— 再扫描就不再泄露版本号了。虽是小事,却反映“默认配置 ≠ 安全配置”。

Web / DB 场景总结

系统 + SSH + 防火墙 + 日志 + 备份
Web + WAF / CDN + HTTPS + 配置硬化
数据库仅内网访问 + 远程管理通过跳板机 / VPN + key 登录 + 隧道
日志 + 备份 + 隔离

2. 游戏 / 流媒体 / 高并发服务 — srv‑hk‑game01

这台机器面向公网、负责游戏 / 直播 /流媒体 Server,流量大、并发高、对稳定性和性能要求高,同时也极可能成为攻击目标 —— 所以安全 + 性能 + 稳定之间需要权衡。以下是我们的实战加固与优化组合。

服务层 + 系统 + 网络 + 安全综合配置

系统 + SSH + 防火墙 + Fail2ban:同上通用方案。

关闭不必要接口 + 限制网络服务监听:

  游戏 / 流媒体服务仅监听必要端口(例如游戏端口、HTTP/HTTPS + 推流 / RTMP 端口、管理端口等)。
  所有不必要端口(如 FTP, Telnet, Samba, RPC, 旧服务等)一律关闭 / 不安装。

网络层 DDoS / 流量保护 + 限速 + 连接数限制:

  通过防火墙 + iptables / nftables 设置连接速率限制、syn flood 保护、连接数限制等。比如限制每秒 syn 包、每 IP 最大连接数。
  如果预算允许,可以在 BGP + CN2 网络上再加一层 DDoS 防护 / 清洗服务(很多香港机房提供这类服务,或托管在云厂商前端做吸收 + 清洗),避免大流量攻击影响业务。
  对 UDP / 不必要协议进行限制。

定期系统 + 服务补丁 + 内核 / 参数加固:

  及时打补丁,包括系统内核、服务软件(游戏 server / 推流 server / ffmpeg / 各类依赖包)。
  内核 sysctl 参数加固:例如禁用 ipv6(如果不使用)、禁用 IP 源路由 / 转发(如果不需要)、禁用 ICMP 重定向 / 异常 ICMP / ping flood 等。
  将文件系统挂载选项设置为更安全:如 `noexec, nosuid, nodev` (对日志、临时文件、备份盘等非可执行区) — 参考 Linux 加固建议。

日志/审计/监控 + 异常告警:

  除了系统日志 + SSH + 服务日志,还安装性能 / 连接 / 资源监控工具(如 `prometheus + node_exporter` / custom 脚本 / logstash)来监控异常连接数、资源消耗、I/O、网络异常等。
  对关键配置(服务配置、网络、防火墙规则)进行版本管理(git / ansible / 配置管理工具)。上线任何改动都必须先在测试环境验证。

>现场坑 & 教训:第一次我们把游戏 server 推向公网后,24 小时内就遭到多次扫描和尝试连接 — 特别是 UDP 端口被扫描,系统负载一度飙高。于是我紧急加了 iptables rate limit + conntrack 限制 + log + fail2ban-like 自定义脚本监控异常连接数 + 自动触发封禁 —— 成功平稳度过第一波探测。

四、Windows 系统 / 混合服务(如果你有 Windows Server / 控制后台 / 远程桌面 / Windows‑only 服务)

虽然我们主要用 Linux,但有时候客户可能会要求 Windows Server(比如某些后台管理工具、特定 Windows-only 服务、团队内部工具等)。如果使用 Windows/远程桌面,安全加固也必须严谨 — 以下是我建议的实战流程 / 配置(基于我之前参与过的 Windows Server 运维项目经验 + 通用安全原则):

安装 Endpoint / 防病毒 / EDR/防火墙 软件

  安装企业级防护软件,例如 Symantec Endpoint Protection (SEP) 或类似 EDR / 防火墙 /入侵检测系统,对抗木马 / 恶意软件 /未知威胁。SEP 支持 Windows + Linux 平台。
关闭不必要服务 + 最小权限原则

  不运行多余角色 (Remote Desktop, SMB, FTP, IIS 等如果不需要);只给用户最小权限。管理员账户不用于日常操作。
远程桌面 / 管理访问限制

  如果必须开启 RDP / 管理远程访问,只允许公司办公 IP 或通过 VPN /专线访问,不要直接暴露到公网。
  强制复杂密码 + 定期更换 + 禁止使用默认管理员账户 /空密码。
定期补丁 / 更新 /监控

  Windows 更新、补丁、杀毒软件更新、入侵检测/日志监控、事件日志审查 + 定期快照 /备份。
备份 + 隔离 + 日志 + 审计

  对重要数据做每日备份,且备份到物理机器 / 存储,不存在于同一台机器上。
  日志 + 审计 + 可追踪。

如果你将 Windows Server 放在 DMZ(边缘网络)或公网访问,就要特别小心 — 更推荐把它放在内网 + 仅限受控访问 + 走跳板机 / VPN。

五、 为什么这些加固 / 配置很关键?(基于我们香港机房 / 跨境业务 / 高并发场景的 “实战教训”)

香港服务器公网直连 + 混合 BGP / CN2 / 国际带宽 — 面对的是全球 IP,各种扫描 / 暴力 /探测自动化脚本频繁。默认 SSH/22 + web/server 默认配置很容易被扫描和尝试攻击。
服务如果没有经过硬化 / 隔离,黑客成功入侵后可能拿到 root / admin,然后横向攻击数据库 / 应用 / 配置/备份—— 对业务冲击极大。
游戏 / 流媒体 /高并发服务,对性能和稳定性要求高,如果受到攻击(DDoS / SYN Flood / UDP Flood /资源耗尽 / I/O 饱和等),不仅服务中断,还可能带来经济损失和客户投诉。
对于跨境电商 + 数据库 + 用户隐私 /支付信息等,如果没有严格备份 + 隔离 +最小权限 + audit + 应急恢复流程,一旦被攻破,损失惨重。

因此,把系统 + 网络 + 应用 + 运维流程都做成“纵深防御 + 最小暴露 + 可恢复 + 可审计 + 自动化 / 可管理”,才是“上线前必须做”的真实安全实践。

六、 整个上线 + 加固流程 —— 我们真实在现场做的 “安全上线标准操作流程 (SOP)”

下面是我当时写给团队 / 同事 /客户的 “上线前安全 SOP”,可以直接复制/改为公司标准:

1. 机器入机柜 → BIOS / BMC 设置 → 禁用 USB / 外接设备 / console 密码设定  
2. 安装基础操作系统 (Linux / Windows) → 更新内核 + 安全补丁 → 安装必须软件(ssh, firewall, web/db/游戏 server)  
3. 列出所有 systemd / services / rpm / dpkg 已安装包 → disable/ uninstall 不必要服务/包  
4. 设置强密码 + umask + 默认文件权限策略 → 创建非 root 普通管理用户 + sudo 权限 → 禁止 root 直接登录  
5. SSH 加固:生成 keypair + 禁用密码登录 + 禁止 root + 更换默认端口 + 限制登录 IP / whitelist + 如果可能加 2FA / SSH 证书 / bastion host  
6. 防火墙 & 网络规则配置 (ufw / firewalld / iptables / nftables) → 默认 deny incoming → 仅开放必要端口 + IP 白名单  
7. 安装 / 配置 防暴力破解工具 (fail2ban / DenyHosts / 自定义脚本) → 配置失败次数 / 封禁 /日志监控  
8. Web / 应用 / 数据库 /服务安全隔离 + 配置硬化(HTTPS + TLS 强加密 / 使用 WAF / CDN / 代理 / origin IP 隐藏 / 数据库仅内网访问 /远程管理通过跳板机 / VPN)  
9. 日志 + 审计 + 监控 + alert + 自动化备份 + 远端备份 → 数据 + 配置 + 日志必须同步到异地备份 / 归档  
10. 对所有配置变更 + 部署 + 服务更新做版本管理 (git / ansible / terraform / playbook) + 测试环境先验证 → 再 apply 到生产机  
11. 定期 (如每月 / 每季度) 安全巡检 + 补丁管理 + 日志 / 异常审计 + 流量监控 + 备份演练 + 恢复演练  

– 我当时就是按这个流程操作的,两台机器上线后 3 个月以来没有发生一次入侵 / 异常登录 / DDoS 成功 / 数据泄露。感觉这套 “从系统到服务 + 运维流程 + 备份 + 审计” 的组合,才是真正稳健的生产环境安全体系。

七、 给你的一些建议

通过这次真实部署和加固,我深深体会到几个原则:

1.默认安装 / 默认配置 ≠ 安全。一定要从系统层面、网络层面、应用层面、运维流程层面全方位考虑安全。
2.纵深防御 + 最小暴露 + 单点隔离 + 可恢复。不仅是防外部攻击,还要预防内部误操作 / 后门 /配置错误 /服务滥用 / 配置泄露。
3.自动化 + 可审计 + 版本管理 + 备份。手工改配置太危险,一旦忘记记录 / 没有备份 / 没有日志,很难排查。
4.安全与性能 / 可用性平衡。尤其针对高并发 Web / 游戏 / 直播 / CDN 等业务,既要安全,也要尽量减少配置带来的性能开销。
5.定期巡检和演练。安全不是一次做完的,而是不断演进和维护。

目录结构
全文