您现在的位置是:百科 >>正文

网站保护的方法

百科4人已围观

简介去年秋天,一个做独立博客的朋友凌晨两点给我发消息,说他的站被刷了。不是DDoS那种大流量,而是有人盯上了他WordPress后台的登录接口,用字典跑密码。等他早上醒来,数据库已经被清空,备份是三个月前 ...

去年秋天,网站一个做独立博客的保护朋友凌晨两点给我发消息,说他的网站站被刷了。不是保护DDoS那种大流量,而是网站有人盯上了他WordPress后台的登录接口,用字典跑密码。保护等他早上醒来,网站数据库已经被清空,保护备份是网站三个月前的。这事让我重新翻了一遍自己维护的保护几个小站,发现很多防护措施其实早就该做,网站只是保护一直拖着。

最容易被忽略的网站是登录入口。默认的保护/wp-admin或/admin路径,等于告诉扫描器“来试这里”。网站改掉它,或者加一层HTTP Basic认证,能挡掉八成自动化脚本。我自己的做法是在Nginx里给后台路径加一个IP白名单,不在名单内的直接返回444,连页面都不给看。有人觉得这太麻烦,出差换网络就进不去。那就退一步,至少把登录失败次数限制住。Wordfence或者Fail2ban都能干这事,连续错五次封IP一小时,成本几乎为零。

密码本身反而最不值得多谈。强制复杂密码、开启两步验证,这些已经是常识。真正的问题是很多人只在登录环节做了防护,忘了API接口。WordPress的xmlrpc.php是个经典漏洞,攻击者可以用它一次性尝试上百个密码。如果你不用Jetpack或者某些老式客户端,直接在Nginx里把xmlrpc.php禁掉,一行location = /xmlrpc.php { deny all; }就完事。我查过自己服务器的访问日志,禁掉之后每天少了几百条POST请求。

文件权限是另一个暗坑。很多教程让你把整个网站目录设成777,图省事。这等于把门拆了。正确的做法是目录755、文件644,wp-config.php可以设成600。上传目录尤其要小心,PHP文件绝不应该出现在/wp-content/uploads/下面。我见过一个案例,攻击者上传了一个伪装成图片的PHP文件,然后通过它执行任意命令。后来我在Nginx里加了一条规则,上传目录下的PHP文件一律不解析,直接返回403。这条规则救过我两次。

数据库这块,很多人只改前缀就以为安全了。改前缀确实有用,但不够。数据库用户权限要收窄,只给SELECT、INSERT、UPDATE、DELETE,别给DROP或者FILE。这样即使网站被注入,攻击者也没法直接删库或者读服务器文件。另外,数据库不要监听公网IP,只绑127.0.0.1。我见过有人图方便开了3306端口,结果被勒索软件扫到,整库加密,要比特币才给解密。

最后说备份。备份不是防护,但它是你被攻破之后的唯一退路。我现在的策略是本地一份、对象存储一份、异地一份,保留最近七天的每日备份和最近四周的每周备份。备份文件本身也要加密,别用backup.zip这种名字放在网站根目录下,那等于把钥匙插在门上。有一次我帮人恢复站点,发现他的备份文件就在/wp-content/backups/里,攻击者顺手删了。后来我给他写了个脚本,每天凌晨用mysqldump导出,加密后传到另一台服务器,本地只留当天的。

这些方法没有哪个是万能的,但叠在一起,能把攻击成本抬高到大多数脚本小子懒得碰的程度。真正要紧的是别等出事再补,那时候往往已经晚了。

Tags:

相关文章

  • 用电脑看监控摄像头

    百科

    我家客厅吊顶角落,装着一个白色云台摄像头。当初是为了上班时看猫。现在,它成了我观察自己生活的第三只眼。 用电脑看监控,和手机完全是两码事。手机是碎片化的,你在地铁上,在工位上,点开App瞄一眼,画面小 ...

    【百科】

    阅读更多
  • 于化源判几年刑期

    百科

    ```html 于化源这个名字,在裁判文书网上能搜到不止一个。重名的可能性当然有,但真正被公众记住的那个“于化源”,是2020年前后在河北某地因一起非法吸收公众存款案被判刑的当事人。具体刑期,不同渠道 ...

    【百科】

    阅读更多
  • 总是出现网页走丢了

    百科

    晚上十一点半,我盯着屏幕上那个熟悉的恐龙图标,旁边一行小字:“无法访问此网站”。这已经是今晚第三次了。路由器就在手边,指示灯绿得好好的,手机连Wi-Fi刷视频一点不卡。偏偏电脑上这个页面,死活打不开。 ...

    【百科】

    阅读更多


友情链接