买了VPS第一件事不是装WordPress,而是加固安全。
这话不是危言耸听——根据2026年最新统计,一台公网暴露的VPS平均在上线2小时内就会被扫描器盯上。你的SSH端口22每天能收到上千次暴力破解尝试,如果你还在用密码登录,被攻破只是时间问题。
好消息是:加固VPS安全并不难。跟着本文走一遍,10分钟就能让你的服务器安全性提升一个量级。
本文适合谁: 所有VPS用户,尤其是新手。无论你用的是 RackNerd、Hostinger 还是 Vultr,这些步骤都适用。
加固前准备
| 准备事项 | 说明 | 花费 |
|---|---|---|
| 一台VPS | 推荐至少1核1GB配置 | $11.29/年起 |
| SSH客户端 | macOS用Terminal,Windows用PuTTY或Windows Terminal | 免费 |
| 基本命令行知识 | 会复制粘贴命令就行 | — |
💡 如果你还没买VPS: 推荐 RackNerd 年付$11.29起,性价比最高的练手VPS。
第1步:禁用密码登录,改用SSH密钥
这是最重要的一步。密码登录 = 给黑客留了后门。
生成SSH密钥对
在你的本地电脑上执行:
# macOS/Linux
ssh-keygen -t ed25519 -C "[email protected]"
# 按回车保存默认路径,再输入两次密码(可选)
Windows用户在PowerShell或Windows Terminal中执行同样命令。
上传公钥到VPS
# 方法1:ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的VPS_IP
# 方法2:手动
cat ~/.ssh/id_ed25519.pub | ssh root@你的VPS_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
禁用密码登录
# 编辑SSH配置
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
重启SSH服务:
sudo systemctl restart sshd
⚠️ 重要: 修改前确认密钥登录已成功!否则你会被锁在服务器外面。
第2步:更改SSH端口
默认端口22是扫描器的重点目标。换成非标准端口能过滤掉99%的自动扫描。
sudo nano /etc/ssh/sshd_config
修改:
Port 2222 # 改成你喜欢的端口,范围1024-65535
重启SSH:
sudo systemctl restart sshd
更新本地SSH配置(~/.ssh/config):
Host my-vps
HostName 你的VPS_IP
Port 2222
User root
IdentityFile ~/.ssh/id_ed25519
以后用 ssh my-vps 就能连接。
第3步:配置防火墙
使用UFW(推荐新手)
# 安装UFW
sudo apt install ufw -y # Debian/Ubuntu
# 或 sudo yum install ufw -y # CentOS
# 设置默认策略:拒绝入站,允许出站
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许SSH(新端口)
sudo ufw allow 2222/tcp
# 允许HTTP/HTTPS(如果跑网站)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status verbose
使用firewalld(CentOS/RHEL)
# 添加SSH端口
sudo firewall-cmd --permanent --add-port=2222/tcp
# 添加HTTP/HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重载规则
sudo firewall-cmd --reload
🔒 核心原则: 只开放必需的端口。不确定的端口一律关掉。
第4步:安装fail2ban防暴力破解
fail2ban会自动封禁多次尝试失败的IP地址。
# 安装
sudo apt install fail2ban -y
# 创建本地配置(不要直接改jail.conf)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑配置
sudo nano /etc/fail2ban/jail.local
添加以下内容:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
重启服务:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 查看被封禁的IP
sudo fail2ban-client status sshd
自定义封禁策略
| 参数 | 含义 | 推荐值 |
|---|---|---|
| maxretry | 最大失败次数 | 3 |
| bantime | 封禁时长(秒) | 3600(1小时) |
| findtime | 统计时间窗口 | 600(10分钟) |
第5步:禁用不必要的服务
很多VPS默认开启了用不到的服务,白白增加攻击面。
# 查看运行中的服务
systemctl list-units --type=service --state=running
# 禁用不需要的服务(示例)
sudo systemctl disable --now rpcbind # NFS相关,不用就关
sudo systemctl disable --now avahi-daemon # 网络发现,VPS不需要
sudo systemctl disable --now cups # 打印服务
常见可禁用服务
| 服务 | 说明 | VPS需要吗 |
|---|---|---|
| rpcbind | RPC端口映射 | ❌ |
| avahi-daemon | mDNS/Bonjour | ❌ |
| cups | 打印服务 | ❌ |
| xinetd | 超级服务器 | ❌ |
| telnet | 远程登录(不安全) | ❌ |
| vsftpd | FTP服务 | 看需求 |
第6步:设置自动安全更新
保持系统更新是修补漏洞的关键。
Debian/Ubuntu
# 安装自动更新
sudo apt install unattended-upgrades -y
# 启用
sudo dpkg-reconfigure -plow unattended-upgrades
# 自动安装安全更新
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
确保包含:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
CentOS/RHEL
# 安装dnf-automatic
sudo dnf install dnf-automatic -y
# 启用自动更新
sudo systemctl enable --now dnf-automatic.timer
第7步:配置日志监控
及时发现异常活动很重要。
安装logwatch
sudo apt install logwatch -y
# 配置每日邮件报告
sudo nano /etc/logwatch/conf/logwatch.conf
设置:
Output = file
Filename = /var/log/logwatch.log
Range = yesterday
Detail = High
Service = All
查看关键日志
# 查看登录尝试
sudo grep "Failed password" /var/log/auth.log | tail -20
# 查看当前登录用户
who
# 查看最近登录记录
last -20
第8步:文件权限加固
# 确保关键文件权限正确
sudo chmod 600 /etc/ssh/sshd_config
sudo chmod 700 /root/.ssh
sudo chmod 600 /root/.ssh/authorized_keys
# 查找世界可写文件
find / -xdev -type f -perm -0002 -print
# 查找SUID文件
find / -xdev -type f -perm -4000 -print
设置正确的umask
# 编辑/etc/login.defs
sudo nano /etc/login.defs
修改:
UMASK 027
加固检查清单
完成所有步骤后,用这个清单逐项确认:
- SSH使用密钥登录
- 密码登录已禁用
- SSH端口已更改为非标准端口
- 防火墙已启用,只开放必要端口
- fail2ban已安装并运行
- 不必要的服务已禁用
- 自动安全更新已开启
- 日志监控已配置
- 文件权限已加固
- 使用非root用户管理日常操作
常见问题
Q: 加固后SSH连不上了怎么办?
如果被锁在外面,大多数VPS提供商都提供VNC控制台或救援模式。通过VNC登录后检查:
# 检查SSH服务状态
sudo systemctl status sshd
# 检查防火墙规则
sudo ufw status
# 检查fail2ban状态
sudo fail2ban-client status
Q: 我用的是 Hostinger VPS,需要自己配置这些吗?
Hostinger提供hPanel面板,基础安全设置(如防火墙规则)可以在面板操作。但SSH密钥登录、fail2ban等仍需手动配置,建议还是按本文步骤走一遍。
Q: 我需要安装入侵检测系统(IDS)吗?
对于个人VPS,上述步骤已经足够。如果你运行生产环境或处理敏感数据,可以考虑安装OSSEC或Wazuh等IDS,但那是进阶话题了。
Q: Vultr 和 RackNerd 哪个更安全?
安全性主要取决于你自己怎么配置,和VPS提供商关系不大。不过 Vultr 提供免费的DDoS防护,RackNerd 需要自己配置。两者都是可靠的选择。
总结
VPS安全加固不是一次性任务,而是持续的过程。完成以上8个步骤后,你的服务器已经比99%的VPS更安全了。
推荐的安全加固配置:
| 配置项 | 方案 | 难度 |
|---|---|---|
| SSH密钥登录 | ed25519密钥 | ⭐⭐ |
| 非标准端口 | 改成2222+ | ⭐ |
| 防火墙 | UFW | ⭐⭐ |
| 暴力破解防护 | fail2ban | ⭐⭐ |
| 自动更新 | unattended-upgrades | ⭐ |
💡 下一步: 安全加固完成后,可以考虑部署 RackNerd VPS 上的自动备份方案,见我们的《VPS自动备份教程》。
Disclaimer: Some links are affiliate links. We may earn a commission at no extra cost to you.
