一、新购 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
评论