服务器被黑后的血泪教训:我是如何一步步加固VPS安全的

三年前,我第一次搭建的VPS被黑了。那天早上起来,发现网站打不开,登录服务器一看,所有文件都被加密了,桌面上留着勒索信息:要比特币才给解密。我当时就懵了,几个月的数据全没了。

后来我才知道,原来我一直用着默认的22端口,密码还是简单的123456,不被黑才怪。从那以后,我痛定思痛,开始研究服务器安全。今天就把这些年的经验教训分享给大家。

SSH安全:第一道防线

SSH是黑客攻击的重灾区,90%的入侵都是从SSH开始的。第一步,把默认22端口改掉,改成个四位数,能挡住大部分自动化扫描。第二步,禁用root登录,创建个普通用户,用sudo提权。第三步,也是最重要的,用密钥登录,彻底关闭密码登录。

密钥登录可能听起来复杂,其实特别简单。本地生成个密钥对,把公钥传到服务器,以后登录连密码都不用输,直接进。安全又方便,何乐而不为?

防火墙配置

防火墙是第二道防线。我见过太多人服务器开着几百个端口,什么服务都往外暴露,这不是请黑客进来吗?正确的做法是:只开放必要的端口,其他的全部关掉。

Web服务器就开80和443,数据库端口1433、3306这些千万别暴露到公网,本地访问就够了。SSH端口改成非标准端口后,记得在防火墙里放行。

Ubuntu用UFW很简单,几条命令就搞定。CentOS可以用firewalld或者iptables,功能更强大但配置复杂点。

Fail2ban:自动封禁暴力破解

就算你改了端口,也挡不住有人拿着扫描器全网段扫。这时候就需要Fail2ban出场了。这玩意儿能监控日志,发现有人多次登录失败,直接封IP,简单粗暴但特别有效。

安装Fail2ban后,默认配置就够用。它会监控SSH、Apache、Nginx等常见服务,发现异常自动处理。我有个服务器装了Fail2ban后,日志里每天都能看到被封的IP,要没这玩意儿,早被攻破了。

定期更新系统

系统更新不是可有可无的,每次更新都包含安全补丁。我见过太多服务器被黑,都是因为系统版本太老,漏洞百出。

建议开启自动安全更新,Ubuntu和CentOS都支持。重要补丁出来第一时间打上,别等黑客利用了再后悔。我就是因为偷懒没更新,才被勒索的,这个教训太深刻了。

数据备份:最后一道防线

就算前面所有措施都做到了,也不敢保证100%安全。所以备份是最后一道防线,也是最重要的防线。

我的备份策略是:本地每天备份,每周一份完整备份,每月一份归档备份。本地备份完了再同步到云存储,比如AWS S3或者Google Drive,异地存放更安全。

备份有个原则:3-2-1。三份备份,两种介质,一份异地。听起来复杂,其实用脚本可以自动化。我写了个简单的bash脚本,每天凌晨3点自动备份数据库和网站文件,然后上传到S3,完全不用管。

Web应用安全

服务器安全了,Web应用也不能掉以轻心。WordPress等CMS要始终保持最新版本,插件及时更新。我见过太多WordPress站被黑,都是因为用的老版本,漏洞早就被公开了。

上传文件要限制类型,别让用户随便传PHP脚本。数据库查询要用预编译语句,防止SQL注入。这些是基本功,做开发的应该都懂。

监控和日志

安全不是一劳永逸的,需要持续监控。我会定期查看登录日志,看看有没有异常登录。用top和htop监控资源使用,发现异常进程及时处理。

有条件的话可以装个监控面板,比如Netdata或者Grafana,系统状态一目了然。设置告警规则,CPU、内存、磁盘异常时自动通知。

被黑了怎么办

万一真的被黑了,别慌,按步骤处理:第一,立即断开网络,防止损失扩大。第二,修改所有密码,包括服务器、数据库、后台管理。第三,从备份恢复数据。第四,分析入侵原因,修补漏洞。第五,加强防护,避免再次被黑。

我就按这个流程处理过几次,虽然麻烦,但至少能快速恢复业务。记住,被黑不可怕,可怕的是没有应对措施。

总结

服务器安全是个持续的过程,没有绝对的安全,只有不断的加固。我现在的习惯是:每周检查一次日志,每月更新一次系统,每季度做一次安全审计。虽然累点,但至少睡得安稳。

希望我的这些经验教训能帮到你,别等被黑了才后悔。安全无小事,从现在做起吧。

更多服务器安全资源和工具:https://mjj.728.hk/