VPS 安全加固:给你的服务器装上防盗门

当你买好 VPS 的那一刻,全世界的扫描脚本可能就已经盯上你了。如果你查看 SSH 登录日志,可能会发现每天有成千上万次失败的登录尝试。

我们需要做三件最基础也最有效的事:改端口、禁 Root 密码登录、开防火墙

1. 修改 SSH 默认端口

默认的 SSH 端口是 22,黑客扫描大多只扫这个端口。把它改成一个冷门端口(比如 54321),能避开 99% 的自动化扫描。

  1. 编辑配置文件:
    nano /etc/ssh/sshd_config
    
  2. 修改端口: 找到 #Port 22 这一行,去掉前面的 # 号,把 22 改成 54321(或者 10000-65535 之间的任意数字)。
  3. 重启 SSH 服务:
    systemctl restart sshd
    
  4. ⚠️ 重要提示: 下次连接 SSH 时,记得在软件里把端口改成你设置的新端口!

2. 使用密钥登录(禁用密码)

密码哪怕再复杂也可能被暴力破解,但“密钥”文件几乎无法被破解。

  1. 生成密钥对(在你的电脑上):
    • Windows (PowerShell): ssh-keygen -t rsa
    • Mac/Linux: 打开终端输入 ssh-keygen -t rsa
    • 一路回车,会在 ~/.ssh/ 目录下生成 id_rsa (私钥) 和 id_rsa.pub (公钥)。
  2. 上传公钥到 VPS: 在你的电脑终端执行:
    ssh-copy-id -p 54321 root@你的IP
    
    (注意:-p 后面跟的是你刚才改过的端口号)
  3. 禁用密码登录(在 VPS 上): 再次编辑 /etc/ssh/sshd_config
    • 找到 PasswordAuthentication yes,改为 no
    • 找到 PubkeyAuthentication yes,确保它是 yes
  4. 重启 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 点自动运行这个脚本。

  1. 输入 crontab -e
  2. 在最后一行添加:
    0 3 * * * /bin/bash /root/backup.sh
    
  3. 保存退出。

4. 进阶:同步到 Google Drive / OneDrive

单纯备份在 VPS 本地是不够的(VPS 挂了备份也没了)。 推荐使用 Rclone 工具。

  1. 安装 Rclone: curl https://rclone.org/install.sh | sudo bash
  2. 配置: 输入 rclone config,按照提示绑定你的 Google Drive 或 OneDrive。
  3. 修改上面的脚本: 在脚本最后加一行:
    rclone copy $DEST_DIR/backup_$DATE.tar.gz remote:vps_backup
    
    (其中 remote 是你在 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
  • 作用: 查看所有正在监听的端口。如果你发现开启了一些奇怪的端口,就要小心了。