网页被篡改的常见迹象
你有没有发现自己的网站突然跳出陌生广告?或者首页莫名其妙跳转到赌博、色情页面?这些往往是网页被篡改的典型表现。尤其是个人博客或中小企业官网,一旦服务器防护薄弱,很容易成为攻击目标。
黑客常用的篡改手段
很多被篡改的网站,问题出在使用了过时的CMS系统,比如老版本的WordPress、织梦DedeCMS等。攻击者通过已知漏洞上传恶意脚本,替换原始文件。还有一种是通过FTP账号密码泄露,直接登录服务器修改index.html这类主页文件。
更隐蔽的是在JS文件中插入代码,比如在底部引入一个外部js:
<script src="http://malicious-site.com/ads.js"></script>
这种脚本可能不会立刻暴露,但会在用户访问时悄悄跳转或弹窗。
从源头堵住漏洞
定期更新程序和插件是最基本的操作。很多人图省事,装完系统就再也不管,结果几个月后某个插件爆出高危漏洞,网站就成了“公开停车场”。开启自动更新功能,或者设个日历提醒自己每月检查一次。
FTP和后台登录地址尽量不用默认路径。比如把/wp-admin/改成一个自己知道的路径,减少被扫描撞库的风险。密码也要足够复杂,别用admin/123456这种组合,最好配合双因素认证。
文件完整性监控
可以在服务器上部署简单的监控脚本,定期比对关键文件的MD5值。比如首页、公共JS、CSS这些容易被篡改的文件。
md5sum index.html > file_check.txt
每天跑一次对比,如果发现不一致,立即报警并排查。
设置正确的文件权限
Linux服务器上,网站文件一般设置为644,目录为755。千万别为了“省事”把整个网站目录设成777。那样等于把家门钥匙挂在门口,谁都能进来改东西。
特别是一些缓存目录需要写入权限,可以单独设置,其他静态页面一律只读。
利用.htaccess做基础防护
Apache环境下,.htaccess是个实用的小工具。可以通过它禁止某些危险文件的执行:
<Files ~ "^\\.(htaccess|htpasswd|ini)$">
Order Allow,Deny
Deny from all
</Files>
<FilesMatch "\\.(php|asp|jsp)$">
Order Allow,Deny
Allow from 127.0.0.1
</FilesMatch>
这样能防止黑客上传一句话木马后直接运行。
定期备份不能少
再严密的防守也可能被突破。关键是出事之后能快速恢复。建议每周至少做一次完整备份,包括数据库和文件。备份包不要放在网站根目录下,最好离线保存或上传到独立存储。
曾经有个客户网站被植入挖矿代码,查了一圈才发现是半年前的一个旧备份被污染了,反复恢复都在“重播病毒”,最后只好从干净的时间点重新搭建。