VPS 安全加固:给你的服务器装上防盗门
当你买好 VPS 的那一刻,全世界的扫描脚本可能就已经盯上你了。如果你查看 SSH 登录日志,可能会发现每天有成千上万次失败的登录尝试。
我们需要做三件最基础也最有效的事:改端口、禁 Root 密码登录、开防火墙。
1. 修改 SSH 默认端口
默认的 SSH 端口是 22,黑客扫描大多只扫这个端口。把它改成一个冷门端口(比如 54321),能避开 99% 的自动化扫描。
- 编辑配置文件:
nano /etc/ssh/sshd_config - 修改端口:
找到
#Port 22这一行,去掉前面的#号,把22改成54321(或者 10000-65535 之间的任意数字)。 - 重启 SSH 服务:
systemctl restart sshd - ⚠️ 重要提示: 下次连接 SSH 时,记得在软件里把端口改成你设置的新端口!
2. 使用密钥登录(禁用密码)
密码哪怕再复杂也可能被暴力破解,但“密钥”文件几乎无法被破解。
- 生成密钥对(在你的电脑上):
- Windows (PowerShell):
ssh-keygen -t rsa - Mac/Linux: 打开终端输入
ssh-keygen -t rsa - 一路回车,会在
~/.ssh/目录下生成id_rsa(私钥) 和id_rsa.pub(公钥)。
- Windows (PowerShell):
- 上传公钥到 VPS:
在你的电脑终端执行:
(注意:ssh-copy-id -p 54321 root@你的IP-p后面跟的是你刚才改过的端口号) - 禁用密码登录(在 VPS 上):
再次编辑
/etc/ssh/sshd_config:- 找到
PasswordAuthentication yes,改为no - 找到
PubkeyAuthentication yes,确保它是yes
- 找到
- 重启 SSH:
systemctl restart sshd
以后,只有拥有那个私钥文件的电脑才能登录这台 VPS。
3. 开启防火墙 (UFW)
Debian/Ubuntu 推荐使用 UFW (Uncomplicated Firewall),非常简单。
# 安装
apt install ufw -y
# ⚠️ 先放行 SSH 端口(否则你会被锁在外面!)
ufw allow 54321/tcp
# 放行网页端口
ufw allow 80/tcp
ufw allow 443/tcp
# 启动防火墙
ufw enable
提示:输入 y 确认启动。现在,除了你允许的端口,其他端口一律被封锁。
📄 4.2 数据备份:VPS 的后悔药
建议保存路径:
/wiki/advanced/backup.md
数据备份:数据无价,谨慎操作
VPS 商家可能会跑路,硬盘可能会损坏,你自己可能会误删文件(rm -rf)。没有备份,一切归零。
这里介绍最简单的备份策略:打包+上传到网盘。
1. 手动打包备份
假设你的 Docker 数据都在 /root/data 目录下。
# 将整个 data 目录打包成 backup.tar.gz
tar -czvf backup.tar.gz /root/data
2. 自动化备份脚本
我们可以写一个简单的脚本,每天凌晨把数据打包。
创建脚本文件:nano /root/backup.sh
#!/bin/bash
# 设置备份目录
BACKUP_DIR="/root/data"
# 设置备份保存路径
DEST_DIR="/root/backup"
# 获取当前日期
DATE=$(date +%Y%m%d)
# 创建备份文件夹
mkdir -p $DEST_DIR
# 打包
echo "开始备份..."
tar -czf $DEST_DIR/backup_$DATE.tar.gz $BACKUP_DIR
# 删除 7 天前的旧备份(防止硬盘塞满)
find $DEST_DIR -name "backup_*.tar.gz" -mtime +7 -exec rm {} \;
echo "备份完成!"
赋予权限:
chmod +x /root/backup.sh
3. 设置定时任务 (Cron)
让系统每天凌晨 3 点自动运行这个脚本。
- 输入
crontab -e - 在最后一行添加:
0 3 * * * /bin/bash /root/backup.sh - 保存退出。
4. 进阶:同步到 Google Drive / OneDrive
单纯备份在 VPS 本地是不够的(VPS 挂了备份也没了)。 推荐使用 Rclone 工具。
- 安装 Rclone:
curl https://rclone.org/install.sh | sudo bash - 配置: 输入
rclone config,按照提示绑定你的 Google Drive 或 OneDrive。 - 修改上面的脚本: 在脚本最后加一行:
(其中rclone copy $DEST_DIR/backup_$DATE.tar.gz remote:vps_backupremote是你在 rclone 里起的名字)
📄 4.3 常用维护与监控命令
建议保存路径:
/wiki/advanced/monitor.md
常用维护与监控:看看服务器累不累
VPS 运行久了,偶尔卡顿或者磁盘满了怎么办?你需要这些命令来体检。
1. 磁盘空间满了?
- 命令:
df -h - 作用: 查看磁盘使用率。如果 Use% 接近 100%,服务就会崩溃。
- 进阶: 如果不知道哪里占用了空间,用
ncdu工具(apt install ncdu然后运行ncdu),它能可视化显示哪个文件夹最大。
2. 内存不够了?
- 命令:
free -m - 作用: 查看内存使用情况。
total: 总内存used: 已用available: 剩余可用
- 如果
available很小,你的网站可能会经常打不开,考虑增加 Swap(虚拟内存)或升级 VPS。
3. CPU 跑满了?
- 命令:
htop - 作用: 类似 Windows 的任务管理器。
- 如果没有这个命令,先安装:
apt install htop。 - 进去后可以看到彩色的进度条。按
F10退出。
- 如果没有这个命令,先安装:
4. 谁在连我?
- 命令:
netstat -tunlp - 作用: 查看所有正在监听的端口。如果你发现开启了一些奇怪的端口,就要小心了。