Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

VPS安全加固

VPS 到手第一件事不是装软件,而是安全加固:一条命令配置 SSH、防火墙和 fail2ban

新买的 VPS 应该先做哪些安全设置?本文介绍 VPS 安全加固的常见步骤,包括创建普通用户、配置 SSH 密钥登录、修改 SSH 端口、启用 UFW 防火墙、使用 fail2ban 防止暴力破解,以及运行自动化脚本前需要注意的事项。

VPS安全加固

新买的 VPS 到手后,你通常会做什么?

安装 Docker、搭建网站、部署面板,或者先把各种运行环境配置好。

但在安装这些东西之前,有一件事值得优先处理:服务器安全加固。

一台直接暴露在公网的 VPS,可能很快就会收到自动化扫描和 SSH 登录尝试。尤其是使用默认 SSH 端口、允许 root 密码登录,又没有配置防火墙的服务器,更需要尽早检查安全设置。

我以前每次拿到一台新的 VPS,都要手动修改 SSH 配置、创建普通用户、配置 UFW 防火墙、安装 fail2ban,再逐项检查有没有遗漏。熟悉 Linux 的人操作起来不算复杂,但步骤比较零散,一不小心还可能把自己锁在服务器外面。

如果你也不想每次开新服务器都重复这些操作,可以关注一下自动化 VPS 安全加固脚本。

一、为什么 VPS 到手后,应该先做安全加固?

VPS 本质上是一台可以通过网络访问的服务器。只要开放了公网端口,就可能被扫描工具、自动化机器人和其他网络流量访问。

以下几个问题尤其值得注意。

1. SSH 默认配置可能不够安全

SSH 是管理 Linux 服务器最常用的远程连接方式。很多 VPS 默认使用 22 端口,如果同时允许 root 账户通过密码登录,就需要特别关注暴力破解风险。

建议检查:

  • 是否允许 root 直接登录;
  • 是否允许使用密码进行 SSH 认证;
  • 是否已经配置 SSH 密钥登录;
  • 是否限制了不必要的远程访问。

修改 SSH 端口可以减少一部分针对默认端口的扫描噪声,但它不是独立的安全保障。真正重要的是合理配置认证方式、账户权限和访问限制。

2. 没有防火墙,容易暴露不必要的服务

有些人搭建 VPS 时,会为了方便直接开放多个端口。等到安装了网站面板、数据库、Docker 容器等服务后,才发现公网暴露的入口越来越多。

UFW 是 Ubuntu 等 Linux 系统中常用的防火墙管理工具,可以帮助管理员控制哪些端口允许外部访问。

基本原则很简单:只开放业务真正需要的端口,其他端口默认不应随意暴露。

3. 没有登录防护,异常尝试更难管理

fail2ban 可以根据日志中的匹配规则,对反复触发条件的来源地址实施临时封禁,常用于降低 SSH 暴力破解带来的干扰。

不过,它不能替代安全更新、密钥认证和防火墙,也不能保证所有恶意登录尝试都会被阻止。

二、vps-security-hardening:把重复的加固操作交给脚本

如果你经常购买 VPS、重装系统或测试不同的服务器环境,可以考虑使用自动化安全加固脚本。

这里介绍的工具名称是 vps-security-hardening。根据提供的项目说明,它的目标是把常见的服务器初始加固步骤集中起来执行,减少手动修改配置文件的工作量。

与每次都从头配置相比,这类脚本的主要价值在于:把分散的操作整理成一套相对统一的流程。

它主要处理哪些安全设置?

功能主要用途
SSH 连通性检测检查远程连接相关条件,降低配置错误导致断联的风险
系统更新安装系统更新,减少已知漏洞带来的风险
创建普通用户为日常管理提供非 root 账户,并配置 sudo 权限
禁止 root 密码登录减少直接使用 root 密码远程登录的风险
修改 SSH 端口调整远程管理端口,减少默认端口的扫描噪声
SSH 密钥认证使用公钥与私钥进行身份验证
fail2ban根据规则限制反复触发条件的登录来源
UFW 防火墙控制服务器允许进入的网络连接
Docker 防火墙相关配置检查容器端口与防火墙规则之间的关系
配置完成后的检查尝试验证关键配置是否符合预期

需要注意,上表是根据提供的项目说明整理的功能清单,并不代表已经独立审计或实测该项目的每一项功能。实际支持的操作系统、配置细节和验证范围,应以项目仓库中的 README、脚本源码及测试结果为准。

三、使用自动化加固脚本前,需要准备什么?

自动化脚本虽然能减少重复操作,但它通常需要较高的系统权限。运行之前,建议先做好以下准备。

第一步:确认 VPS 的操作系统

检查项目是否支持你当前使用的 Linux 发行版和版本。

例如,Ubuntu、Debian 以及其他 Linux 发行版的 SSH 配置、防火墙规则和系统服务管理方式可能存在差异。不要因为脚本可以运行,就认定它适用于所有系统。

第二步:检查云服务商的防火墙

如果你准备把 SSH 从 22 端口改为其他端口,需要先确认 VPS 服务商的网络防火墙、安全组或访问控制规则允许新端口的 TCP 连接。

这里有两个不同层面的防火墙:

  • 云平台防火墙: 在服务器外部控制网络流量。
  • 系统防火墙 UFW: 在 VPS 操作系统内部控制网络流量。

