2006-01-25 17:40:24 by: h4x0r
在服务器之间移动整个网站(包括 FPSE)
在服务器之间移动整个网站(包括 FPSE)
问:
如何可以将整个网站从一台服务器移到另一台服务器中(包括 FrontPage Server Extensions 和安全性)?
答:
有许多方法可以实现这个目的,但具体方法要取决于许多详细情况。例如,从 IIS 5 移到 IIS 5 与从 IIS 5 移到 IIS 6 就有很多不同,不过也有很多相同之处。
一个可能的办法(取决于服务器间的相似程度以及您所授权的详细情况)就是先创建源服务器的映象,然后在目标服务器上加载此映象。假如这两个系统的硬件配置存在很多相同之处的话,这会是一个很有用的将复杂的 IIS 安装从一台服务器移到另一台服务上的方法。当您具有很多本地用户和组时,这个方法显得尤为有用。
所有其他方法都需要投入更多工作。但是随着 FrontPage web 的流行,我强烈建议您使用 FrontPage 客户端将网站从一台服务器发布到另一台服务器上。这样可以确保最大程度的功能,但是需要在进行移动之前先创建网站,并将 FrontPage Server Extensions 添加到目标站点中。取决于要移动的站点数量,这将是移动 FrontPage Web 站点的首选方法。
在从 IIS 5 向 IIS 6 移动时,您可以移动内容、在 IIS 中创建一个重复的网站以及移动已知帐户(例如 Users、Everyone、Authenticated Users,等等)的权限,所有这些都可以使用"IIS 6 资源指南"中的 IIS 迁移工具 一次性完成。此外,在这个工具中还有一个开关,您可以使用这个开关将 FrontPage Server Extensions 自动添加到目标服务器上的新网站中。您可能希望从 Microsoft.com/downloads 中下载最新版本,本文写作时为 1.1 版 。
您还应寻找 Adsonline 的 IIS Export。这个软件工具在帮助用户迁移 IIS 方面具有长期和良好的声誉。
您提到的移动本地权限会有一点麻烦。本地用户和组的权限不能直接迁移动另一台服务器上。这包括 FrontPage Server Extensions 可能会在扩展网站时创建的类似于 IUSR 帐户的用户和本地组。您必须在目标服务器上创建新的用户或组,并重新分配权限。Microsoft 并不提供用于将本地用户和组从一台计算机复制到另一台计算机的实用工具,不过,有这样的软件。Small Wonders 软件提供的一个称为 Secure Copy 的产品就可以实现这个目的。并且可能还存在其他类似产品。
除了上述问题之外,您还需要在源服务器上使用的证书、Web 应用程序、ODBC 连接、COM 对象以及其他技术等方面进行一些规划。要解决所有这些问题,有些工作做起来不是那么简单,但如果规划好的话也还是容易管理的。
作为参考,可以参阅 Microsoft Windows Server 2003 部署工具包中的部署 IIS 6.0(http://www.microsoft.com/windowsserver2003/techinfo/reskit/deploykit.mspx))
返回页首
--------------------------------------------------------------------------------
修改 Httperr.log 的内容
问:
我们已经尝试过解决 IIS 6.0 服务器上发生的一些应用程序回收问题。但是在查看 httperr.log 文件时,其中包含的信息却不足以说明是哪个应用程序池出了问题。IP 地址和网站实例倒是进行了记录,但是其他有用的信息并不多。httperr.log 文件中的内容是否能以某种方式修改?
答:
IIS 6.0 中的 httperr.log 文件只是为了向我们的读者提供一点解释,它记录的是有关 http.sys 的活动和错误。例如,如果有某个应用程序池脱机,没有网站可以响应请求,这样 http.sys 中就会记录一个条目。无效的 http 请求、超时客户端连接掉线、有效连接由于信息接收太慢而掉线以及其他类似事件都会被记录到其中。
httperr 日志文件的文件格式如下:
字段 描述
Date
以 UTC 时间形式表示的日期。这个条目的长度总是 10 个字符,例如 2000-01-31。
Time
时间,以 UTC 时间形式表示。这个条目的长度总是 8 个字符,例如 00:12:23。
Client IP
客户端的 IP 地址。IP 地址的版本可以是 IPv4 或是 IPv6。如果是 IPv6,则"作用域 ID"字段也会出现。
Client Port
客户端的端口。
Server IP
服务器的 IP 地址。服务器的 IP 地址可以是 IPv4 或是 IPv6。如果是 IPv6,则"作用域 ID"字段也会出现。
Server Port
服务器的端口。
Protocol version
协议版本,如果连接上的最后一个请求经过充分分析后足以确定协议版本的话。如果主版本或次版本大于或者等于 10,驱动程序就会将版本记录为"HTTP/?.?"。
Verb
谓词,如果最后一个请求经过分析认为可以传递谓词状态的话。未知的谓词也会被记录。HTTP.sys 限制谓词的长度不得超过 255 字节,超出的字节将被截断。
CookedURL 和查询
URL 及其查询,如果二者都存在的话。URL 与查询之间以问号 (?) 分隔。如果请求的 URL 被完全处理(也称为 cooked),则处理的 URL 就会被记录并进行本地代码页面转换,同时被视为 Unicode 字段。
如果在记录时仅提供未经处理(原始)的 URL,则会按原样对其进行记录,并且不会进行本地代码页面转换。HTTP.sys 限制 URL 的长度不得超过 4096 字节,超出的字节将被截断。
协议状态
请求的响应的协议状态,如果可用的话。这个值不能大于 999。
Site ID
站点 ID,这是一个数值型的值。例如,这个字段不是记录 W3SVC1,而是会记录"1"。站点 ID 的值没有上限(这个值最大可以到 MAX_ULONG)。
Reason phrase
关于为什么会出现错误的详细信息,取决于错误类型。这个字段不能为空。有关原因短语的更多信息,请参见本章后面的"HTTP.sys Reason phrase"。
(以下地址中可以找到此列表:http://www.microsoft.com/resources/documentation/IIS/6/all/techref/en-us/iisRG_LOG_14.mspx)
您可以看到网站 ID 已经被记录;但是如果每个站点都具有多个应用程序池,您就无法找出请求被定向到网站的哪个池。在 Windows Server 2003 Gold Release 中,这些字段是不可配置的。
为了解决这些问题,Microsoft 发布了一项显著更改 httperr 日志文件的 http.sys 更新。应用此项更新后,您就可以某种程度上配置这个记录的字段,它成了 httperr 日志文件加上 W3SVC 标准日志文件的组合。将与错误有关的"应用程序池"的条目添加到此字段中,您就会有一个更为详细的信息日志文件。
以下地址中详细介绍了这些更改:http://support.microsoft.com/default.aspx?scid=kb;en-us;832975. Windows Server 2003 Service Pack 1 中也包含此功能。
返回页首
--------------------------------------------------------------------------------
在 IIS 6 中删除服务器横幅
问:
我知道可以使用 URLScan 在 IIS 5 中删除服务器横幅,但是,是否有办法在不要求 URLScan 的 IIS 6 中实现这个任务?
答:
首先,让我们来看看 IIS 6 发送回客户端的内容。当您向 Microsoft.com 发出一个请求时,服务器发送给您的内容类似如下:
HTTP/1.1 200 OK
Cache-Control: public
Content-Length: 13073
Content-Type: text/html
Expires: Fri, 08 Oct 2004 18:23:35 GMT
Last-Modified: Fri, 08 Oct 2004 15:36:55 GMT
Server: Microsoft-IIS/6.0
X-AspNet-Version: 1.1.4322
P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA _
PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
X-Powered-By: ASP.NET
Date: Fri, 08 Oct 2004 15:56:26 GMT
正如其名,服务器横幅以黑体格式表示,并清楚地表明这是一个 IIS 6.0 服务器。有些安全专家建议删除此横幅,以便隐藏攻击者连接的 web 服务器类型。这在防范脚本 kiddie 引擎(该引擎可利用横幅,然后返回,并根据横幅启动对服务器的攻击)时会有一定的作用。
恰如您所看到的,服务器响应包含一些表明自身是 Microsoft 服务器的条目,包括 X-ASPNet-Version 编号和 X-Powered-by:ASP.NET。
这些标记是 ASP.net 在 IIS 5 和 IIS 6 服务器中安装和出现时添加的。此外,如果您安装了 FrontPage Server Extensions,您就会发现一个标题,这个标题表明您曾经访问过 Microsoft Office Web Server。
这些额外的标题可以在 IIS 控制台的"HTTP 标题"选项卡上删除。我没有测试过这么做是否会导致 FrontPage 问题,但除此以外不会有任何功能性结果。
如果您删除了服务器标题和插入标记,那么潜在攻击者就只能通过您提供 Asp 或 ASP.net 页面的事实来猜测您是一个 IIS 服务器。这显然价值不高。还有其他类似的简单方法可以计算出您使用什么类型的服务。
因此,总的说来我不认为删除或隐藏服务器横幅会有太大价值。
上面已经说过,您可以通过将以下注册表值设置为 1,以便从 IIS 6 中删除服务器横幅:
HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parpameters\DisableServerHeader
。在 IIS 5 中,您可以使用 URLScan 的 URLScan.ini 文件中的 RemoveServerHeader 设置来删除横幅。
Comments Feed: http://www.4evil.org/feed.asp?q=comment&id=538
问:
如何可以将整个网站从一台服务器移到另一台服务器中(包括 FrontPage Server Extensions 和安全性)?
答:
有许多方法可以实现这个目的,但具体方法要取决于许多详细情况。例如,从 IIS 5 移到 IIS 5 与从 IIS 5 移到 IIS 6 就有很多不同,不过也有很多相同之处。
一个可能的办法(取决于服务器间的相似程度以及您所授权的详细情况)就是先创建源服务器的映象,然后在目标服务器上加载此映象。假如这两个系统的硬件配置存在很多相同之处的话,这会是一个很有用的将复杂的 IIS 安装从一台服务器移到另一台服务上的方法。当您具有很多本地用户和组时,这个方法显得尤为有用。
所有其他方法都需要投入更多工作。但是随着 FrontPage web 的流行,我强烈建议您使用 FrontPage 客户端将网站从一台服务器发布到另一台服务器上。这样可以确保最大程度的功能,但是需要在进行移动之前先创建网站,并将 FrontPage Server Extensions 添加到目标站点中。取决于要移动的站点数量,这将是移动 FrontPage Web 站点的首选方法。
在从 IIS 5 向 IIS 6 移动时,您可以移动内容、在 IIS 中创建一个重复的网站以及移动已知帐户(例如 Users、Everyone、Authenticated Users,等等)的权限,所有这些都可以使用"IIS 6 资源指南"中的 IIS 迁移工具 一次性完成。此外,在这个工具中还有一个开关,您可以使用这个开关将 FrontPage Server Extensions 自动添加到目标服务器上的新网站中。您可能希望从 Microsoft.com/downloads 中下载最新版本,本文写作时为 1.1 版 。
您还应寻找 Adsonline 的 IIS Export。这个软件工具在帮助用户迁移 IIS 方面具有长期和良好的声誉。
您提到的移动本地权限会有一点麻烦。本地用户和组的权限不能直接迁移动另一台服务器上。这包括 FrontPage Server Extensions 可能会在扩展网站时创建的类似于 IUSR 帐户的用户和本地组。您必须在目标服务器上创建新的用户或组,并重新分配权限。Microsoft 并不提供用于将本地用户和组从一台计算机复制到另一台计算机的实用工具,不过,有这样的软件。Small Wonders 软件提供的一个称为 Secure Copy 的产品就可以实现这个目的。并且可能还存在其他类似产品。
除了上述问题之外,您还需要在源服务器上使用的证书、Web 应用程序、ODBC 连接、COM 对象以及其他技术等方面进行一些规划。要解决所有这些问题,有些工作做起来不是那么简单,但如果规划好的话也还是容易管理的。
作为参考,可以参阅 Microsoft Windows Server 2003 部署工具包中的部署 IIS 6.0(http://www.microsoft.com/windowsserver2003/techinfo/reskit/deploykit.mspx))
返回页首
--------------------------------------------------------------------------------
修改 Httperr.log 的内容
问:
我们已经尝试过解决 IIS 6.0 服务器上发生的一些应用程序回收问题。但是在查看 httperr.log 文件时,其中包含的信息却不足以说明是哪个应用程序池出了问题。IP 地址和网站实例倒是进行了记录,但是其他有用的信息并不多。httperr.log 文件中的内容是否能以某种方式修改?
答:
IIS 6.0 中的 httperr.log 文件只是为了向我们的读者提供一点解释,它记录的是有关 http.sys 的活动和错误。例如,如果有某个应用程序池脱机,没有网站可以响应请求,这样 http.sys 中就会记录一个条目。无效的 http 请求、超时客户端连接掉线、有效连接由于信息接收太慢而掉线以及其他类似事件都会被记录到其中。
httperr 日志文件的文件格式如下:
字段 描述
Date
以 UTC 时间形式表示的日期。这个条目的长度总是 10 个字符,例如 2000-01-31。
Time
时间,以 UTC 时间形式表示。这个条目的长度总是 8 个字符,例如 00:12:23。
Client IP
客户端的 IP 地址。IP 地址的版本可以是 IPv4 或是 IPv6。如果是 IPv6,则"作用域 ID"字段也会出现。
Client Port
客户端的端口。
Server IP
服务器的 IP 地址。服务器的 IP 地址可以是 IPv4 或是 IPv6。如果是 IPv6,则"作用域 ID"字段也会出现。
Server Port
服务器的端口。
Protocol version
协议版本,如果连接上的最后一个请求经过充分分析后足以确定协议版本的话。如果主版本或次版本大于或者等于 10,驱动程序就会将版本记录为"HTTP/?.?"。
Verb
谓词,如果最后一个请求经过分析认为可以传递谓词状态的话。未知的谓词也会被记录。HTTP.sys 限制谓词的长度不得超过 255 字节,超出的字节将被截断。
CookedURL 和查询
URL 及其查询,如果二者都存在的话。URL 与查询之间以问号 (?) 分隔。如果请求的 URL 被完全处理(也称为 cooked),则处理的 URL 就会被记录并进行本地代码页面转换,同时被视为 Unicode 字段。
如果在记录时仅提供未经处理(原始)的 URL,则会按原样对其进行记录,并且不会进行本地代码页面转换。HTTP.sys 限制 URL 的长度不得超过 4096 字节,超出的字节将被截断。
协议状态
请求的响应的协议状态,如果可用的话。这个值不能大于 999。
Site ID
站点 ID,这是一个数值型的值。例如,这个字段不是记录 W3SVC1,而是会记录"1"。站点 ID 的值没有上限(这个值最大可以到 MAX_ULONG)。
Reason phrase
关于为什么会出现错误的详细信息,取决于错误类型。这个字段不能为空。有关原因短语的更多信息,请参见本章后面的"HTTP.sys Reason phrase"。
(以下地址中可以找到此列表:http://www.microsoft.com/resources/documentation/IIS/6/all/techref/en-us/iisRG_LOG_14.mspx)
您可以看到网站 ID 已经被记录;但是如果每个站点都具有多个应用程序池,您就无法找出请求被定向到网站的哪个池。在 Windows Server 2003 Gold Release 中,这些字段是不可配置的。
为了解决这些问题,Microsoft 发布了一项显著更改 httperr 日志文件的 http.sys 更新。应用此项更新后,您就可以某种程度上配置这个记录的字段,它成了 httperr 日志文件加上 W3SVC 标准日志文件的组合。将与错误有关的"应用程序池"的条目添加到此字段中,您就会有一个更为详细的信息日志文件。
以下地址中详细介绍了这些更改:http://support.microsoft.com/default.aspx?scid=kb;en-us;832975. Windows Server 2003 Service Pack 1 中也包含此功能。
返回页首
--------------------------------------------------------------------------------
在 IIS 6 中删除服务器横幅
问:
我知道可以使用 URLScan 在 IIS 5 中删除服务器横幅,但是,是否有办法在不要求 URLScan 的 IIS 6 中实现这个任务?
答:
首先,让我们来看看 IIS 6 发送回客户端的内容。当您向 Microsoft.com 发出一个请求时,服务器发送给您的内容类似如下:
HTTP/1.1 200 OK
Cache-Control: public
Content-Length: 13073
Content-Type: text/html
Expires: Fri, 08 Oct 2004 18:23:35 GMT
Last-Modified: Fri, 08 Oct 2004 15:36:55 GMT
Server: Microsoft-IIS/6.0
X-AspNet-Version: 1.1.4322
P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA _
PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
X-Powered-By: ASP.NET
Date: Fri, 08 Oct 2004 15:56:26 GMT
正如其名,服务器横幅以黑体格式表示,并清楚地表明这是一个 IIS 6.0 服务器。有些安全专家建议删除此横幅,以便隐藏攻击者连接的 web 服务器类型。这在防范脚本 kiddie 引擎(该引擎可利用横幅,然后返回,并根据横幅启动对服务器的攻击)时会有一定的作用。
恰如您所看到的,服务器响应包含一些表明自身是 Microsoft 服务器的条目,包括 X-ASPNet-Version 编号和 X-Powered-by:ASP.NET。
这些标记是 ASP.net 在 IIS 5 和 IIS 6 服务器中安装和出现时添加的。此外,如果您安装了 FrontPage Server Extensions,您就会发现一个标题,这个标题表明您曾经访问过 Microsoft Office Web Server。
这些额外的标题可以在 IIS 控制台的"HTTP 标题"选项卡上删除。我没有测试过这么做是否会导致 FrontPage 问题,但除此以外不会有任何功能性结果。
如果您删除了服务器标题和插入标记,那么潜在攻击者就只能通过您提供 Asp 或 ASP.net 页面的事实来猜测您是一个 IIS 服务器。这显然价值不高。还有其他类似的简单方法可以计算出您使用什么类型的服务。
因此,总的说来我不认为删除或隐藏服务器横幅会有太大价值。
上面已经说过,您可以通过将以下注册表值设置为 1,以便从 IIS 6 中删除服务器横幅:
HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parpameters\DisableServerHeader
。在 IIS 5 中,您可以使用 URLScan 的 URLScan.ini 文件中的 RemoveServerHeader 设置来删除横幅。
Comments Feed: http://www.4evil.org/feed.asp?q=comment&id=538
There is no comment on this article.








