本文可能包含联属链接——如果您通过链接注册,我们将获得佣金,您无需支付额外费用。· 编辑政策
VPS安全指南

VPS安全加固指南:2026年保护Linux服务器

作者:CloudPicked评测团队 · 最后更新:2026年9月

VPS Security Hardening
摘要:大多数云提供商新部署的VPS端口开放范围广,通常使用密码SSH认证。本指南介绍您可以在一小时内完成的基本安全加固步骤。

Shodan等互联网扫描仪和大量自动化机器人全天候探测配置错误的VPS服务器。如果在部署新VPS后不进行适当的安全加固,可能在几小时内就会被入侵。本指南涵盖了Linux VPS(Ubuntu/Debian)部署后应立即执行的基础到高级安全加固步骤。

1. 首先更新系统

在做任何其他操作之前,将所有软件包更新到最新版本以修复已知漏洞:

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y

对于CentOS/AlmaLinux/Rocky Linux:

sudo dnf update -y
sudo dnf upgrade -y

配置自动安全更新:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

2. 创建新用户并禁用Root登录

直接以root身份登录是最常见的安全漏洞之一。root是攻击者首先尝试的用户名。

创建新的sudo用户

# 创建新用户(将yourusername替换为所需用户名)
sudo adduser yourusername

# 添加到sudo组
sudo usermod -aG sudo yourusername

# 在禁用root之前,先测试新用户登录

禁用Root SSH登录

sudo nano /etc/ssh/sshd_config

# 找到并修改:
PermitRootLogin no

sudo systemctl restart sshd
警告:在禁用root访问和密码认证之前,务必确认新用户可以成功登录,否则可能将自己锁在服务器外。

3. 设置SSH密钥认证

SSH密钥比密码强大得多,使用几乎不可能被暴力破解的加密密钥对。

在本地机器上生成SSH密钥

# 生成ed25519密钥(推荐——比RSA 4096更安全更快)
ssh-keygen -t ed25519 -C "[email protected]"

# 密钥保存在~/.ssh/id_ed25519(私钥)和~/.ssh/id_ed25519.pub(公钥)

将公钥复制到服务器

# 方法1:使用ssh-copy-id(最简单)
ssh-copy-id -i ~/.ssh/id_ed25519.pub yourusername@YOUR_SERVER_IP

# 方法2:手动复制
cat ~/.ssh/id_ed25519.pub | ssh yourusername@YOUR_SERVER_IP \
  "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

禁用密码认证

确认密钥登录正常工作后,禁用密码认证:

sudo nano /etc/ssh/sshd_config

# 修改或添加:
PasswordAuthentication no
PubkeyAuthentication yes

sudo systemctl restart sshd

4. 更改SSH端口

端口22是所有扫描仪都知道的默认端口。更改为非标准端口可以大幅减少自动化暴力破解的噪音。

sudo nano /etc/ssh/sshd_config

# 更改为自定义端口(如2222或高端口49152-65535)
Port 2222

sudo systemctl restart sshd
重要:重启SSH之前,先在防火墙中开放新端口,否则将锁在服务器外。

5. 配置UFW防火墙

UFW(简单防火墙)是iptables的易用前端。只开放实际需要的端口。

sudo apt install ufw -y

# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许SSH端口(关键!)
sudo ufw allow 2222/tcp comment 'SSH自定义端口'

# 如果是Web服务器,允许Web流量
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# 启用UFW
sudo ufw enable

# 检查状态
sudo ufw status verbose

其他常用规则

# 限制SSH连接速率(防暴力破解)
sudo ufw limit 2222/tcp

# 只允许特定IP
sudo ufw allow from 1.2.3.4 to any port 2222

# 查看编号规则
sudo ufw status numbered

# 按编号删除规则
sudo ufw delete 3

6. 安装和配置fail2ban

fail2ban监控日志文件并自动封禁多次认证失败的IP,是防御暴力破解攻击的重要防线。

sudo apt install fail2ban -y

# 备份原始配置
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak

# 创建本地覆盖配置
sudo nano /etc/fail2ban/jail.local

jail.local中添加以下内容:

[DEFAULT]
bantime  = 3600      ; 封禁1小时
findtime = 600       ; 查看10分钟内的记录
maxretry = 5         ; 5次失败后封禁
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled  = true
port     = 2222      ; 与自定义SSH端口匹配
logpath  = /var/log/auth.log
maxretry = 3         ; SSH更严格
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban

