既然是我们的防范是从入侵者角度来进行考虑,那么我们就首先需要知道入侵者的入侵方式。目前较为流行web入侵方式都是通过寻找程序的漏洞先得到网站的webshell然后再根据服务器的配置来找到相应的可以利用的方法进行提权,进而拿下服务器权限的。所以配合服务器来设置防止webshell是有效的方法。
一、防止数据库被非法下载
应当说,有一点网络安全的管理员,都会把从网上下载的网站程序的默认数据库路径进行更改。当然也有一部分管理员非常粗心,拿到程序直接在自己的服务器上进行安装,甚至连说明文件都不进行删除,更不要说更改数据库路径了。这样黑客就可以通过直接从源码站点下载网站源程序,然后在本地测试找到默认的数据库,再通过下载数据库读取里面的用户信息和资料(一般是经过MD5加密的)找到管理入口进行登陆获得webshell。还有一种情况是由于程序出错暴出了网站数据库的路径,那么怎么防止这种情况的发生呢?我们可以添加mdb的扩展映射。
打开IIS添加一个MDB的映射,让mdb解析成其他下载不了的文件:“IIS属性”—“主目录”—“配置”—“映射”—“应用程序扩展”里面添加.mdb文件应用解析,至于用于解析它的文件大家可以自己进行选择,只要访问数据库文件出现无法访问就可以了。
这样做的好处是:1只是要是mdb后缀格式的数据库文件就肯定下载不了;2对服务器上所有的mdb文件都起作用,对于虚拟主机管理员很有用处。
二、防止上传
针对以上的配置如果使用的是MSSQL的数据库,只要存在注入点,依然可以通过使用注入工具进行数据库的猜解。倘若上传文件根本没有身份验证的话,我们可以直接上传一个asp的木马就得到了服务器的webshell。
对付上传,我们可以总结为:可以上传的目录不给执行权限,可以执行的目录不给上传权限。Web程序是通过IIS用户运行的,我们只要给IIS用户一个特定的上传目录有写入权限,然后又把这个目录的脚本执行权限去掉,就可以防止入侵者通过上传获得webshell了。配置方法:首先在IIS的web目录中,打开权限选项卡、只给IIS用户读取和列出目录权限,然后进入上传文件保存和存放数据库的目录,给IIS用户加上写入权限,最后在这两个目录的“属性”—“执行权限”选项把“纯脚本”改为“无”即可。
最后提醒一点,在你设置以上权限的时候,一定要注意到设置好父目录的继承。避免所做的设置白费。
三、MSSQL注入
对于MSSQL数据库的防御,我们说,首先要从数据库连接帐户开始。数据库不要用SA帐户。使用SA帐户连接数据库对服务器来说就是一场灾难。一般来说可以使用DB_OWNER权限帐户连接数据库,如果可以正常运行,使用public用户最安全的。设置成dbo权限连接数据库之后,入侵者基本就只能通过猜解用户名和密码或者是差异备份来获得webshell了,对于前者,我们可以通过加密和修改管理后台的默认登陆地址来防御。对于差异备份,我们知道它的条件是有备份的权限,并且要知道web的目录。寻找web目录我们说通常是通过遍历目录进行寻找或者直接读取注册表来实现。无路这两个方法的哪一种,都用到了xp_regread和xp_dirtree两个扩展存储过程,我们只需要删除这两个扩展存储就可以了,当然也可以把对应的dll文件也一起删除。
但是如果是由于程序出错自己暴出了web目录,就没有办法了。所以我们还要让帐户的权限更低,无法完成备份操作。具体操作如下:在这个帐户的属性—数据库访问选项里只需要对选中对应的数据库并赋予其DBO权限,对于其他数据库不要操作。接着还要到该数据库—属性—权限把该用户的备份和备份日志的权限去掉,这样入侵者就不能通过差异备份获得webshell了。