Total Pageviews

Thursday 8 March 2012

用IIS建立高安全性Web服务器

因为IIS(即Internet Information Server)的方便性和易用性,使它成为最受欢迎的Web服务器软件之一。但是,IIS的安全性却一直令人担忧。如何利用IIS建立一个安全的Web服务器,是很多人关心的话题。

构造一个安全系统

要创建一个安全可靠的Web服务器,必须要实现Windows 2000和IIS的双重安全,因为IIS的用户同时也是Windows 2000的用户,并且IIS目录的权限依赖Windows的NTFS文件系统的权限控制,所以保护IIS安全的第一步就是确保Windows 2000操作系统的安全:

1. 使用NTFS文件系统,以便对文件和目录进行管理。

2. 关闭默认共享

打开注册表编辑器,展开“HKEY_LOCAL_MACHINESYSTEMCurrentControlSet
ServicesLanmanServerParameters”项,添加键值AutoShareServer,类型为REG_DWORD,值为0。 这样就可以彻底关闭“默认共享”。

3. 修改共享权限

建立新的共享后立即修改Everyone的缺省权限,不让Web服务器访问者得到不必要的权限。

4. 为系统管理员账号更名,避免非法用户攻击。

鼠标右击[我的电脑]→[管理]→启动“计算机管理”程序,在“本地用户和组”中,鼠标右击“管理员账号(Administrator)”→选择“重命名”,将管理员账号修改为一个很普通的用户名。

5. 禁用TCP/IP 上的NetBIOS

