LUCKVM / CLOUD INFRASTRUCTURE

探索 LuckVM
首页 全球加速 域名注册 帮助中心 新闻中心 关于我们

VPS安全加固完全实战:SSH密钥/防火墙/Fail2ban/DDoS防护从入门到精通

VPS安全加固完全实战封面
 

一、为什么你的VPS需要安全加固?

很多新手刚买VPS,装完宝塔面板、上传完网站就以为万事大吉了。实际上,VPS暴露在公网24小时运行,每天都会受到成百上千次暴力破解扫描。根据安全机构统计,一台公网VPS平均在上线后22分钟内就会被首次扫描,一周内遭遇的暴力破解尝试可超过10万次。

⚠️ 真实风险案例:我们见过太多用户因为没改SSH默认端口、用了弱密码(如root/123456),VPS被暴力破解后植入挖矿病毒、勒索软件,数据库被加密删除、服务器被肉鸡发包,最终数据全失、IP被封,损失惨重。

但好消息是:VPS安全不需要高深的黑客技术,只需要按照本文的步骤花30分钟完成基础加固,就能防御99%以上的自动化攻击。本文所有命令均在Ubuntu/Debian系统上经过实测,复制粘贴即可执行,新手也能轻松操作。

二、VPS最常见的8大安全威胁

VPS常见8大安全威胁

图:VPS面临的8大安全威胁与风险等级

了解敌人才能更好防御。公网VPS面临的威胁主要有8类:

  1. SSH密码暴力破解(风险🔴极高):黑客用密码字典遍历扫描22端口,弱密码服务器几小时就能被攻破。这是最常见的攻击方式,占所有入侵的90%以上。
  2. 弱密码/默认端口(风险🔴极高):root/123456/admin这类弱密码几乎是给黑客开门;默认22端口全网扫描器都在扫。
  3. 未配置防火墙(风险🟠高):全端口暴露在公网,数据库、Redis等服务没做访问限制,直接被未授权漏洞利用。
  4. DDoS/CC攻击(风险🟠高):带宽被打满、CPU被占满,服务直接不可用,电商、游戏、金融类网站高发。
  5. Web漏洞入侵(风险🟡中):SQL注入、XSS、文件上传、WordPress插件漏洞等,拿到webshell进而提权控制服务器。
  6. 未更新系统漏洞(风险🟡中):sudo、OpenSSL、Nginx等组件曝出高危漏洞后不打补丁,被已知漏洞利用入侵。
  7. 勒索病毒加密(风险🔴极高):入侵后加密数据库和文件,要求比特币赎金,不付款数据永久无法恢复。
  8. 数据无备份(风险🔴极高):误删数据、攻击损坏、硬件故障都可能导致数据丢失,没有备份就是永久丢失。
✅ 好消息:以上所有风险,都可以通过本文的基础加固方案防御。30分钟操作,换来服务器长期安全。

三、SSH安全加固8步必做配置

SSH安全加固8步配置

图:SSH服务8项核心安全配置及对应配置项

SSH是你登录服务器的入口,也是黑客攻击的首要目标。以下8项配置务必全部完成:

⚠️ 重要提醒:修改SSH配置时,永远保持当前SSH窗口不要关闭!新开一个终端窗口测试能正常登录后再关闭旧窗口。否则一旦配置出错,你会把自己锁在服务器外面!

1创建普通用户,禁用root直接登录

直接用root登录风险极高,建议创建普通用户,需要管理员权限时用sudo提权:

# 创建新用户(把yourname替换成你的用户名)
adduser yourname
usermod -aG sudo yourname

# 测试新用户能登录后,再禁用root登录

2配置SSH密钥登录,禁用密码登录

密钥登录比密码安全100倍,几乎不可能暴力破解。本地电脑生成密钥对:

# 本地电脑执行(Windows用PowerShell/Git Bash)
ssh-keygen -t ed25519 -C "your-email@example.com"
# 公钥上传到服务器
ssh-copy-id -p 22 yourname@your-server-ip

