目录
- 引子:一个让人后背发凉的下午
- 为什么你的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. 安装Fail2ban
apt 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是想用来做事的,不是想用来给黑客当免费矿机的,是不是?
希望对你有帮助。
(全文完)
评论 (0)