鼠 标右击桌面上[网络邻居] →[属性] →[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[WINS],选中下侧的“禁用 TCP/IP上的NetBIOS”一项即可解除TCP/IP上的NetBIOS。

6. TCP/IP上对进站连接进行控制

鼠 标右击桌面上[网络邻居] →[属性] →[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[选项], 在列表中单击选中“TCP/IP筛选”选项。单击[属性]按钮,选择“只允许”,再单击[添加]按钮,只填入80端口。

7. 修改注册表,减小拒绝服务攻击的风险。

打开注册表:将HKLMSystem

CurrentControlSetServicesTcpipParameters下的SynAttackProtect的值修改为2,使连接对超时的响应更快。

保证IIS自身的安全性

IIS安全安装

要构建一个安全的IIS服务器,必须从安装时就充分考虑安全问题。

1. 不要将IIS安装在系统分区上。

2. 修改IIS的安装默认路径。

3. 打上Windows和IIS的最新补丁。

IIS的安全配置

1. 删除不必要的虚拟目录

IIS安装完成后在wwwroot下默认生成了一些目录,包括IISHelp、IISAdmin、
IISSamples、MSADC等,这些目录都没有什么实际的作用,可直接删除。

2. 删除危险的IIS组件

默认安装后的有些IIS组件可能会造成安全威胁,例如 Internet服务管理器(HTML)、SMTP Service和NNTP Service、样本页面和脚本,大家可以根据自己的需要决定是否删除。

3. 为IIS中的文件分类设置权限

除 了在操作系统里为IIS的文件设置必要的权限外,还要在IIS管理器中为它们设置权限。一个好的设置策略是:为Web 站点上不同类型的文件都建立目录,然后给它们分配适当权限。例如:静态文件文件夹允许读、拒绝写,ASP脚本文件夹允许执行、拒绝写和读取,EXE等可执 行程序允许执行、拒绝读写。

4. 删除不必要的应用程序映射

ISS中默认存在很多种应用程序映射,除了ASP的这个程序映射,其他的文件在网站上都很少用到。

在“Internet 服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面中,点击[配置]按钮,弹出“应用程序配置”对话框,在“应用程序映 射”页面,删除无用的程序映射。如果需要这一类文件时,必须安装最新的系统修补补丁,并且选中相应的程序映射,再点击[编辑]按钮,在“添加/编辑应用程 序扩展名映射”对话框中勾选“检查文件是否存在”选项。这样当客户请求这类文件时,IIS会先检查文件是否存在,文件存在后才会去调用程序映射中定义的动 态链接库来解析。

5. 保护日志安全

日志是系统安全策略的一个重要环节,确保日志的安全能有效提高系统整体安全性。

● 修改IIS日志的存放路径

默 认情况下,IIS的日志存放在%WinDir%System32LogFiles,黑客当然非常清楚,所以最好修改一下其存放路径。在“Internet 服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“Web站点”页面中,在选中“启用日志记录”的情况下,点击旁边的[属性]按钮, 在“常规属性”页面,点击[浏览]按钮或者直接在输入框中输入日志存放路径即可。

● 修改日志访问权限,设置只有管理员才能访问。

通过以上的一些安全设置,相信你的Web服务器会安全许多。

-------------------------------------------------------------------------
win2k3 web服务器的安全设置 

基本的服务器安全设置
1、安装补丁
安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP1,然后点击开始→Windows Update,安装所有的关键更新。
2、安装杀毒软件
至于杀毒软件目前我使用有两款,一款是瑞星,一款是诺顿,瑞星杀木马的效果比诺顿要强,我测试过病毒包,瑞星要多杀出很多,但是装瑞星的话会有一个问题就是会出现ASP动态不能访问,这时候需要重新修复一下,具体操作步骤是:
关闭杀毒软件的所有的实时监控,脚本监控。
╭═══════════════╮╭═══════════════╮
在Dos命令行状态下分别输入下列命令并按回车(Enter)键:
regsvr32 jscript.dll (命令功能:修复Java动态链接库)
regsvr32 vbscript.dll (命令功能:修复VB动态链接库)
╰═══════════════╯╰═══════════════╯
不要指望杀毒软件杀掉所有的木马,因为ASP木马的特征是可以通过一定手段来避开杀毒软件的查杀。
3、设置端口保护和防火
2003的端口屏蔽可以通过自身防火墙来解决,这样比较好,比筛选更有灵活性,桌面—>网上邻居—>(右键)属性—>本地连接—>(右键)属性—>高级—>(选中)Internet 连接防火墙—>设置
把服务器上面要用到的服务端口选中
例如:一台WEB服务器,要提供WEB(80)、FTP(21)服务及远程桌面管理(3389)
在“FTP 服务器”、“WEB服务器(HTTP)”、“远程桌面”前面打上对号
如果你要提供服务的端口不在里面,你也可以点击“添加”铵钮来添加,具体参数可以参照系统里面原有的参数。
然后点击确定。注意:如果是远程管理这台服务器,请先确定远程管理的端口是否选中或添加。

权限设置
权限设置的原理
• WINDOWS用户,在WINNT系统中大多数时候把权限按用户(組)来划分。在【开始→程序→管理工具→计算机管理→本地用户和组】管理系统用户和用户组。
• NTFS权限设置,请记住分区的时候把所有的硬盘都分为NTFS分区,然后我们可以确定每个分区对每个用户开放的权限。【文件(夹)上右键→属性→安全】在这里管理NTFS文件(夹)权限。
• IIS匿名用户,每个IIS站点或者虚拟目录,都可以设置一个匿名访问用户(现在暂且把它叫“IIS匿名用户”),当用户访问你的网站的.ASP文件的时候,这个.ASP文件所具有的权限,就是这个“IIS匿名用户”所具有的权限。
权限设置
磁盘权限
系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘Documents and SettingsAll Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘Inetpub 目录及下面所有目录、文件只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘WindowsSystem32cacls.exe、cmd.exe、net.exe、net1.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限
4、禁用不必要的服务
开始菜单—>管理工具—>服务
Print Spooler
Remote Registry
TCP/IP NetBIOS Helper
Server
以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。
改名或卸载不安全组件
不安全组件不惊人
在阿江探针1.9里加入了不安全组件检测功能(其实这是参考7i24的代码写的,只是把界面改的友好了一点,检测方法和他是基本一样的),这个功能让很多站长吃惊不小,因为他发现他的服务器支持很多不安全组件。
其实,只要做好了上面的权限设置,那么FSO、XML、strem都不再是不安全组件了,因为他们都没有跨出自己的文件夹或者站点的权限。那个欢乐时光更不用怕,有杀毒软件在还怕什么时光啊。
最危险的组件是WSH和Shell,因为它可以运行你硬盘里的EXE等程序,比如它可以运行提升程序来提升SERV-U权限甚至用SERVU来运行更高权限的系统程序。
谨慎决定是否卸载一个组件
组 件是为了应用而出现的,而不是为了不安全而出现的,所有的组件都有它的用处,所以在卸载一个组件之前,你必须确认这个组件是你的网站程序不需要的,或者即 使去掉也不关大体的。否则,你只能留着这个组件并在你的ASP程序本身上下工夫,防止别人进来,而不是防止别人进来后SHELL。
比如,FSO和XML是非常常用的组件之一,很多程序会用到他们。WSH组件会被一部分主机管理程序用到,也有的打包程序也会用到。
5、卸载最不安全的组件
最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,( 以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:WINDOWS )
regsvr32/u C:WINNTSystem32wshom.ocx
del C:WINNTSystem32wshom.ocx
regsvr32/u C:WINNTsystem32shell32.dll
del C:WINNTsystem32shell32.dll
然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。
改名不安全组件
需要注意的是组件的名称和Clsid都要改,并且要改彻底了。下面以Shell.application为例来介绍方法。
打 开注册表编辑器【开始→运行→regedit回车】,然后【编辑→查找→填写Shell.application→查找下一个】,用这个方法能找到两个注 册表项:“{13709620-C279-11CE-A49E-444553540000}”和“Shell.application”。为了确保万无一 失,把这两个注册表项导出来,保存为 .reg 文件。
比如我们想做这样的更改
13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001
Shell.application 改名为 Shell.application_ajiang
那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是十个数字和ABCDEF六个字母。
下面是我修改后的代码(两个文件我合到一起了):
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTCLSID{13709620-C279-11CE-A49E-444553540001}]
@="Shell Automation Service"

[HKEY_CLASSES_ROOTCLSID{13709620-C279-11CE-A49E-444553540001}InProcServer32]
@="C:WINNTsystem32shell32.dll"
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOTCLSID{13709620-C279-11CE-A49E-444553540001}ProgID]
@="Shell.Application_ajiang.1"