# 检查状态
sudo fail2ban-client status sshd

# 解封IP
sudo fail2ban-client set sshd unbanip 1.2.3.4

7. 禁用不必要的服务

每个运行中的服务都是额外的攻击面。审计并禁用不需要的服务:

# 列出运行中的服务
sudo systemctl list-units --type=service --state=running

# 列出开放的端口
sudo ss -tlnp

# 禁用不需要的服务
sudo systemctl disable --now avahi-daemon

8. 加固内核参数(sysctl)

sudo nano /etc/sysctl.d/99-security.conf

添加:

# 防IP欺骗
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 禁用IP转发(非路由器)
net.ipv4.ip_forward = 0

# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# 禁用源路由
net.ipv4.conf.all.accept_source_route = 0

# 记录可疑数据包
net.ipv4.conf.all.log_martians = 1

# SYN洪水保护
net.ipv4.tcp_syncookies = 1
sudo sysctl -p /etc/sysctl.d/99-security.conf

9. 安装安全审计工具

Lynis(安全审计)

sudo apt install lynis -y
sudo lynis audit system

Lynis生成全面的安全报告,包含加固指数评分和可操作的改进建议。

rkhunter(Rootkit检测)

sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check

10. 配置SSH双因素认证(2FA)

添加基于TOTP的2FA(如Google Authenticator)作为额外的SSH认证层:

sudo apt install libpam-google-authenticator -y
google-authenticator

编辑PAM配置:

sudo nano /etc/pam.d/sshd
# 添加:
auth required pam_google_authenticator.so

编辑sshd_config:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

sudo systemctl restart sshd

11. 日志监控

# 查看近期失败登录
sudo lastb | head -20

# 查看成功登录
sudo last | head -20

# 实时监控认证日志
sudo tail -f /var/log/auth.log | grep -i "failed\|invalid\|error"

寻找可靠的VPS服务商? AsiaGB.com和Bangmod Cloud均提供泰国本地服务器,配备DirectAdmin控制面板和24小时技术支持。

查看AsiaGB VPS   查看Bangmod Cloud

安全加固清单

任务优先级预计时间
更新系统软件包关键5分钟
创建sudo用户+禁用root关键5分钟
SSH密钥认证关键10分钟
更改SSH端口中等2分钟
配置UFW防火墙关键10分钟
安装fail2ban10分钟
禁用不必要服务中等10分钟
内核加固(sysctl)中等5分钟
自动安全更新5分钟
SSH双因素认证10分钟
安全审计(Lynis)推荐15分钟

常见问题(FAQ)

为什么需要对VPS进行安全加固?

新部署的VPS通常端口开放范围广,使用密码身份验证,容易受到24小时扫描互联网的暴力破解攻击和自动漏洞利用的威胁。安全加固将攻击面缩减到必要的最小值。

SSH密钥和密码有什么区别?

SSH密钥使用公私密钥对(ed25519=256位),几乎不可能被暴力破解,而密码可以在几小时甚至几分钟内被现代硬件破解。

fail2ban是如何工作的?

fail2ban监控日志文件(如/var/log/auth.log),自动封禁超过失败登录次数阈值的IP地址,通过向iptables/nftables添加封锁规则来实现。

应该禁用root登录吗?

是的,应始终禁用。root是攻击者最先尝试的用户名。创建专用的sudo用户并禁用root SSH访问,使用sudo执行管理任务。

更改SSH端口能提高安全性吗?

更改SSH端口本身不是真正的安全控制(通过隐藏实现安全),但可以显著减少自动化暴力破解的干扰,使日志更清晰。应与密钥认证和fail2ban结合使用以获得真正的保护。

总结

VPS安全加固并不复杂,不到一小时就能完成,但对于防止服务器被入侵与保持安全之间的差异至关重要。从优先级最高的事项开始:更新系统、设置SSH密钥认证、启用防火墙,然后逐步添加其他安全层。

如果您正在寻找可靠的VPS服务商,AsiaGB.com提供泰国本地服务器,配备DirectAdmin和泰语支持;Bangmod Cloud是另一个价格具竞争力的泰国VPS选择。