VPS 到手后必做的 7 项安全配置:从 SSH 加固到 Fail2Ban 实战

VPS到手后的第一件事不是装环境,而是做安全加固。本文用7个可复制的配置步骤教你:SSH密钥登录、改端口、UFW防火墙、Fail2Ban、普通用户+sudo、自动安全更新、入侵检测。完整Linux服务器安全指南。

把 VPS 买回来、系统装好、SSH 登上去之后,绝大多数人的第一反应是:赶紧装环境。但在这个步骤之前,有一件比装任何软件都更重要的事——做安全加固。不是危言耸听:一台裸机状态的 VPS 在接入公网后几小时内就会被自动化扫描工具发现,然后开始承受不间断的暴力破解尝试。

下面这 7 项安全配置,按从紧急到可选的顺序排列。每一行命令都可以直接复制粘贴使用。全部做完大约需要 15 分钟,但能让你的 VPS 安全水平从出厂裸奔提升到业界基本线。

💡 前置条件:本文基于 Debian 12 / Ubuntu 22.04 系统。CentOS 已停止维护,如果你还在用,建议尽快迁移。如果你还没有 VPS,可以先看看站内的零基础用 VPS 搭建本地大模型教程了解基础操作。

🔒 配置一:SSH 密钥登录 + 关闭密码登录(强烈建议第一时间做)

密码登录是 VPS 被攻破的头号入口。自动化脚本每分钟扫描成千上万个 IP,尝试 root + 常见密码组合。哪怕你设了一个 16 位复杂密码,也只是延缓被破解的时间,而不是杜绝风险。SSH 密钥登录使用非对称加密,没有私钥文件的人无法登录——这才是正确的做法。

操作分两步:

# 第一步:在本地机器生成密钥对(如果你还没有)
ssh-keygen -t ed25519 -C “your_email@example.com”

# 第二步:把公钥传到 VPS
ssh-copy-id -p 22 root@你的_VPS_IP

# 第三步:在 VPS 上编辑 SSH 配置
sudo nano /etc/ssh/sshd_config

# 修改以下三个参数:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes

# 重启 SSH 服务
sudo systemctl restart sshd

重要提示:关闭密码登录后,请务必先在另一个终端保持当前 SSH 连接不关闭,新开一个窗口测试密钥登录是否正常。等确定新连接成功后,再关闭旧窗口。否则一旦配置出错你就被自己锁在外面了。

🔒 配置二:修改 SSH 默认端口

SSH 默认端口 22 是每一个扫描脚本的必扫端口。把它改到 1024–65535 之间的一个不常用端口,可以瞬间过滤掉 99% 的自动化扫描流量。配合配置一使用效果最好。

# 编辑 /etc/ssh/sshd_config,找到 #Port 22,改为:
Port 23456 # 注意:选一个你自己记得住的端口

# 修改后不要忘了更新防火墙规则(见下一项)
sudo systemctl restart sshd

改了端口后,每次 SSH 连接时要用 ssh -p 23456 user@host 来登录。如果你用 SSH 配置文件(~/.ssh/config),在里面加一行 Port 即可。

🔒 配置三:配置 UFW 防火墙(只放行必要端口)

UFW(Uncomplicated Firewall)是 iptables 的前端封装,让防火墙配置变成几句话的事。当前原则是:默认拒绝所有入站流量,只放行你明确需要的端口。

# 先设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 放行 SSH(用你改后的端口号)
sudo ufw allow 23456/tcp comment ‘SSH’

# 放行 HTTP/HTTPS(如果建站)
sudo ufw allow 80/tcp comment ‘HTTP’
sudo ufw allow 443/tcp comment ‘HTTPS’

# 启用防火墙
sudo ufw enable

# 查看状态
sudo ufw status verbose

刚启动 UFW 时如果当前 SSH 连接用的是旧端口,记得先放行才启用,或者直接在另一个终端操作。

🔒 配置四:安装并配置 Fail2Ban

Fail2Ban 是一个日志分析工具,它会监控 /var/log/auth.log 等日志文件,如果发现同一个 IP 在短时间内多次登录失败,就自动将该 IP 加入防火墙黑名单一段时间。这是对付暴力破解最有效的工具。

# 安装
sudo apt install fail2ban -y

# 创建本地配置文件(覆盖默认)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# 编辑 /etc/fail2ban/jail.local,找到 [sshd] 段落,确保以下配置生效:
[sshd]
enabled = true
port = 23456 # 改为你的 SSH 端口
maxretry = 5 # 5 次失败即封禁
bantime = 3600 # 封禁 1 小时(3600 秒)
findtime = 600 # 10 分钟内计数

# 重启服务
sudo systemctl restart fail2ban

# 查看被封禁的 IP
sudo fail2ban-client status sshd

安装 fail2ban 后你会立刻看到效果:日志里之前每天几百次失败尝试会瞬间归零。如果你用的是 1Panel 或宝塔面板,面板自身也集成了类似功能,但原生 fail2ban 更轻量、更可控。

🔒 配置五:创建普通用户并配置 sudo