两者都需要检查。只修改服务器内部规则,并不一定能让新端口从公网访问。

第三步:准备 SSH 密钥和备用连接方式

建议提前生成并测试 SSH 密钥,确认自己能够使用密钥正常登录。

如果服务器支持 Web Console、VNC 或救援模式,也可以提前了解如何使用这些功能恢复访问。

尤其要注意:修改 SSH 配置之前,不要急着关闭当前的 root 登录会话。最好先保留原有会话,等新用户和新端口都验证成功后,再结束旧会话。

第四步:阅读脚本源码

在执行拥有 root 权限的脚本之前,至少应检查它会修改哪些配置文件、安装哪些软件、执行哪些系统命令,以及是否会覆盖已有规则。

如果服务器已经运行网站、数据库、Docker 容器或其他业务,不建议未经测试就直接运行全自动加固脚本。

四、如何运行 vps-security-hardening?

根据提供的命令示例,项目使用类似下面的方式启动:

./scripts/harden-vps.sh \
  --ip <VPS_IP> \
  --root-pass <ROOT_PASSWORD> \
  --user <NEW_USER> \
  --user-pass <NEW_USER_PASSWORD> \
  --port <SSH_PORT>

其中:

  • VPS_IP:VPS 的公网 IP 地址;
  • ROOT_PASSWORD:当前 root 账户的密码;
  • NEW_USER:准备创建的普通用户名;
  • NEW_USER_PASSWORD:新用户的密码;
  • SSH_PORT:准备使用的新 SSH 端口。

注意:这只是根据原始材料整理的命令示例,并未在本文中实测。 在运行前,请以实际仓库中的 README、参数定义和使用说明为准,确认参数名称、执行目录及依赖是否一致。

原始说明还提到了 sshpass。它可以用于在自动化过程中通过密码进行 SSH 认证,但使用时需要考虑密码暴露风险,例如命令行参数、进程信息和日志记录。不要把真实密码直接写入公开脚本、截图或代码仓库,也不要在不可信的设备上执行这类操作。

如果工具提供交互式认证、密钥认证或其他更安全的方式,建议优先评估这些选项。

五、运行之前,务必注意这几个问题

自动化加固可以节省时间,但服务器安全并不是执行一次脚本就结束了。

1. 确认新 SSH 端口可以连接

在修改端口之前,先放行云平台防火墙和系统防火墙中的对应端口。

完成配置后,使用新的端口和认证方式建立第二个 SSH 会话,确认可以正常登录,再考虑关闭旧连接。

2. 不要盲目删除 22 端口规则

如果脚本会删除旧 SSH 端口的防火墙规则,必须先确认新端口已经生效。

否则,一旦新端口没有正确放行,可能导致 SSH 连接中断,需要通过服务商控制台或救援功能恢复。

3. Docker 和防火墙需要一起检查

Docker 可能会通过自身的网络规则处理容器流量,因此不能简单地认为启用了 UFW,所有容器端口就一定受到了预期的限制。

如果你使用 Docker 部署网站、数据库或其他服务,应检查端口映射、转发规则和实际公网可访问性。修改 Docker 的防火墙相关配置也可能影响容器网络,不宜在不了解影响的情况下直接照搬。

4. 定期更新和检查日志

安全加固不是一次性任务。服务器运行后,仍然需要及时安装安全更新、检查异常登录记录、确认备份可以恢复,并根据实际业务调整开放端口。

如果 VPS 用于生产环境,还应考虑监控、备份、权限管理和故障恢复方案。

六、哪些人适合使用 VPS 自动加固脚本?

如果你符合以下情况,可以考虑研究这类工具:

  • 经常购买或重装 VPS,需要重复配置基础安全设置;
  • 正在学习 Linux 服务器管理,希望了解 SSH、防火墙和 fail2ban 的常见用法;
  • 使用 VPS 搭建个人网站、博客、API 服务或测试环境;
  • 希望将服务器初始化流程标准化,减少遗漏操作;
  • 需要在部署 Docker 或其他服务之前,先梳理服务器的基础安全配置。

如果你的 VPS 已经运行重要业务,建议先在新建测试实例上验证脚本,确认不会影响现有服务后,再考虑应用到生产环境。

七、总结

拿到 VPS 后,先检查安全配置,再安装业务软件,是一种值得养成的服务器管理习惯。

SSH 密钥认证、合理的用户权限、UFW 防火墙、fail2ban 和系统更新,都是常见的基础安全措施。自动化脚本可以把这些步骤整合起来,但能否安全运行,仍然取决于脚本质量、系统兼容性以及你的实际配置。

如果你正在寻找 VPS 安全加固工具,可以在 GitHub 搜索 vps-security-hardening,核对项目作者、源码、许可证、支持的系统版本和最新维护状态,再决定是否使用。本文没有独立验证该仓库的具体实现,因此不将项目描述为经过安全审计或保证绝对安全的工具。

记住:先确认自己还能安全登录,再修改 SSH 和防火墙;先检查脚本,再授予它系统管理权限。 这比单纯追求“一条命令完成所有配置”更加重要。


本文仅用于 Linux 服务器安全配置学习与技术交流。具体命令和配置请根据自己的系统环境验证后使用。

订阅最新文章

第一时间获取最新优质内容推送

We don’t spam! Read our privacy policy for more info.

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注