· 极客指南  · 8 min read

VPS一键脚本避坑指南:别让"懒人神器"变成"肉鸡孵化器"

买完VPS第一件事就是curl一个脚本?你可能正在把root密码交给陌生人。这7个自查清单,能救你的服务器一命。

买完VPS第一件事就是curl一个脚本?你可能正在把root密码交给陌生人。这7个自查清单,能救你的服务器一命。

每个 VPS 新手的成长轨迹都惊人的相似:

  1. 兴冲冲地买了第一台 VPS
  2. 拿到 root 密码后手舞足蹈
  3. 去 GitHub 搜 “XXX 一键安装脚本”
  4. curl | bash 然后输入 root 密码
  5. 过两天发现服务器被挖矿了

恭喜你,你已经完成了从萌新到受害者的全流程。

今天我们不讲怎么部署服务,来讲讲怎么在享受便利的同时,不被一键脚本背后的人割韭菜

一键脚本的”斩杀线”

一键脚本本身不是恶魔。它们确实能帮你省下数小时的学习成本。

但问题是:你根本不知道 curl 下来的那个脚本里写了什么。

它可能在帮你装 Nginx 的同时:

  • 悄悄添加了一个定时任务,每天凌晨把你的数据发到境外服务器
  • 修改了 SSH 配置,给攻击者留了后门
  • 安装了隐藏的挖矿程序,把你的 CPU 榨到 100%
  • 重写了 iptables,把防火墙规则搞成筛子

高危脚本黑名单

以下这些脚本,我劝你三思而后行

1. 各种”免费面板”脚本

curl -fsSL https://unknown-domain.com/install.sh | sudo bash

风险点:

  • 脚本来源域名往往是一年前注册的,没有任何背书
  • 面板作者随时可以跑路,或者在你的服务器上埋雷
  • 很多所谓”免费”面板,实际是靠收集用户数据盈利

2. 科学上网”全能脚本”

wget -N --no-check-certificate https://raw.githubusercontent.com/xxx/xxx.sh

风险点:

  • 这类脚本最喜欢 chmod 777 和关闭防火墙
  • 很多会要求你关闭 SELinux/AppArmor
  • 为了”方便”,它们往往开放所有端口

3. “优化”系统脚本

curl -sL yabs.sh | bash

等等,yabs 是正经的测试脚本。但有些”优化脚本”可就不是了:

curl -fsSL https://unknown-script.sh | bash -s -- --optimize-all

风险点:

  • 修改内核参数前不做备份
  • 禁用系统关键服务(如 systemd-logind)
  • 清理”垃圾文件”时误删系统文件

安全自查清单

在使用任何一键脚本前,完成以下 7 步检查:

检查 1:脚本来源

# 不要直接执行!先下载下来看
wget https://example.com/install.sh
cat install.sh | head -n 50

安全的脚本应该:

  • 来自官方仓库或知名社区
  • 有 GitHub 星标和活跃维护
  • 作者有真实身份和社区口碑

危险信号:

  • 脚本放在不明域名或临时网盘上
  • GitHub 仓库只有 2 个星标,最近更新是一年前
  • 作者没有社交账号,像个幽灵

检查 2:是否要求 root 密码

绝对不要在脚本执行过程中输入 root 密码。

正确做法:

# 先把脚本下载下来
wget https://github.com/author/project/releases/download/v1.0/install.sh

# 看代码,确认安全后再执行
sudo bash install.sh

如果脚本问你要 root 密码,而不是用 sudo,立刻终止

检查 3:网络请求

# 检查脚本里是否有可疑的 curl/wget
grep -n "curl\|wget" install.sh

危险信号:

  • 向不明 IP 发送 POST 请求
  • 下载二进制文件(你根本不知道里面是什么)
  • 修改 /etc/resolv.conf 指向陌生 DNS

检查 4:定时任务

# 检查脚本是否添加了 crontab
grep -n "crontab\|cron" install.sh

很多挖矿木马就是通过 crontab 实现”复活”的。

检查 5:SSH 配置

grep -n "sshd\|authorized_keys\|PermitRootLogin" install.sh

危险信号:

  • 修改 PermitRootLogin yes
  • ~/.ssh/authorized_keys 里追加公钥
  • 修改 SSH 端口到奇怪的数值(这是为了隐藏,不是安全)

检查 6:防火墙规则

grep -n "iptables\|ufw\|firewalld" install.sh

危险信号:

  • iptables -F(清空所有规则)
  • systemctl stop firewalld(关闭防火墙)
  • 开放 0.0.0.0/0 到所有端口

检查 7:系统修改

grep -n "chmod 777\|rm -rf\|sed.*etc" install.sh

危险信号:

  • chmod 777 /(等于把家钥匙扔大街上)
  • rm -rf /var/log(清理日志是为了隐藏行踪)
  • 修改系统二进制文件

如果已经中招了怎么办?

别犹豫,立刻重建系统。

不要试图”清理”一个被入侵的服务器。你永远不知道攻击者还埋了什么后门。

正确流程:

  1. 导出数据(数据库、配置文件)
  2. 在本地检查数据是否被篡改
  3. 重装系统(不是重置,是重装)
  4. 修改所有密码(包括面板、数据库、SSH key)
  5. 重新部署,但这次手动或者使用官方文档

ZSX 的安全原则

我目前在用的方案:

原则一:能用官方就不用第三方

  • 装 Docker?用 get.docker.com,别用某大佬的”极速版”
  • 装 Nginx?用包管理器 apt install nginx,别用一键LNMP
  • 装面板?用 1Panel 官方脚本,但执行前依然要检查

原则二:最小权限原则

# 创建一个普通用户
useradd -m -s /bin/bash deploy
usermod -aG sudo deploy

# 禁用 root 直接登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd

从此所有操作都用 deploy 用户,需要 root 时才 sudo

原则三:隔离运行

# 用 Docker 跑不确定的服务
docker run -d --name suspicious-app \
  --network none \
  --read-only \
  --security-opt no-new-privileges:true \
  suspicious/image

把不信任的应用关在 Docker 里,不给网络、不给写权限、不给提权。

原则四:定期审计

# 查看谁在登录
lastb | head

# 查看异常进程
ps aux --sort=-%cpu | head

# 查看异常网络连接
ss -tulnp

# 查看 crontab
crontab -l
for user in $(cut -f1 -d: /etc/passwd); do echo "--- $user ---"; crontab -u $user -l 2>/dev/null; done

每个月运行一次这套检查,比任何杀毒软件都管用。

一句话总结

一键脚本的”斩杀线”不在于它方不方便,而在于它值不值得你信任。

在输入 curl | bash 之前,花 5 分钟看看脚本内容。 5 分钟的阅读,可能救你的服务器一条命。

而那些连 5 分钟都不愿意花的”懒人”—— 最终都会在清理被黑服务器时,付出 5 个小时的代价。

Back to Blog

Related Posts

View All Posts »