logo NodeSeekbeta

SafeVPS:一条脚本完成 Ubuntu / Debian VPS 基础安全配置

SafeVPS:一条脚本完成 Ubuntu / Debian VPS 基础安全配置

刚开了一台 VPS,不想安装面板,也不想手动整理一堆 UFW 和 Fail2Ban 命令?

我把自己实际用于多台服务器的基础安全配置整理成了一个开源 Bash 脚本:SafeVPS。

项目地址:https://github.com/sanrokamlan-prog/safevps

它能做什么

  • 自动检测当前 SSH 连接端口和 sshd 配置端口
  • 设置 UFW 默认拒绝入站、允许出站
  • 使用 UFW limit 保护 SSH 连接
  • 提供最小、预设、自定义三种端口模式
  • 支持自定义 TCP / UDP 单端口和端口范围
  • 可选阻止服务器直接连接邮件端口 25/465/587
  • 配置 Fail2Ban SSH 防护
  • 提供宽松、标准、严格、自定义四种封禁策略
  • 默认严格策略:一小时内失败 3 次,永久封禁来源 IP
  • 临时封禁保留测试 IP,确认 nftables、iptables、ipset 或 UFW 中存在真实规则
  • Fail2Ban 配置检查失败时自动恢复原文件
  • 检测 Docker,并提示容器端口可能绕过 UFW
  • 默认中文,支持完整英文交互
  • 内置 Bash 测试、ShellCheck 和 GitHub Actions CI

一键运行

wget -O setup_server_security.sh https://raw.githubusercontent.com/sanrokamlan-prog/safevps/main/setup_server_security.sh && sudo bash setup_server_security.sh

默认中文交互。使用英文:

sudo bash setup_server_security.sh --lang en

脚本会先让你选择端口模式和 Fail2Ban 策略,再显示完整配置摘要。只有输入大写 YES 后才会修改系统。

端口模式

模式 说明
minimal 只开放检测到的 SSH 端口,推荐用于新服务器
preset 开放 SSH、TCP 80/443、UDP 10000:10010
custom 完全自定义 TCP / UDP 端口和范围

自定义示例:

sudo PORT_MODE=custom \
  TCP_PORTS="80 443 8080 9000:9010" \
  UDP_PORTS="51820" \
  bash setup_server_security.sh

Fail2Ban 策略

策略 触发条件 封禁时间
宽松 relaxed 10 分钟内失败 8 次 1 小时
标准 standard 30 分钟内失败 5 次 24 小时
严格 strict 1 小时内失败 3 次 永久
自定义 custom 用户设置 用户设置

无人值守严格模式:

sudo ASSUME_YES=1 \
  PORT_MODE=minimal \
  FAIL2BAN_PROFILE=strict \
  bash setup_server_security.sh

适用范围

  • Ubuntu / Debian
  • 使用 apt 和 systemd
  • 需要 UFW 主机防火墙和 Fail2Ban SSH 防护
  • 希望使用单文件脚本,不安装额外管理面板

使用前说明

防火墙修改始终存在远程失联风险。SafeVPS 会保护当前 SSH 端口和 sshd 配置端口,但执行完成后仍建议保留原会话,并打开第二个终端确认能够重新登录。

Docker 发布的容器端口可能绕过 UFW,云厂商安全组也属于独立防火墙层。SafeVPS 是主机基础安全配置,不替代云防火墙、应用权限控制、系统更新和备份。

开源许可

SafeVPS 使用 MIT License,可以自由使用、修改和分发。

欢迎提交 Issue、改进建议和不同 Debian / Ubuntu 版本的实际运行反馈。

项目地址:https://github.com/sanrokamlan-prog/safevps

12
12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72267位seeker

🎉欢迎新用户🎉