DreamHost的漏洞引发的安全性问题
关于Dreamhost的目录安全性问题,我在购买Dreamhost前就已经看过类似的文章了,但一直不以为然,觉得我的网站没有什么特别机密的东西,又从没跟人结怨,即使人家得到相关密码,也不会专门去修改我的数据.另外,大家也知道,为了不让DreamHost把网站的cpu时间算在我头上,我老早就把网站的运行模式改成mod_php4了.即便知道这样不安全,也第一时间告诉大家这样不安全,但我还是一边享受Dreamhost带来的快感,一边幸灾乐祸的笑Dreamhost傻到家了,直到今天设置我的wordpress时,才发现,其实DreamHost一点也不傻,我才是最大的傻瓜...
事情的缘由是这样的...
这两天,老婆在用她的blog时反映不能上传图片,我检查后发现是目录权限问题(无法写入),因此把blog的upload目录递归设置成777,之后发现可以正常上传图片.后来在帮blog设置google sitemaps插件时也发现同样存在写入问题,抱着没什么的观点,我偷懒的就把整个站点目录设置成777权限了.不过这时我心里已经清楚的知道为什么DreamHost强调最好用cgi模式了,因为在mod_php4模式整个站点由dhapache用户运作并依照文件权限中的"公共"权限部分对文件进行操作,如果我们的权限不放开(读/写/执行/),某些网站程序,像wordpress这么典型的程序,是无法正确的运行的.
那按mod_php4运行究竟有多不安全呢?带着这个疑问,我找回了那篇关于目录安全性的文章,并动手测试了一下,这一试着实让我吓了一跳.现在我把过程贴出来给大家看看:
$ cd /home (进入用户目录)
$ ls (列出有什么用户)
$ cd abc (进入其中一个用户目录)
$ ls
ls: .: Permission denied (禁止访问)
$ cd logs (进入该用户的logs目录)
$ ls (这样就可以知道该用户有什么网站目录了,比如说我们找到域名aaa.com)
$ cd ../aaa.com (进入上级目录中的aaa.com,这个才是放网页的目录)
$ ls
现在你猜猜看到什么了...没错,是网站的文件列表.
现在再想想我对blog做了什么设置?
对,777权限!它代表任何人都可读可写可执行该目录或文件.现在已经不再是看看文件找找密码这么简单了,只要你用mod_php4模式,并且为了让某些程序正常运行而放宽了文件权限,那么主机上任何一个用户都可以通过这样的方法改写你的网站内容...
DreamHost这样的权限漏洞无疑让DreamHost的用户必须做出以下抉择:
一,使用CGI模式提高网站安全性,继续忍受DreamHost的CPU条款,然后心惊胆战的等待DreamHost的Warning Letter.
二,使用mod_php4模式,抱着"我有正义我怕谁"的思想,时刻准备着为低级黑客及仇家的伟大事业奉献自己的网站.
三,严重鄙视DreamHost,不再使用DreamHost的空间.
路就摊在你们脚下,怎么选择是你们的自由.
附:howlym.com是放在bluehost的空间的,不用找我的来试. 另外DreamHost对于用户的操作是有记录的,不然你们怎么有机会看到resources里面的报告,所以最多看看就好了(其实最好看都不要看了),不要真的改人家的东西,不然就等着关站吧.
后记(解决办法):
是我不好,是我不对,是我年轻气盛,是我年少轻狂,没有认真分析,在写完本文后,我又对所谓的"漏洞"进行测试,发现原来只要注意一下习惯是可以避免的,因为在Fully Hosted那里是有个Web Directory的输入框,默认情况下是跟你的网站名相同的,这样的情况下所谓的"漏洞"就生效了.所以在设置的时候变更一下目录名是可以避免某些不安全因素,这样"漏洞"自然就补上了.
原来DreamHost还留个大家另外一个抉择: 让通向DreamHost的路越走越宽...