不要在 root 用户下进行日常操作。正确的做法是创建一个普通用户,日常登录用这个用户,需要管理员权限时用 sudo。这能避免误操作(比如 rm -rf 打错路径)造成的毁灭性后果,也能限制黑客即使攻破了你的普通用户账户,也无法直接获得 root 权限。

# 创建新用户
sudo adduser adminuser

# 将用户加入 sudo 组
sudo usermod -aG sudo adminuser

# 测试:用新用户登录,然后执行 sudo whoami
# 应该返回 “root”

大部分 Linux 发行版默认允许 sudo 组成员执行所有管理员命令。如果你需要更精细的权限控制,可以编辑 /etc/sudoers 文件设置具体规则。

🔒 配置六:配置自动安全更新

漏洞总是在补丁发布之后被黑客利用得最快。很多 0day 攻击在官方修复后的 24–48 小时内就会有利用脚本出现。配置无人值守更新(unattended-upgrades),让系统自动安装安全补丁,是低投入高回报的措施。

# 安装
sudo apt install unattended-upgrades -y

# 启用自动更新
sudo dpkg-reconfigure –priority=low unattended-upgrades

# 或者手动编辑配置文件
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

# 确保以下行未被注释:
Unattended-Upgrade::Allowed-Origins {
“${distro_id}:${distro_codename}-security”;
};

# 可选:设置自动重启(如果内核更新后需要)
Unattended-Upgrade::Automatic-Reboot “true”;
Unattended-Upgrade::Automatic-Reboot-Time “03:00”;

配置完成后,系统会在每天的 apt 更新检查周期中自动安装安全补丁。你可以在 /var/log/unattended-upgrades/ 下查看日志确认工作状态。

🔒 配置七(进阶):安装并配置审计和入侵检测

如果你跑的是生产环境或面向用户的站点,前面六项只是基础,最后这一步才是区分”普通运维”和”认真运维”的分水岭。推荐两个轻量级工具:

Lynis:安全审计工具。运行一次会给你的系统安全打分,并列出改进建议。

AIDE(Advanced Intrusion Detection Environment):文件完整性检查工具。它会记录系统中关键文件的哈希值,然后在后续运行中检测哪些文件被修改了。如果服务器的某个二进制文件被替换成了后门版本,AIDE 会在几分钟内发现。

# Lynis 安全审计
sudo apt install lynis -y
sudo lynis audit system

# AIDE 文件完整性检查
sudo apt install aide -y
sudo aideinit # 初始化数据库(耗时较长)
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide.wrapper –check # 运行完整性检查

# 建议把 AIDE 检查加入 cron 每天凌晨执行
sudo crontab -e
# 添加一行:
0 4 * * * /usr/bin/aide.wrapper –check | mail -s “AIDE Report” your@email.com

⚠️ 安全配置后的日常习惯:安全不是一次性工作。建议每月登录 VPS 执行一次 sudo apt update && sudo apt upgrade,每季度跑一次 lynis audit;每次发现 SSH 日志里有可疑 IP (journalctl -u sshd | grep “Failed password”),确认是否是自己的误操作导致。养成这些习惯后,你的 VPS 基本上不会因为”基础安全问题”翻车。

常见问题解答(FAQ)

Q1:改了 SSH 端口后忘了新端口号怎么办?

如果你还有另一个登录方式(如 VNC 或商家后台的 Console),可以进去查看 /etc/ssh/sshd_config 里的 Port 配置。如果没有任何其他入口,只能通过商家后台重装系统。

Q2:Fail2Ban 会不会误封正常用户?

有可能,比如你输错几次密码就会触发。bantime 设短一点(3600 秒)可以缓解这个问题。另外可以用 sudo fail2ban-client set sshd unbanip IP_ADDRESS 手动解封。

Q3:我用了宝塔或 1Panel,还需要手动配置这些吗?

面板自带的防火墙和安全功能只能覆盖部分需求。SSH 密钥登录、改端口、系统自动更新这些操作,面板无法替代,需要手动配置。面板安全插件和系统级加固是互补关系,不是替代关系。

Q4:apt upgrade 之后 VPS 会不会不稳定?

安全更新(security 源)一般只修漏洞不改变功能行为,稳定性影响极小。但建议生产环境不要开启 auto-reboot,改用手动复查后再重启。

Q5:Lynis 扫描出来的问题都要修吗?

不需要。Lynis 给出的是一个安全参考评分——有些建议(如安装 SELinux、禁用 root 完全登录等)在个人 VPS 上成本过高收益不大。优先修复评分 WARNING 级别的项目即可。

Q6:修改 SSH 配置后无法连接怎么办?

最稳妥的做法是开两个 SSH 窗口——一个保持现有连接不动,另一个测试新配置。新建连接成功后,再关闭旧窗口。如果你只有一个人操作,不要退出当前 shell,先执行 sshd -t 测试配置文件语法是否正确。

原创文章,作者:KUKU,如若转载,请注明出处:https://wankewu.com/linux/1892.html

(0)
上一篇 17小时前

相关推荐