你的VPS真的安全吗？我从被"黑"到全面加固的血泪史
目录 引子：一个让人后背发凉的下午 为什么你的VPS总在被攻击？ SSH安全：第一道防线也是最后一道 防火墙：不会配就别谈安全 系统更新：别做那个"等会儿再更"的人 日志监控：坏人一定会留下脚印 总结：安全不是一锤子买卖 引子：一个让人后背发凉的下午老实说，写这篇文章的念头，来自于上周一个朋友的求救电话。电话那头的声音很急："兄弟，我的VPS被人搞了，网站全打不开了，数据库里的数据也被人删了，桌面还留了个txt文件，写着'你的服务器已被我拿下'……"我当时的第一反应不是同情，而是——你信不信，90%的VPS被入侵，都是主人自己把门打开请人进来的。我扫了一眼他的配置：默认22端口、root密码是Admin123!、防火墙？没开。Fail2ban？没装。系统更新？买来之后一次都没更新过。这不就是"我家大门常打开，开放怀抱等你"吗？回想我的过去，从2007年第一次买VPS到现在，踩过的坑、被黑的经历，加起来能写一本小册子。今天就把这些用真金白银换来的经验，一一分享给你。希望对你有用。为什么你的VPS总在被攻击？很多人觉得："我的VPS上又没什么重要数据，谁闲得没事来攻击我？"这种想法，我称之为"掩耳盗铃式安全"。试想一下——互联网上有多少扫描器？Shodan、Censys这些搜索引擎，每天都在全网扫描开放的端口。你只要把VPS开机、连上网，不出24小时，你就能在登录日志里看到来自俄罗斯、巴西、越南的SSH暴力破解尝试。这不是"会不会被攻击"的问题，而是"什么时候被攻击"的问题。你看，攻击者的逻辑很简单： 1. 扫全网开放的22端口 → 发现你的VPS 2. 用常见的用户名（root, admin, test）尝试密码登录 3. 如果密码太弱 → 拿下 4. 植入挖矿程序 / 勒索病毒 / 变成肉鸡整个过程全自动化，跟你的VPS里有没"价值"半毛钱关系都没有。SSH安全：第一道防线也是最后一道SSH是你的VPS的大门。大门不锁好，后面做再多都是白搭。1. 改端口（别用22）# 编辑 /etc/ssh/sshd_config Port 34567 # 换成你自己的端口号，10000-65535之间随便选 就这么简单的一步，能过滤掉99%的自动扫描攻击。为什么？因为大部分扫描器只扫默认端口。这不香吗？2. 禁止root直接登录PermitRootLogin no 然后创建一个普通用户，用sudo提权：adduser myuser usermod -aG sudo myuser 供你参考：这个习惯是从Amazon的工程师那里学来的。他们内部有一条铁律——永远别用root做日常操作。一个不小心rm -rf /打下去，你就知道什么叫"一夜回到解放前"了。3. 使用密钥登录，禁用密码登录# 在自己的电脑上生成密钥对 ssh-keygen -t ed25519 -C "your_email@example.com" # 把公钥传到VPS ssh-copy-id -p 34567 myuser@your-vps-ip # 然后在sshd_config里 PasswordAuthentication no PubkeyAuthentication yes 为什么是ED25519而不是RSA？ 因为ED25519更安全、速度更快、密钥更短。2024年的今天，再用1024位的RSA就跟给防盗门装了个塑料锁芯一样。4. 安装Fail2banapt install fail2ban 这个工具会自动检测登录失败的IP，达到阈值后直接ban掉。[sshd] enabled = true port = 34567 maxretry = 3 bantime = 86400 配置完后重启服务，你会发现日志里那些烦人的"Failed password"瞬间消失。防火墙：不会配就别谈安全很多VPS服务商默认不提供防火墙，或者只提供了基础的DDoS防护。到操作系统层面，最常用的就是iptables或者它的简化版ufw。ufw default deny incoming ufw default allow outgoing ufw allow 34567/tcp # 你改过的SSH端口 ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS ufw enable 你会发现，如果不配防火墙，你的VPS上可能已经跑了十几个监听端口——有些你甚至都不知道是干嘛的。用netstat -tlnp看一下，如果看到上面有不认识的端口在监听——这就很"刺激"了。系统更新：别做那个"等会儿再更"的人每次我看到有人把VPS买回来装完系统就扔在那儿半年不更新，我就想起一个比喻：你买了一辆车，开回家就把车停在车库里，从来不保养。半年后你发现发动机里全是老鼠窝——这就是不更新系统的VPS。# 养成习惯，每周执行一次 apt update && apt upgrade -y 或者配置自动安全更新：apt install unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades 你看，CVE漏洞每天都在爆。Log4j、Heartbleed、Dirty Pipe……每一个都可能导致你的服务器被远程控制。你觉得自己运气好不会碰上？等真的碰上了，你哭都来不及。日志监控：坏人一定会留下脚印我见过最离谱的一个案例，是朋友的VPS被人植入挖矿程序跑了三个月，他自己完全没发现。直到收到云服务商的邮件说"您的账号因发送大量异常流量被暂停"，他才意识到出了问题。早干嘛去了？建议你养成每天看日志的习惯：# 查看登录失败记录 journalctl -u ssh -n 100 --no-pager # 查看系统资源占用 htop # 查看网络连接 ss -tunap 如果CPU一直飙在100%，但你的网站访问量并没有增加——你很可能已经变成了一名"光荣的矿工"（只不过是在帮别人挖矿）。这里再推荐一个轻量级的监控工具——netdata：bash <(curl -Ss https://my-netdata.io/kickstart.sh) 装上之后，浏览器打开http://你的VPS-IP:19999，系统状态一目了然。总结：安全不是一锤子买卖写了这么多，其实我想说的就一句话：安全是一个习惯，不是一个动作。你把SSH配置改了，防火墙开了，但半年后又给忘了——跟没做有什么区别？最后，列一个Checklist供你自检： [ ] SSH端口是否已改为非默认端口？ [ ] 是否禁止了root直接登录？ [ ] 是否配置了密钥登录并禁用了密码登录？ [ ] 是否安装了Fail2ban？ [ ] 是否配置了防火墙（UFW/iptables）？ [ ] 是否配置了自动安全更新？ [ ] 是否安装了监控工具（netdata/htop）？ [ ] 是否定期检查了登录日志？ 如果以上有一条你答"没有"——我建议你现在就去处理。我说真的。毕竟，你买了VPS是想用来做事的，不是想用来给黑客当免费矿机的，是不是？希望对你有帮助。（全文完）