当前位置: 首页 > 图文教程 > 服务器 > 安全防护 > 终结Webshell 加固web服务器

安全防护
2003服务器A级BT安全配置指南(12)
2003服务器A级BT安全配置指南(13)
修改用户控制权限管理自启动文件
IIS6.0下建立FTP“用户隔离”站点
SQL Server数据库安全规划全攻略(1)
从IIS到SQL Server数据库安全
匿名FTP的安全设定(1)
匿名FTP的安全设定(2)
SQL Server防范措施(2)
域名解析优化也会有麻烦
10个步骤保护IIS Web服务器安全
突破SQL错误提示上传webshell
判断Web数据库方式的一个小经验
sqlserver取得网站路径的几种方法以及比较(1)
sqlserver取得网站路径的几种方法以及比较(2)
阿江的WINDOWS服务器安全设置
RAdmin 服务端高级配置(2)
Win2000安全检查清单(1)
Win2000安全检查清单(2)
Win2000安全检查清单(3)

安全防护 中的 终结Webshell 加固web服务器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 79 ::
收藏到网摘: n/a

用微软的IIS打造一个WEB服务器是件非常简单的事情,但是它的安全性实在不敢恭维。攻击者通过注入、上传、旁注等技术获得了某个网站的Webshell,然后进一步渗透提权,直至控制整个Web服务器。至于如何让攻击者无缘Webshell那是代码部分的问题,我们做为管理员应该如何加固Web服务器,让攻击者在获得了Webshell之后无功而返呢?

一、设置命令权限

默认设置下,webshell中可以调用一些对服务器构成危险的系统命令,因此要对这些命令进行权限限制。需要限制权限的命令主要有:cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exe tftp.exe telnet.exe等。

对这些命令单独进行设置,设置为只允许administrators组访问,这样既防止攻击者新建用户对系统进行修改,也可以防范通过Serv-U的本地提升权限漏洞来运行这些关键的程序了。特别提醒的是要删除cacls.exe这个程序,防止有人通过命令行来修改权限。(图1)

终结Webshell 加固web服务器

图1

个人秘笈:在系统目录下放一个和cmd.exe同名的监控程序,并赋予它eventone运行权限。这样只要攻击者在websehll中调用cmd.exe就可以触发监控程序,记录并追查攻击者的踪迹,让他偷鸡不成反蚀一把米。为我们发现入侵,直至找到攻击者做准备。

二、设置目录权限

设置的原则是让IIS以最小的权限运行,但也不至于把自己捆住。

1、选取整个硬盘:

system:完全控制

administrator:完全控制

(允许将来自父系的可继承性权限传播给对象) (图2)

终结Webshell 加固web服务器

2、c:program filescommon files:

everyone:读取及运行

列出文件目录

读取

(允许将来自父系的可继承性权限传播给对象)

3、c:inetpubwwwroot:

iusr_machinename:读取及运行

列出文件目录

读取

(允许将来自父系的可继承性权限传播给对象)

4、c:windowssystem32:

选择除inetsrv和centsrv以外的所有目录,

去除“允许将来自父系的可继承性权限传播给对象”选框,复制。

5、c:windows:

选择除了downloaded program files、help、iis temporary compressed files、

offline web pages、system32、tasks、temp、web以外的所有目录

去除“允许将来自父系的可继承性权限传播给对象”选框,复制。

6、c:windows:

everyone:读取及运行

列出文件目录

读取

(允许将来自父系的可继承性权限传播给对象)

7、c:windows  emp:(允许访问数据库并显示在asp页面上)

everyone:修改

(允许将来自父系的可继承性权限传播给对象)

三、与组件相关的设置

1、shell.application组件删除

再来去掉一些ASP WEBSHELL需要使用的一些组件,这些组件其实普通的虚拟主机用户也是用不上的。

很多防范ASP木马的文章都提到要删除FileSystemObject组件,但删除了这个组件后,很多ASP的程序可能会运行不了,其实只要做好了前面的工作,FileSystemObject组件能操作的,只能是自己目录下的文件,也就构成不了什么威胁了!

现在看来,还比较有威胁的组件就是Shell.Application和Wscript.Shell这两个组件了,Shell.Application可以对文件进行一些操作,还可以执行程序,但不能带参数,而Wscript.Shell可以操作注册表和执行DOS命令。

2、防范Wscript.Shell组件的方法:

可以通过修改注册表,将此组件改名。

HKEY_CLASSES_ROOTWScript.Shell及HKEY_CLASSES_ROOTWScript.Shell.1

改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName自己以后调用的时候使用这个就可以正常调用此组件了 (图3)

终结Webshell 加固web服务器

图3

也要将clsid值也改一下

