切換選單
切換偏好設定選單
切換個人選單
尚未登入
若您做出任何編輯,會公開您的 IP 位址。

搬瓦工 VPS 安全基線加固(Debian/Ubuntu)一鍵審計與最小化暴露面指南

出自md5.pw
於 2026年2月17日 (二) 18:46 由 Smithmikerun留言 | 貢獻 所做的修訂 (创建页面,内容为“= 搬瓦工 VPS 安全基线加固(Debian/Ubuntu)一键审计与最小化暴露面指南 = == 一、文章目标 == 本文用于帮助 BandwagonHost(BWH)用户在不依赖复杂安全套件的情况下,快速完成 VPS 的基础安全加固,降低被扫描、爆破、误配置导致失联的风险。 == 二、适用范围与不适用范围 == '''适用范围:''' # 新购 VPS(建议开机后 30 分钟内完成) # 仅有 SSH 远程管理需求…”)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

搬瓦工 VPS 安全基線加固(Debian/Ubuntu)一鍵審計與最小化暴露面指南

一、文章目標

本文用於幫助 BandwagonHost(BWH)用戶在不依賴複雜安全套件的情況下,快速完成 VPS 的基礎安全加固,降低被掃描、爆破、誤配置導致失聯的風險。

二、適用範圍與不適用範圍

適用範圍:

  1. 新購 VPS(建議開機後 30 分鐘內完成)
  2. 僅有 SSH 遠程管理需求的 Debian/Ubuntu 伺服器
  3. 準備部署網站、代理、監控、自動化任務前的基線準備

不適用範圍:

  1. 已有複雜生產業務且變更窗口不足的機器(先做快照再操作)
  2. 依賴密碼登錄且暫未準備公鑰的場景
  3. 不具備 KiwiVM VNC 登錄兜底能力的用戶

三、變更前準備(強烈建議)

  1. 在 KiwiVM 創建一次快照
  2. 記錄當前 SSH 埠、root 密碼、已開放埠
  3. 打開 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

判定建議:

  1. 22 埠對公網開放且密碼登錄開啟,屬於高風險
  2. 若出現異常國家/地區登錄記錄,先改密鑰和登錄策略
  3. 若伺服器只用於單應用,不應存在大量無關監聽埠

五、最小暴露面加固步驟

步驟 1:創建普通 sudo 管理員

adduser opsadmin
usermod -aG sudo opsadmin
id opsadmin

說明:

  1. 後續儘量不用 root 直連
  2. 若你使用的是 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

七、驗證清單(變更後必須做)

  1. 新開終端可用公鑰成功登錄
  2. root 密碼登錄失敗(符合預期)
  3. ufw status 只開放必要埠
  4. fail2ban-client status sshd 正常有 jail
  5. KiwiVM VNC 仍可進入系統

八、回滾與救援(防止鎖死)

若 SSH 斷連:

  1. 通過 KiwiVM VNC 登錄
  2. 臨時關閉 UFW:ufw disable
  3. 回滾 SSH 配置並重啟 ssh 服務
  4. 使用本地終端重新驗證後再逐步加固

可用回滾命令:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bad
# 手动修正后
sshd -t && systemctl restart ssh || systemctl restart sshd
ufw disable

九、常見誤區

  1. 先關密碼登錄再驗證公鑰,導致直接失聯
  2. 改了 SSH 埠但 UFW 未放行新埠
  3. PermitRootLogin 寫成錯誤值導致 sshd 啟動失敗
  4. 誤以為快照等於備份,未做異地數據備份

十、結論

對大多數 BWH 用戶,完成本指南後可以顯著降低 SSH 暴露風險。建議每月執行一次審計腳本,並在重大上線前複查埠、登錄策略和封禁策略。