搬瓦工 VPS 安全基線加固(Debian/Ubuntu)一鍵審計與最小化暴露面指南
出自md5.pw
更多語言
更多操作
搬瓦工 VPS 安全基線加固(Debian/Ubuntu)一鍵審計與最小化暴露面指南
一、文章目標
本文用於幫助 BandwagonHost(BWH)用戶在不依賴複雜安全套件的情況下,快速完成 VPS 的基礎安全加固,降低被掃描、爆破、誤配置導致失聯的風險。
二、適用範圍與不適用範圍
適用範圍:
- 新購 VPS(建議開機後 30 分鐘內完成)
- 僅有 SSH 遠程管理需求的 Debian/Ubuntu 服務器
- 準備部署網站、代理、監控、自動化任務前的基線準備
不適用範圍:
- 已有複雜生產業務且變更窗口不足的機器(先做快照再操作)
- 依賴密碼登錄且暫未準備公鑰的場景
- 不具備 KiwiVM VNC 登錄兜底能力的用戶
三、變更前準備(強烈建議)
- 在 KiwiVM 創建一次快照
- 記錄當前 SSH 端口、root 密碼、已開放端口
- 打開 KiwiVM 的 VNC(Interactive Shell)頁面備用
四、5 分鐘基礎審計(先看現狀)
# 系统信息 uname -a lsb_release -a || cat /etc/os-release # 监听端口与进程 ss -tulpen # 最近登录来源 last -a | head -n 20 # SSH 当前关键配置 grep -E '^(Port|PermitRootLogin|PasswordAuthentication|PubkeyAuthentication|MaxAuthTries)' /etc/ssh/sshd_config # 防火墙状态(若未安装 ufw 会报错,可忽略) ufw status verbose || true
判定建議:
- 若
22端口對公網開放且密碼登錄開啟,屬於高風險 - 若出現異常國家/地區登錄記錄,先改密鑰和登錄策略
- 若服務器只用於單應用,不應存在大量無關監聽端口
五、最小暴露面加固步驟
步驟 1:創建普通 sudo 管理員
adduser opsadmin usermod -aG sudo opsadmin id opsadmin
說明:
- 後續儘量不用 root 直連
- 若你使用的是 Debian 舊版,sudo 組可能是
wheel,需按實際調整
步驟 2:配置 SSH 公鑰登錄
在本地執行:
ssh-keygen -t ed25519 -C "bwh-prod" ssh-copy-id -i ~/.ssh/id_ed25519.pub opsadmin@<你的VPSIP>
服務器側驗證:
ls -l /home/opsadmin/.ssh/authorized_keys
步驟 3:收緊 SSH 配置
編輯 /etc/ssh/sshd_config,確保以下項:
PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes MaxAuthTries 3
如需改端口(可選):
Port 22222
應用配置:
sshd -t && systemctl restart ssh || systemctl restart sshd systemctl status ssh --no-pager || systemctl status sshd --no-pager
步驟 4:啟用 UFW 最小規則集
apt update && apt install -y ufw # 默认拒绝入站,允许出站 ufw default deny incoming ufw default allow outgoing # 放行 SSH 端口(如果你改了端口,改成对应端口) ufw allow 22222/tcp # 如需网站服务再开放 # ufw allow 80/tcp # ufw allow 443/tcp ufw enable ufw status numbered
步驟 5:啟用 Fail2ban
apt install -y fail2ban cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
編輯 /etc/fail2ban/jail.local,至少確認:
[sshd] enabled = true port = 22222 maxretry = 5 findtime = 10m bantime = 1h
啟動與檢查:
systemctl enable --now fail2ban fail2ban-client status fail2ban-client status sshd
六、一鍵審計腳本(可重複執行)
cat >/usr/local/bin/bwh-sec-audit.sh <<'SH' #!/usr/bin/env bash set -euo pipefail echo "===== 基础信息 =====" uname -a cat /etc/os-release | sed -n '1,6p' echo "\n===== SSH 配置 =====" grep -E '^(Port|PermitRootLogin|PasswordAuthentication|PubkeyAuthentication|MaxAuthTries)' /etc/ssh/sshd_config || true echo "\n===== 开放端口 =====" ss -tulpen | head -n 50 echo "\n===== UFW 状态 =====" ufw status verbose || true echo "\n===== Fail2ban 状态 =====" fail2ban-client status || true echo "\n===== 最近登录 =====" last -a | head -n 15 SH chmod +x /usr/local/bin/bwh-sec-audit.sh /usr/local/bin/bwh-sec-audit.sh
七、驗證清單(變更後必須做)
- 新開終端可用公鑰成功登錄
- root 密碼登錄失敗(符合預期)
ufw status只開放必要端口fail2ban-client status sshd正常有 jail- KiwiVM VNC 仍可進入系統
八、回滾與救援(防止鎖死)
若 SSH 斷連:
- 通過 KiwiVM VNC 登錄
- 臨時關閉 UFW:
ufw disable - 回滾 SSH 配置並重啟 ssh 服務
- 使用本地終端重新驗證後再逐步加固
可用回滾命令:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bad # 手动修正后 sshd -t && systemctl restart ssh || systemctl restart sshd ufw disable
九、常見誤區
- 先關密碼登錄再驗證公鑰,導致直接失聯
- 改了 SSH 端口但 UFW 未放行新端口
- 把
PermitRootLogin寫成錯誤值導致 sshd 啟動失敗 - 誤以為快照等於備份,未做異地數據備份
十、結論
對大多數 BWH 用戶,完成本指南後可以顯著降低 SSH 暴露風險。建議每月執行一次審計腳本,並在重大上線前複查端口、登錄策略和封禁策略。