测试密钥能登录后,再进行后续步骤。

3编辑SSH配置文件

编辑sshd_config文件,完成剩余6项配置:

sudo nano /etc/ssh/sshd_config

找到并修改以下配置项(没有就添加):

# 禁用root远程登录
PermitRootLogin no
# 启用密钥认证
PubkeyAuthentication yes
# 禁用密码认证(确认密钥登录成功后再开!)
PasswordAuthentication no
# 修改默认SSH端口(用10000-65535之间的端口,比如22222)
Port 22222
# 最大登录尝试次数
MaxAuthTries 3
# 登录超时5分钟自动断开
ClientAliveInterval 300
ClientAliveCountMax 0
# 禁用空密码
PermitEmptyPasswords no
# 禁用X11转发
X11Forwarding no
⚠️ 端口修改注意:改Port前必须先在防火墙放行新端口(见下一节UFW配置),否则重启sshd后你会连不上!

4重启SSH服务生效

# 测试配置文件语法是否正确
sudo sshd -t

# 语法没问题再重启
sudo systemctl restart sshd

重启后,不要关闭当前终端! 新开一个终端窗口,用新端口和密钥测试登录:

ssh -p 22222 yourname@your-server-ip

确认能正常登录、能sudo提权后,再关闭旧终端。

四、UFW防火墙配置:只放行需要的端口

UFW防火墙端口放行策略

图:常用端口风险等级与放行策略

防火墙是服务器的第一道大门,核心原则是:默认拒绝所有入站连接,只放行确实需要的端口。Ubuntu/Debian推荐用UFW(简单易用):

1. 安装并启用UFW

# 安装UFW(一般系统自带)
sudo apt install ufw -y

# ⚠️ 先放行SSH新端口!否则开启防火墙后自己连不上
sudo ufw allow 22222/tcp

# 放行网站端口80/443
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 默认拒绝所有入站,允许所有出站
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 启用防火墙
sudo ufw enable

# 查看状态
sudo ufw status verbose
🚫 绝不能对外开放的高危端口:
  • 3306(MySQL):默认绑定127.0.0.1即可,不要对外开放
  • 6379(Redis):必须设置密码并绑定本地,历史上多次未授权漏洞
  • 21(FTP):明文传输不安全,改用SFTP(基于SSH)
  • 25(SMTP):自建邮件服务器才需要,否则关闭
  • 其他不使用的端口:全部默认拒绝

2. CentOS/RHEL用户用firewalld

# 启动firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

# 放行端口
sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

五、Fail2ban:自动封禁暴力破解IP

Fail2ban自动防爆破配置

图:Fail2ban安装配置6步流程

防火墙放行了必要端口后,还是会有人反复尝试密码登录。Fail2ban可以监控系统日志,同一IP连续登录失败超过设定次数就自动封禁该IP一段时间,从源头阻断暴力破解。

1. 安装Fail2ban

sudo apt install fail2ban -y

2. 创建本地配置文件

不要直接改jail.conf,升级会覆盖,创建jail.local:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

3. 配置SSH防护参数

找到[sshd]段,修改或添加以下配置:

[sshd]
enabled = true
port = 22222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 86400
banaction = ufw

参数解释:

  • maxretry = 3:连续失败3次就封禁
  • findtime = 600:10分钟内的失败计数
  • bantime = 86400:封禁1天(86400秒)
  • banaction = ufw:通过UFW添加封禁规则

4. 启动Fail2ban并设置开机自启

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

5. 查看封禁状态

# 查看sshd监狱状态
sudo fail2ban-client status sshd

# 手动解封某个IP(如果封错了)
sudo fail2ban-client set sshd unbanip 1.2.3.4

# 查看封禁日志
sudo tail -f /var/log/fail2ban.log

正常情况下,你会看到每天都有不少IP被Fail2ban自动封禁,这些都是全网扫描的暴力破解尝试,Fail2ban帮你全部挡在了门外。