HKEY_CLASSES_ROOTWScript.ShellCLSID项目的值

HKEY_CLASSES_ROOTWScript.Shell.1CLSID项目的值

也可以将其删除,来防止此类木马的危害。

3、防范Shell.Application组件的方法:

可以通过修改注册表,将此组件改名。

HKEY_CLASSES_ROOTShell.Application 及

HKEY_CLASSES_ROOTShell.Application.1

改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName

自己以后调用的时候使用这个就可以正常调用此组件了。

也要将clsid值也改一下

HKEY_CLASSES_ROOTShell.ApplicationCLSID项目的值 (图4)

终结Webshell 加固web服务器

图4

也可以将其删除,来防止此类木马的危害。

四、综合设置(针对虚拟主机)

说明:FileSystemObject(FS0)这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作,但是禁止此组件后,引起的后果就是所有利用这个组件的ASP将无法运行,无法满足我们的需求。如何既允许FileSystemObject组件,又不影响服务器的安全性呢?

1、目录权限设置。

在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。(图5)

终结Webshell 加固web服务器

图5

2、创建客户账号

给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。

第一步:打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”:在弹出的“新用户”对话框中根据实际需要输入“用户名”、“全名”、“描述”、“密码”、“确认密码”,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”。本例是给第一虚拟主机的用户建立一个匿名访问 Internet 信息服务的内置帐号“lw1”,即:所有客户端使用http://www.xxx.com 访问此虚拟主机时,都是以这个身份来访问的。输入完成后点“创建”即可。可以根据实际需要,创建多个用户,创建完毕后点“关闭”。(图6)

终结Webshell 加固web服务器

图6

第二步:在列表中双击该帐号,以便进一步进行设置:在弹出的“lw1”(即刚才创建的新帐号)属性对话框中点“隶属于”选项卡:刚建立的帐号默认是属于“Users”组,选中该组,点“删除”:现在出现的是如下图所示,此时再点“添加”:在弹出的“选择组”对话框中找到“Guests”,点“添加”,此组就会出现在下方的文本框中,然后点“确定”:出现的就是如下图所示的内容,点“确定”关闭此对话框。(图7)

终结Webshell 加固web服务器

图7

3、IIS设置

第一步:打开“Internet 信息服务”,开始对虚拟主机进行设置,本例中的以对“第一虚拟主机”设置为例进行说明,右击该主机名,在弹出的菜单中选择“属性”,弹出一个“第一虚拟主机 属性”的对话框,从对话框中可以看到该虚拟主机用户的使用的是“E:LW1”这个文件夹。(图8)

终结Webshell 加固web服务器

图8

第二步:切换到“资源管理器”,找到“E:LW1”这个文件夹,右击,选“属性”→“安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),首先将最将下的“允许将来自父系的可继承权限传播给该对象”前面的对号去掉:此时会弹出如下图所示的“安全”警告,点“删除”。(图9)

终结Webshell 加固web服务器

图9

第三步:切换到前面打开的“第一虚拟主机 属性”的对话框,打开“目录安全性”选项卡,点匿名访问和验证控制的“编辑”在弹出的“验证方法”对方框,点“编辑”弹出了“匿名用户帐号”,默认的就是“IUSR_机器名”,点“浏览”在“选择 用户”对话框中找到前面创建的新帐号“lw1”,双击此时匿名用户名就改过来了,在密码框中输入前面创建时,为该帐号设置的密码,再确定一遍密码。OK,完成了,点确定关闭这些对话框。 (图10)

终结Webshell 加固web服务器

  图10

提示:如果该用户需要读取硬盘的分区容量及硬盘的序列号,那这样的设置将使其无法读取。如果要允许其读取这些和整个分区有关的内容,请右键点击该硬盘的分区(卷),选择“属性”→“安全”,将这个用户的帐号添加到列表中,并至少给予“读取”权限。由于该卷下的子目录都已经设置为“禁止将来自父系的可继承权限传播给该对象”,所以不会影响下面的子目录的权限设置。

小结:经此设置后,“第一虚拟主机”的用户,使用ASP的 FileSystemObject 组件也只能访问自己的目录:E:LW1下的内容,当试图访问其他内容时,会出现诸如“没有权限”、“硬盘未准备好”、“500 服务器内部错误”等出错提示了。(图11)

 

终结Webshell 加固web服务器

图11

总结:经过了这样的设置,就算攻击者拿到了Webshell,至多对当前的网站进行操作,不会或者不太容易通过提权渗透而对整个Web服务器造成危害。当然,在功与防的斗争中只会此消彼涨,永远没有最后的胜利者。作为服务器的管理者增强安全意识,提高自身的安全技能才是关键。