[HKEY_CLASSES_ROOTCLSID{13709620-C279-11CE-A49E-444553540001}TypeLib]
@="{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}"

[HKEY_CLASSES_ROOTCLSID{13709620-C279-11CE-A49E-444553540001}Version]
@="1.1"

[HKEY_CLASSES_ROOTCLSID{13709620-C279-11CE-A49E-444553540001}VersionIndependentProgID]
@="Shell.Application_ajiang"

[HKEY_CLASSES_ROOTShell.Application_ajiang]
@="Shell Automation Service"

[HKEY_CLASSES_ROOTShell.Application_ajiangCLSID]
@="{13709620-C279-11CE-A49E-444553540001}"

[HKEY_CLASSES_ROOTShell.Application_ajiangCurVer]
@="Shell.Application_ajiang.1"
你可以把这个保存为一个.reg文件运行试一下,但是可别就此了事,因为万一黑客也看了我的这篇文章,他会试验我改出来的这个名字的。
6、防止列出用户组和系统进程
在阿江ASP探针1.9中结合7i24的方法利用getobject("WINNT")获得了系统用户和系统进程的列表,这个列表可能会被黑客利用,我们应当隐藏起来,方法是:
【开始→程序→管理工具→服务】,找到Workstation,停止它,禁用它。
防止Serv-U权限提升
其实,注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。
用Ultraedit打开ServUDaemon.exe查找Ascii:LocalAdministrator,和#l@$ak#.lk;0@P,修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。
另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。
利用ASP漏洞攻击的常见方法及防范
一 般情况下,黑客总是瞄准论坛等程序,因为这些程序都有上传功能,他们很容易的就可以上传ASP木马,即使设置了权限,木马也可以控制当前站点的所有文件 了。另外,有了木马就然后用木马上传提升工具来获得更高的权限,我们关闭shell组件的目的很大程度上就是为了防止攻击者运行提升工具。
如果论坛管理员关闭了上传功能,则黑客会想办法获得超管密码,比如,如果你用动网论坛并且数据库忘记了改名,人家就可以直接下载你的数据库了,然后距离找到论坛管理员密码就不远了。
作 为管理员,我们首先要检查我们的ASP程序,做好必要的设置,防止网站被黑客进入。另外就是防止攻击者使用一个被黑的网站来控制整个服务器,因为如果你的 服务器上还为朋友开了站点,你可能无法确定你的朋友会把他上传的论坛做好安全设置。这就用到了前面所说的那一大堆东西,做了那些权限设置和防提升之后,黑 客就算是进入了一个站点,也无法破坏这个网站以外的东西。
 

No comments:

Post a Comment