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

注意,成功添加用户后,记得将所有帐号的属性设定为“密码永不过期”。