Windows 2003已成为比较流行的Web服务器操作系统,安全和性能得到了广泛认可,基于IIS Web服务器软件的网站数量也越来越多。
通常情况下,高校的大多数服务器会由技术力量相对雄厚的网络中心等IT资源部门运维管理。而网站程序的制作则由各单位、各部门自主负责,少数用户单位会自主开发,或者请专业的IT公司代为开发。更多的用户单位则会将网站的制作当作一种福利,交由勤工俭学的学生开发。因此,各网站程序的安全性参差不齐。在这种情况下,如果不对服务器的默认安全权限进行调整,将这些网站运行于同一台服务器上,必将引发不少令人头痛的安全问题。
最常遇到的情况是:一台Windows 2003服务器上运行多个网站,其中某个网站存在着安全漏洞(例如,没有采用参数化的SQL查询或没有对用户提交的SQL语句进行过滤),黑客便可通过攻击该网站取得权限,上传网页木马,得到了一个Web SHELL执行权限,或者直接利用网页木马,篡改该服务器上所有Web站点的源文件,往源文件里加入js和iframe恶意代码。此时那些没有安装反病毒软件的访客,浏览这些页面时便会感染上病毒,不仅引来用户的严重不满和投诉,同时也使学校的形象严重受损。
为了避免类似事件的发生,我们有必要分开部署网站和数据库。通常的做法是将网站存放在一台分配了公网IP的Windows 2003服务器,而数据库则运行于一台与互联网相隔离的私网IP数据库服务器上。但是,仅启用以上的安全措施还远远不够,我们还必须调整这一台Windows2003 WEB服务器的安全权限,对权限作出严格的控制,实现各网站之间权限的隔离,方法如下:
在Web服务器上,1.创建若干个系统用户,分别用作IIS6的应用程序池安全性用户和网站匿名访问帐户。
2.在IIS管理控制台中,创建若干应用程序池,并分别为每个程序池分配不同的安全性用户。
3.将各个网站分配到相应的应用程序池。如果网站数目不多,可以一个网站分配一个应用程序池。
如果网站数目较多,则可以采用分组的形式,组内网站则共处同一应用程序池。
4.更改网站的匿名访问用户。
5.设置网站目录及其文件的安全权限。
本文将通过实例来详细介绍上面的设置方法:
我们的服务器运行着三个网站
http∶//security1.stu.edu.cn
http∶//security2.stu.edu.cn
http∶//security3.stu.edu.cn
现在我们想为这三个网站分配不同的权限,实现各个网站之间的隔离。于是我们做了如下的规划:
(1)首先创建三个用户IISWK_001、IISWK_002和IISWK_003,分别作为网站security1.stu.edu.cn、security2.stu.edu.cn和secruity3.stu.edu.cn应用程序池的安全性用户;
(2)接着创建三个用户IUSR_001、IUSR_002和IUSR_003,分别作为这三个网站的匿名访问帐户;
(3)最后我们对这三个网站的目录权限进行调整,比如security1.stu.edu.cn网站根目录只对IISWK_001和IUSR_001用户开读取权限,而security2.stu.edu.cn网站根目录只对IISWK_002和IUSR_002用户开读取权限,从而实现了各网站之间权限的隔离。
为达到上述目标,我们进行如下设置:
1. 创建若干个系统用户,分别作IIS6的应用程序池安全性用户和网站匿名访问帐户。
(1) 创建IIS6的应用程序池安全性用户:
首先创建三个用户IISWK_001、IISWK_002和IISWK_003,分别作为网站security1.stu.edu.cn、security2.stu.edu.cn和secruity3.stu.edu.cn应用程序池的安全性用户。
右击“我的电脑”→“管理”→“系统工具”→“本地用户和组”→右击“用户”→“新用户”
分别添加IISWK_001、IISWK_002和IISWK_003这三个用户,请保存好相关用户的密码,下面将会用到。
同时设置“用户不能更改密码”,“密码永不过期”等相关属性,确保帐号的有效性。
请注意,IISWK_001、IISWK_002和IISWK_003帐号创建完毕后,还必须进行以下的设置:
赋予这三个用户写入和修改%SystemRoot%\Temp目录的权限(例如C∶\windows\Temp目录);
将这三个用户从Users组中删除,同时加入IIS_WPG组。
以上二步是确保应用程序池以及asp.net 等程序的正常运行,避免访问页面时报错提示”Service Unavailable”。
(2) 创建三个网站的匿名访问帐户: IUSR_001、IUSR_002和IUSR_003,同时删除其隶属于Users组的权限。如组图2。
2.在IIS管理控制台中,创建若干应用程序池,并分别为每个程序池分配不同的安全性用户。
下面为security1.stu.edu.cn网站创建新的应用程序池IISWK_001,并对security1.stu.edu.cn进行相关的配置:
打开IIS管理控制台,右击“应用程序池”→“新建”→“应用程序池”,在出现的“添加新应用程序池”窗口中输入应用程序池ID ∶ IISWK_001,如组图3所示:
接着右击所创建的应用程序池IISWK_001,选择“属性”→“标识”,在应用程序池标识处,选择“配置”,并点击其右边的“浏览”按钮,查找到IISWK_001用户,确认并输入IISWK_001用户的密码和确认密码。如组图4所示:
3.将网站分配到相应的应用程序池。
在IIS管理控件台中,右击打开security1.stu.edu.cn网站属性,切换到“主目录”标签,在应用程序池下拉菜单处,选择IISWK_001应用程序池,如组图5所示:
4.更改网站的匿名访问用户。
在IIS管理控件台中,右击打开security1.stu.edu.cn网站属性,切换到“目录安全性”标签,点击“编辑”按钮,在身份认证方法窗口中,点击“浏览”按钮,选择步骤2所创建的用户IUSR_001用户,输入密码和确认密码,如组图6所示:
5.设置网站目录及其文件的安全权限。
限于篇幅问题,本文将注重网站目录权限的设置,而其他目录的安全权限设置在此处只作简单介绍。
(1) 删除各逻辑分区目录下的Everyone 用户和Users用户组。
(2) C∶\Documents and Settings\All Users
C∶\WINDOWS\system32\config
C∶\Program Files等目录
以及C∶\WINDOWS\system32 目录下常用的如cmd.exe、net.exe、reg.exe等管理工具,权限都有必要调整。删除Everyone和Users组的访问权限。
回到正题,对secrity1.stu.edu.cn网站的根目录,做如下的安全设置:
保留Administrators用户组和System用户组的完全控制权限,删除其他所有用户的权限。
然后再对IISWK_001和IUSR_001开放以下三个权限:读取和运行、列出文件夹目录、读取如组图7所示。
然后对security1.stu.edu.cn根目录下那些需要开放写入和修改权限的目录进行更改:开放IISWK_001和IUSR_001的写入权限和修改权限。
如本例中的数据库目录Database和上传目录Upload,应该开放IISWK_001和IUSR_001的写入和修改权限(如组图8所示),这样security1.stu.edu.cn网站便可以正常运行asp、asp.net等动态程序了。
按照同样方法对security2.stu.edu.cn网站根目录开放IISWK_002和IUSR_002的读取访问权限,而其下需要修改权限的目录则开放IISWK_002和IUSR_002的写入和修改权限;对security3.stu.edu.cn网站根目录开放IISWK_003和IUSR_003的读取访问权限,其下需要修改权限的目录则开放IISWK_003和IUSR_003的写入和修改权限。至于Windows 2003文件安全权限的更高级用法,请参考有关的资料,本文不再多作介绍。
配置到此完成。
接下来我们还需要重启上面所创建的所有应用程序池,或者直接重启IIS,否则访问网站时将出现“ Service Unavailable”的错误。
重启IIS的方法:
“开始菜单”→“运行”→输入 iisreset 命令即可。
现在我们可以正常浏览网站了。打开任务管理,查看进程,我们将发现三个w3wp进程的运行用户不再是NETWORK SERVICE,而是上面所创建的IISWK_001、IISWK_002和IISWK_003。
如果想实现批量添加用户,则可根据下面提供的命令,修改成相应的用户名和密码,然后保存为.bat脚本文件即可。
1. 批量添加应用程序池的安全性用户:
net user IISWK_001 _Password1 /fullname∶IISWK_001 /add /y /expires:never /passwordchg∶no /active∶yes
net user IISWK_002 _Password2 /fullname∶IISWK_002 /add /y /expires∶never /passwordchg∶no /active∶yes
net user IISWK_003 _Password3 /fullname∶IISWK_003 /add /y /expires∶never /passwordchg∶no /active∶yes
此处 _Password1、_Password2和_Password3为对应用户的密码字段,请记得进行修改。
2. 批量添加网站的匿名访问帐户
net user IUSR_001 _Password1 /fullname:IUSR_001 /add /y /expires:never /passwordchg∶no /active∶yes
net user IUSR_002 _Password2 /fullname:IUSR_002 /add /y /expires:never /passwordchg∶no /active∶yes
net user IUSR_003 _Password3 /fullname:IUSR_003 /add /y /expires:never /passwordchg∶no /active∶yes
3. 批量将所创建的用户从默认的Users组中删除。
net localgroup users IISWK_001 /delete
net localgroup users IISWK_002 /delete
net localgroup users IISWK_003 /delete
net localgroup users IUSR_001 /delete
net localgroup users IUSR_002 /delete
net localgroup users IUSR_003 /delete
4. 批量将所创建的应用程序池安全性用户加入IIS_WPG组(参见表2)。
注意,成功添加用户后,记得将所有帐号的属性设定为“密码永不过期”。
Windows2003用户权限设置
系统用户:
自己添加的用户、添加后删除Users(组)、删除后添加到guests来宾帐号(组)
为加强系统安全、(guest)用户及(iusr_服务器名)用户均被禁用
将访问web目录的全部账户设为guests组、去除其他的组
这里可以设置一个 WEB用户的组 把WEB站点用户名加到这个组中
■盘符 安全访问权限
△C:\盘 administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
△D:\盘 (如果用户网站内容放置在这个分区中)、administrators(组) 完全控制权限
△E:\盘 administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
△f:\盘 administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
△如有其他盘符类推下去.
■目录安全访问权限
▲c:\windows\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
▲c:\windows\system32\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限、iwam_服务器名(用户) 读取+运行权限
▲c:\windows\temp\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限、guests(组) 完全控制权限
这里要给你的WEB用户组添加权限 要不access就是出现500错误
▲C:\WINDOWS\system32\config\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
▲c:\Program Files\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
▲C:\Program Files\Common Files\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限、guests(组) 读取+运行权限
▲c:\Documents and Settings\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
▲C:\Documents and Settings\All Users\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
▲C:\Documents and Settings\All Users\Application Data\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
▲C:\Documents and Settings\All Users\Application Data\Microsoft\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
▲C:\Documents and Settings\All Users\Application Data\Microsoft\HTML Help\
△administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
■禁止系统盘下的EXE文件:
net.exe、cmd.exe、tftp.exe、netstat.exe、regedit.exe、regedt32.exe、at.exe、attrib.exe、cacls.exe
△些文件都设置成 administrators 完全控制权限
使用时恢复权限或删除后刷新