六、系统自动更新与服务最小化

1. 开启自动安全更新

及时打安全补丁是防御已知漏洞的关键。配置自动安全更新:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
# 选择Yes自动安装安全更新

2. 关闭不需要的服务

运行的服务越少,攻击面越小。查看监听端口:

sudo ss -tulpn

关闭不需要的服务,只保留你真正使用的(Nginx/MySQL/Redis/SSH等)。

3. 配置文件权限最小化

# 给敏感目录设置正确权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 644 /etc/passwd
chmod 600 /etc/shadow

七、DDoS防护选型:高防服务器怎么选

不同规模网站安全防护方案推荐

图:个人/企业/高安全需求场景防护方案对比

防火墙、Fail2ban能防入侵,但防不住DDoS攻击——攻击者用大量僵尸网络流量打满你的带宽,直接把你从公网"挤下去",这时候需要DDoS防护。

DDoS防护选型建议

网站规模 防护方案 推荐配置 预算参考
个人博客/小站 基础DDoS防护(免费) LuckVM基础版VPS,机房自带G级防护 $8.8/月起
企业官网/外贸站 企业级DDoS防护 标准版VPS,10Gbps+清洗能力 $26.4/月起
电商/游戏/金融 T级高防服务器 独立高防服务器,T级流量清洗+WAF $88/月起
💡 LuckVM所有节点默认提供基础DDoS防护,能抵御常见的小流量SYN洪水、UDP洪水攻击。如果你的业务容易被大流量攻击(游戏、电商、金融),建议升级高防IP或高防独立服务器,可联系客服定制防护方案。

DDoS攻击应急处理

  1. 发现服务突然不可用、带宽跑满,先检查系统负载确认是否被攻击
  2. 小流量攻击:机房基础防护通常能自动清洗,等待10-30分钟
  3. 大流量攻击:立即联系客服紧急升级高防IP或接入高防节点
  4. 攻击期间暂停非必要服务,保留带宽给核心业务
  5. 开启Cloudflare CDN隐藏源站IP,分散攻击流量

八、数据自动备份:3-2-1备份策略

所有安全防护都不是100%的,最后一道防线就是备份。记住:没有备份的数据,就等于不存在。

3-2-1备份原则:

  • 至少3份数据副本(生产+2份备份)
  • 存储在2种不同介质上
  • 至少1份异地备份(不在同一台服务器/同一个机房)

MySQL自动备份脚本

创建一个简单的数据库备份脚本:

#!/bin/bash
# 文件名: /home/yourname/backup-mysql.sh
BACKUP_DIR="/home/yourname/backups"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=7

mkdir -p $BACKUP_DIR
# 备份所有数据库
mysqldump -u root -p'你的数据库密码' --all-databases | gzip > $BACKUP_DIR/all_db_$DATE.sql.gz

# 删除7天前的备份
find $BACKUP_DIR -name "all_db_*.sql.gz" -mtime +$KEEP_DAYS -delete

设置执行权限并添加定时任务:

chmod +x /home/yourname/backup-mysql.sh

# 编辑crontab,每天凌晨3点自动备份
crontab -e
# 添加这一行:
0 3 * * * /home/yourname/backup-mysql.sh >> /var/log/mysql-backup.log 2>&1
⚠️ 异地备份很重要:只在同一台VPS上备份是不够的——如果服务器硬件故障、被删库、被勒索,连同备份一起没了。建议定期把备份下载到本地,或同步到S3/OSS/Google Drive等云存储。LuckVM支持快照备份功能,可以方便地创建整机镜像。

九、上线前安全检查清单

VPS上线前安全加固检查清单

图:VPS上线前4大类安全检查清单,共20项

配置完成后,对照以下清单逐项检查,全部打勾再正式上线:

🔐 SSH访问控制(5项)

  • ✅ 禁用了root远程登录(PermitRootLogin no)
  • ✅ 配置了SSH密钥登录,禁用密码登录
  • ✅ 修改了默认22端口为自定义高端口
  • ✅ 设置了MaxAuthTries=3限制尝试次数
  • ✅ 新端口测试登录成功,不会把自己锁在外面

🔥 防火墙配置(5项)

  • ✅ 启用了UFW/firewalld防火墙
  • ✅ 默认拒绝所有入站连接
  • ✅ 仅放行必要端口(SSH/80/443)
  • ✅ MySQL/Redis绑定127.0.0.1不对外暴露
  • ✅ 禁用了不需要的服务和端口

🛡️ 入侵防护(5项)

  • ✅ 安装Fail2ban并启用sshd防护
  • ✅ 配置了3次失败封禁1天的规则
  • ✅ 根据业务需要配置了DDoS防护
  • ✅ 开启了自动安全更新
  • ✅ 文件和目录权限设置正确

💾 数据备份(5项)

  • ✅ 配置了数据库每日自动备份
  • ✅ 备份目录不在web根目录下
  • ✅ 定期下载备份到本地/异地存储
  • ✅ 测试过备份文件可以正常恢复
  • ✅ 配置了基础监控告警(CPU/内存/磁盘)
🎯 全部打勾,恭喜!你的VPS已经能防御99%以上的自动化攻击,可以放心上线了。建议每季度复查一次安全配置,更新系统补丁,检查备份有效性。

十、常见问题FAQ

Q:修改SSH端口后连不上服务器怎么办?
A:修改SSH端口前务必先在防火墙放行新端口,并且保持当前SSH连接不要断开,新开一个窗口测试能连接后再关闭旧连接。如果确实连不上,可以通过LuckVM后台的VNC控制台登录服务器恢复配置。所有LuckVM VPS都提供VNC控制台访问方式,不会把自己真正锁死。
Q:为什么MySQL/Redis端口不能对外开放?
A:MySQL(3306)、Redis(6379)等服务如果绑定0.0.0.0对外开放,极易被暴力破解或利用未授权漏洞入侵服务器。正确做法是绑定127.0.0.1仅本地应用访问,需要远程连接时通过SSH隧道或严格限制IP白名单。
Q:VPS需要安装杀毒软件吗?
A:Linux服务器不需要安装Windows式的杀毒软件,做好基础加固比杀毒软件有效得多:保持系统更新、配置防火墙、禁用密码登录用密钥、安装Fail2ban、定期备份数据,做好这几点就足够应对绝大多数风险。
Q:被DDoS攻击了怎么办?
A:小流量攻击机房自带基础DDoS防护通常可以自动清洗;大流量攻击建议立即升级到高防IP或高防服务器套餐,LuckVM提供T级DDoS清洗能力,可联系客服紧急开通。同时建议接入Cloudflare CDN隐藏源站IP。
Q:多久需要做一次安全更新?
A:建议配置unattended-upgrades开启自动安全更新,系统会自动安装重要安全补丁。高危漏洞曝出后(如sudo、OpenSSL、Log4j等)应立即手动更新。内核更新后需要重启服务器生效。
Q:安全加固会影响网站访问速度吗?
A:不会。本文介绍的基础安全加固措施(SSH密钥、防火墙、Fail2ban、自动更新)对服务器性能影响极小,几乎可以忽略不计。DDoS防护在网络层进行流量清洗,对正常访问的速度影响也很小。
Q:多久备份一次比较合适?
A:个人博客/官网建议每天自动备份一次数据库,每周全量备份;电商/重要业务建议每6小时增量备份、每天全量备份。最重要的是:备份一定要异地存储,并且定期验证备份可以正常恢复——不能恢复的备份等于没有备份。LuckVM提供快照功能,可以方便地创建整机备份。

🔒 安全可靠的VPS从选择开始

LuckVM全系VPS默认提供基础DDoS防护、原生纯净IP、三网直连线路
月付$8.8起,支持支付宝/微信,中文客服7×12小时技术支持

立即购买安全VPS →