首页 > Technology > 正文

VPS 服务器安全加固完整手册:从防火墙到入侵排查的全流程指南

fenij 2026-08-06 10 Technology

VPS 一旦暴露在公网上,就会有人来扫端口、试密码、找漏洞。安全加固不是一次性的事,而是一套持续的流程:装好防火墙、关掉不需要的端口、配好暴力破解防护、定期检查有没有被入侵。这篇手册把这些环节串起来,给你一个完整的安全加固路径。

一、安全加固的整体思路

VPS 安全可以从三个层面来理解:

  • 网络层:防火墙控制进出流量,只开放必要端口
  • 应用层:SSH 加固、Fail2ban 防爆破、Web 服务安全
  • 入侵响应:被攻击了怎么判断、被入侵了怎么排查和清除

下面按这个顺序展开。

二、防火墙配置

防火墙是 VPS 安全的第一道防线。UFW(Uncomplicated Firewall)是 Ubuntu/Debian 上的默认防火墙工具,配置简单:

# 默认策略:拒绝进站,允许出站
ufw default deny incoming
ufw default allow outgoing

# 开放 SSH(必须先开,否则会把自己锁在外面)
ufw allow 22/tcp

# 开放 Web 服务
ufw allow 80/tcp
ufw allow 443/tcp

# 启用防火墙
ufw enable

# 查看状态
ufw status verbose

如果你改过 SSH 端口,记得开放新端口。UFW 的详细配置和常见问题参考 VPS 防火墙配置指南:UFW 完整教程

关于 VPS 安全的整体加固步骤(包括用户管理、SSH 配置、自动更新等),参考 VPS 服务器安全加固指南:新手逐步操作

三、SSH 安全加固

SSH 是服务器管理的主要通道,也是攻击者的首要目标。加固措施:

1. 改默认端口:把 22 改成一个高位端口(比如 50022),能挡掉大部分自动扫描。

# /etc/ssh/sshd_config
Port 50022

2. 禁止 root 直接登录:用普通用户 + sudo 代替。

PermitRootLogin no

3. 用密钥登录,禁止密码

PasswordAuthentication no
PubkeyAuthentication yes

4. 限制登录用户

AllowUsers yourusername

改完重启 SSH 服务:systemctl restart sshd。详细的 SSH 加固步骤参考 Linux SSH 安全加固完整指南

四、暴力破解防护

即使改了 SSH 端口,还是有人会扫到。Fail2ban 通过分析日志自动封禁尝试暴力破解的 IP:

# 安装
apt install fail2ban

# 配置 SSH 防护
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = 50022
maxretry = 3
bantime = 3600
findtime = 600
EOF

# 重启
systemctl restart fail2ban
systemctl enable fail2ban

Fail2ban 不只能防 SSH 爆破,还能监控 Nginx、Postfix 等服务的日志。详细配置参考 Fail2ban 暴力破解防护完整配置指南

五、DDoS 防护

DDoS 攻击用大量垃圾流量把服务器打满,和暴力破解完全不同——没有漏洞可以补,拼的是带宽和过滤能力。防护手段从内核到 CDN 分层部署:

  • 内核层:开启 SYN cookies 防 SYN flood
  • iptables/nftables:对单 IP 做连接数限制
  • Fail2ban:处理应用层 HTTP flood
  • CDN 前置:Cloudflare 等 CDN 吸收大流量攻击
  • Nginx 层:rate limiting 限制请求频率

详细的分层防御配置参考 VPS DDoS 防护完整指南

六、CC 攻击防御

CC 攻击是应用层的 DDoS——攻击者模拟真实用户频繁请求消耗服务器资源。和纯流量 DDoS 不同,CC 攻击的流量可能不大,但 CPU 和数据库会被打满。

防御思路:

  • 用 Nginx 的 limit_req 做请求频率限制
  • 对特定 URL(如 /wp-login.php)做更严格的限制
  • 用 Fail2ban 监控 Nginx 日志,自动封禁高频 IP
  • 必要时上 Cloudflare 的 Under Attack 模式

完整的 CC 攻击判断和防御方案参考 服务器被 CC 攻击怎么办?从判断到防御的实操方案

七、HTTPS 证书管理

HTTPS 不只是加密通信,也是搜索引擎排名的加分项。用 Let's Encrypt 免费证书配 Nginx 就行。证书有效期 90 天,用 certbot 自动续期。

关于证书过期的确认和续期操作,参考 HTTPS 证书过期怎么办?确认与续期完整指南

八、被攻击后的判断与处置

服务器异常时,先判断是不是真的被攻击了。常见迹象:CPU 跑满、带宽暴增、大量异常连接、文件被篡改。

判断和处置的完整流程参考 网站被攻击怎么办?判断与处置全流程指南

如果确认被挂马了(首页被篡改、跳转到博彩站等),需要清理木马文件。具体步骤参考 网站被挂马怎么办?木马清除实操步骤

九、VPS 自动备份

安全加固做得再好也不能保证 100% 不出事。定期备份是最后的保险。备份策略:

  • 数据库每天备份,保留 30 天
  • 网站文件每周备份
  • 备份文件传到异地(另一台服务器或对象存储)
  • 定期做恢复测试

自动备份脚本的编写和配置参考 VPS 自动备份配置完整指南

十、安全检查清单

检查项 命令 频率
SSH 端口是否改了 grep Port /etc/ssh/sshd_config 一次
密码登录是否关了 grep PasswordAuthentication /etc/ssh/sshd_config 一次
防火墙是否开启 ufw status 每周
Fail2ban 是否运行 systemctl status fail2ban 每周
SSL 证书有效期 openssl s_client -connect domain:443 每周
系统更新 apt list --upgradable 每月
异常登录记录 last -20 每周
异常进程 ps aux | grep -v root | sort 每周
磁盘使用 df -h 每周
备份是否正常 ls -la /backup/ 每天

更多服务器安全教程,请访问 fenij.com

常见问题

问:改了 SSH 端口后连不上了怎么办?
答:先确认防火墙开放了新端口。然后确认 sshd_config 里的 Port 改对了,重启了 sshd。如果用 UFW,别忘了 ufw allow 新端口/tcp。改端口时建议保留旧端口一段时间,确认新端口能连了再删旧的。

问:Fail2ban 把自己 IP 封了怎么办?
答:用 fail2ban-client set sshd unbanip 你的IP 解封。为了避免这种情况,把自己的 IP 加入 ignoreip 白名单:echo "ignoreip = 127.0.0.1/8 你的IP" >> /etc/fail2ban/jail.local

问:Cloudflare 开了之后还需要服务器防火墙吗?
答:需要。如果攻击者找到你的源站 IP(通过 DNS 历史、邮件头等),可以绕过 Cloudflare 直连。防火墙是最后一道防线。建议在防火墙层面只允许 Cloudflare 的 IP 段访问 80/443 端口。