VPS安全加固指南:2026年保护Linux服务器
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
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
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分钟 |
| 安装fail2ban | 高 | 10分钟 |
| 禁用不必要服务 | 中等 | 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选择。