2024年1月20日发(作者:)
Windows 2003 网站安全权限设置指南
随着互联网的普及和IT信息技术的快速发展,各高校所运维的网站数量和规模与日俱增。
与此同时,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.设置网站目录及其文件的安全权限。
本文将通过实例来详细介绍上面的设置方法:
我们的服务器运行着三个网站
现在我们想为这三个网站分配不同的权限,实现各个网站之间的隔离。于是我们做了如下的规划:
(1).首先创建三个用户IISWK_001、IISWK_002和IISWK_003,分别作为网站、和应用程序池的安全性用户;
(2).接着创建三个用户IUSR_001、IUSR_002和IUSR_003,分别作为这三个网站的匿名访问帐户;
(3).最后我们对这三个网站的目录权限进行调整,比如网站根目录只对IISWK_001和IUSR_001用户开读取权限,而网站根目录只对IISWK_002和IUSR_002用户开读取权限,从而实现了各网站之间权限的隔离。
网站
应用程序池安全用户 匿名访问帐户
IISWK_001
IISWK_002
IISWK_003
IUSR_001
IUSR_002
IUSR_003
网站根目录权限分配
IISWK_001读取权限
IUSR_001 读取权限
IISWK_002 读取权限
IUSR_002 读取权限
IISWK_003 读取权限
IUSR_003 读取权限
表格1.权限规划
1. 创建若干个系统用户,分别作IIS6的应用程序池安全性用户和网站匿名访问帐户。
(1).创建IIS6的应用程序池安全性用户:
首先创建三个用户IISWK_001、IISWK_002和IISWK_003,分别作为网站、和应用程序池的安全性用户。
右击“我的电脑”->“管理”->“系统工具”->“本地用户和组”->右击“用户”->“新用户”
分别添加IISWK_001、IISWK_002和IISWK_003这三个用户,请保存好相关用户的密码,下面将会用到。
同时还要设置“用户不能更改密码”,“密码永不过期”等相关属性,确保帐号的有效性。
请注意,IISWK_001、IISWK_002和IISWK_003帐号创建完毕后,还必须进行以下的设置:
a.赋予这三个用户写入和修改%SystemRoot%Temp目录的权限(例如C:windowsTemp目录)
b.将这三个用户从Users组中删除,同时加入IIS_WPG组。
以上二步是确保应用程序池以及 等程序的正常运行,避免访问页面时报错提示
” Service Unavailable”
组图1、创建应用程序池安全性用户并设置其相关属性
(2).创建三个网站的匿名访问帐户: IUSR_001、IUSR_002和IUSR_003,同时删除其隶属于Users组的权限。如组图2。
组图2、创建网站的匿名访问帐户并设置其相关属性性
2.在IIS管理控制台中,创建若干应用程序池,并分别为每个程序池分配不同的安全性用户。
下面为网站创建新的应用程序池IISWK_001,并对进行相关的配置:
打开IIS管理控制台,右击“应用程序池”->“新建”->“应用程序池”,在出现的“添加新应用程序池”窗口中输入应用程序池ID : IISWK_001,如组图3所示:
组图3、创建应用程序池IISWK_001
接着右击所创建的应用程序池IISWK_001,选择“属性”->“标识”,在应用程序池标识处,选择“配置”,并点击其右边的“浏览”按钮,查找到IISWK_001用户,确认并输入IISWK_001用户的密码和确认密码。如组图4所示:
组图4. 设置应用程序池IISWK_001的安全性帐户
3.将网站分配到相应的应用程序池。
在IIS管理控件台中,右击打开网站属性,切换到“主目录”标签,在应用程序池下拉菜单处,选择IISWK_001应用程序池,如组图5所示:
组图5..将网站分配到应用程序池IISWK_001
4.更改网站的匿名访问用户。
在IIS管理控件台中,右击打开网站属性,切换到“目录安全性”标签,点击“编辑”按钮,在身份认证方法窗口中,点击“浏览”按钮,选择步骤2所创建的用户IUSR_001用户,输入密码和确认密码,如组图6
组图6 .将网站网站的匿名访问用户更改为IUSR_001
5.设置网站目录及其文件的安全权限。
限于篇幅问题,本文将注重网站目录权限的设置,而其它目录的安全权限设置在此处只作简单介绍。
1. 删除各逻辑分区目录下的Everyone 用户和Users用户组。
2. C:Documents and SettingsAll Users
C:WINDOWSsystem32config
C:Program Files等目录
以及C:WINDOWSsystem32 目录下常用的像、、等管理工具,权限都有必要调整。删除Everyone和Users组的访问权限。
回到正题,对网站的根目录,做如下的安全设置:
保留Administrators用户组和System用户组的完全控制权限,删除其它所有用户的权限,
然后再对IISWK_001和IUSR_001开放以下三个权限:读取和运行、列出文件夹目录、读取
然后对根目录下那些需要开放写入和修改权限的目录进行更改:开放IISWK_001和IUSR_001的写入权限和修改权限。
比如本例中的数据库目录Database和上传目录Upload,应该开放IISWK_001和IUSR_001的写入和修改权限,这样网站便可以正常运行asp、等动态程序了。
按照同样方法对网站根目录开放IISWK_002和IUSR_002的读取访问权限,而其下需要修改权限的目录则开放IISWK_002和IUSR_002的写入和修改权限;对网站根目录开放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
net user
net user
/active:yes
此处 _Password1、_Password2和_Password3为对应用户的密码字段,请记得进行修改。
2. 批量添加网站的匿名访问帐户
net user
net user
net user
/active:yes
IUSR_001 _Password1
IUSR_002 _Password2
IUSR_003 _Password3
/fullname:IUSR_001 /add
/fullname:IUSR_002 /add
/fullname:IUSR_003 /add
/y
/y
/y
/expires:never
/expires:never
/expires:never
/passwordchg:no
/passwordchg:no
/passwordchg:no
/active:yes
/active:yes
IISWK_001 _Password1 /fullname:IISWK_001 /add
IISWK_002 _Password2 /fullname:IISWK_002 /add
IISWK_003 _Password3 /fullname:IISWK_003 /add
/y
/y
/y
/expires:never
/expires:never
/expires:never
/passwordchg:no
/passwordchg:no
/passwordchg:no
/active:yes
/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组
net localgroup IIS_WPG
net localgroup IIS_WPG
net localgroup IIS_WPG
_001GP_WK
_002GP_WK
_003GP_WK
/add
/add
/add
注意,成功添加用户后,记得将所有帐号的属性设定为“密码永不过期”。


发布评论