一、新购 VPS 为何必须立即进行安全基线加固?

任何一台刚在云服务商(如腾讯云、阿里云、DigitalOcean、Linode 或各类海外 VPS)开通并分配了公网 IPv4 的 Linux 主机,在接入公网的数分钟之内,就会遭到全网自动化僵尸网络(Botnet)与黑客扫描器的无休止探测。

通过检查 /var/log/auth.log(Ubuntu/Debian)或 /var/log/secure(CentOS/RHEL),你会发现成千上万条针对 root、admin、test 等常见账户的 SSH 密码字典爆破记录。如果不加防护直接采用默认的 22 端口与弱口令,服务器沦为黑客肉鸡、被植入挖矿木马或勒索病毒只是时间问题。

本文将系统介绍一套经过生产环境验证的 Linux VPS 极简安全加固基线,只需 10 分钟配置,即可将绝大多数自动化扫描与暴力破解威胁拒之门外。

二、五大核心安全基线加固流程概览

防御层级 加固措施 防御目标与效果
身份权限层 新建普通 Sudo 运维用户,禁用 Root 直登 消除最高权限账号直接暴露在公网的单点破发风险
网络接入层 将默认 22 端口迁移至高位非常规端口(如 22222) 直接过滤全网 95% 以上针对默认端口的粗放盲扫爬虫
鉴权认证层 强制使用 ED25519 现代高强度椭圆曲线密钥,彻底禁用密码登录 彻底杜绝任何形式的字典爆破、撞库与密码嗅探
流量过滤层 配置 UFW 防火墙:默认丢弃所有入站(Default Deny),仅放行特定服务 防止未授权 Docker 端口或测试服务意外裸奔至公网
入侵阻断层 部署 Fail2ban 实时日志巡检,自动拉黑多次尝试失败的恶意来源 IP 对顽固扫描者实施动态封禁,节省系统带宽与 CPU 资源

三、实战操作 1:创建普通管理用户并配置 Sudo

切忌长期以 root 身份直接跑业务与开发。先登录 root 终端,创建一个专属的运维账号(以 deploy 为例):

# 1. 创建普通用户
adduser deploy

# 2. 将用户加入 sudo 高级管理组
usermod -aG sudo deploy

四、实战操作 2:配置 ED25519 高强度 SSH 密钥对

相较于传统的 2048/4096 位 RSA 密钥,Ed25519 是目前业界公认最安全、签名速度极快且密钥长度极短的椭圆曲线算法。

1. 在本地电脑生成密钥对

在你的本地终端(macOS、Linux 或 Windows PowerShell)中执行:

ssh-keygen -t ed25519 -C "admin@vps"

一路回车,将在 ~/.ssh/ 目录下生成私钥 id_ed25519 与公钥 id_ed25519.pub。

2. 部署公钥至 VPS 服务器

# 本地一键分发公钥至 deploy 用户
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@你的服务器IP

五、实战操作 3:强化 SSH 守护进程配置(sshd_config)

登录服务器,编辑 SSH 主配置文件:

sudo nano /etc/ssh/sshd_config.d/99-security.conf

写入以下强安全基线策略:

# 迁移默认 22 端口为自定义高位端口(例如 22222)
Port 22222

# 严禁 Root 用户直接通过 SSH 登录
PermitRootLogin no

# 彻底禁用密码认证,仅允许公钥登录
PasswordAuthentication no
ChallengeResponseAuthentication no

# 限制单次连接最大尝试鉴权次数
MaxAuthTries 3

# 保持空闲连接超时自动断开(防止会话挂死)
ClientAliveInterval 300
ClientAliveCountMax 2

防断连黄金法则:在执行 sudo systemctl restart sshd 重启 SSH 之前,绝对不要关闭当前的 SSH 终端窗口!先在本地新开一个窗口测试:ssh -p 22222 deploy@你的服务器IP,确认能成功通过密钥免密登入后,再放心地关闭旧会话。

六、实战操作 4:启用 UFW 防火墙最小权限策略

Ubuntu/Debian 自带的 UFW(Uncomplicated Firewall)是极简好用的前端防火墙工具:

# 1. 默认策略:阻断所有外来入站,允许所有外出
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 2. 放行刚才修改的 SSH 自定义端口(千万不要忘了放行,否则会被关在门外)
sudo ufw allow 22222/tcp comment 'SSH Port'

# 3. 按需放行 Web 核心服务端口
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# 4. 启用防火墙并确认规则
sudo ufw enable
sudo ufw status verbose

七、实战操作 5:部署 Fail2ban 自动防御系统

虽然我们已经禁用了密码登录,但恶意扫描器频繁发起 SSH 握手依然会无谓消耗系统资源。Fail2ban 能够自动监控系统安全日志,发现非法行为后自动在 Linux 内核层(iptables / nftables)下发阻断规则。

1. 安装与配置文件复制

sudo apt update && sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

2. 启用 SSHD 专属防护 Jail

在配置文件中找到 [sshd] 小节,调整参数:

[sshd]
enabled = true
port = 22222
mode = aggressive
logpath = %(sshd_log)s
maxretry = 3
findtime = 600
bantime = 86400

上述规则表示:在 10 分钟(600秒)内,如果同一个 IP 连续尝试握手或鉴权失败超过 3 次,系统将立即把该 IP 拉黑 24 小时(86400秒)。

3. 启动服务与查看拦截战果

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

# 查看当前被拉黑的恶意 IP 清单
sudo fail2ban-client status sshd

不出几小时,你就会在 Banned IP list 中看到大量被自动封禁在门外的公网扫描节点,服务器系统日志将变得前所未有地清爽与安静。

八、总结与运维安全进阶推荐

通过“普通用户隔离 + ED25519 强密钥 + 端口迁移 + UFW 最小放行 + Fail2ban 动态熔断”这套组合拳,我们用极小的系统开销构建起了一套坚不可摧的底层安全防线。

更多现代私网组网、端口保护与面板运维指南:
• Tailscale + Headscale 私有组网实战:零公网 IP 打通全平台局域网互联
• Cloudflare Tunnel 内网穿透实战:免公网 IP、免端口映射安全发布 NAS/本地服务
• Docker 搭建 RustDesk 自建远程桌面中继服务器:告别向日葵/ToDesk 限速
• Ollama + Open WebUI 极简私有化部署:在轻量 VPS/NAS 打造专属 ChatGPT