iis撰写的日志

关于IIS6.0的Kernel Caching

在使用Http Watch跟踪一个网站设置Cache-Control头的效果时,发现在Http Watch记录的信息中.ASPX页面也显示为(Cache),但当我手工改变这个页面的数据时Http Watch中记录的信息为 Get 200 重新在服务器获取了新的数据。

开始以为是设置Cache-Control头引起的问题,将IIS的设置还原后发现Http Watch的要跟踪信息仍然如此。

查找相关信息后,觉得出现这个现象的原因应该是“IIS6.0的Kernel Caching”引起的。

相关的英文资料:IIS Kernel Caching

用IIS6.0的Kernel Caching

  如果你的应用程序没用运行在IIS6.0(windows server 2003)中,那么你就失去了一些很好的提高应用程序性能的方法。在第七个方法中,我讲了用页面输出缓存提高应用程序的性能的方法。在IIS5.0中,当一个请求到来到IIS后,IIS会把它转给ASP.net,当应用了页面输出缓存时,ASP.NET中的HttpHandler会接到该请求,HttpHandler从缓存中把内容取出来并返回。

  如果你用的是IIS6.0,它有一个非常好的功能就是Kernel Caching,而且你不必修改ASP.net程序中任何代码。当ASP.net接到一个已缓存的请求,IIS的Kernel Cache会从缓存中得到它的一份拷贝。当从网络中传来一个请求的时,Kernel层会得到该请求,如果该请求被缓存起来了,就直接把缓存的数据返回,这样就完工了。这就意味着当你用IIS的Kernel Caching来缓存页面输出时,你将获得不可置信的性能提升。在开发VS.NET 2005的 ASP.net时有一点,我是专门负ASP.net性能的程序经理,我的程序员用了这个方法,我看了所有日报表数据,发现用kernel model caching的结果总是最快的。它们的一个共同的特征就是网络的请求和响应量很大,但IIS只占用了5%的CPU资源。这是令人惊奇的。有许多让你使用用IIS6.0的理由,但kernel cashing是最好的一个。

Kernel-Mode Caching

Kernel-mode caching is available when using IIS 6.0, both in worker process isolation mode and in IIS 5.0 isolation mode (see below). As a single point of contact for all incoming (server-side) HTTP requests, HTTP.sys provides high-performance connectivity for HTTP server applications and provides overall connection management, bandwidth throttling, and Web server logging. IIS 6.0 has been built on top of HTTP.sys and has been specifically tuned to increase Web server throughput. In addition, under specific circumstances, HTTP.sys directly processes requests in the kernel. Both static and dynamic content from Web sites and applications can be cached in the HTTP.sys cache for high-performance responses.

IIS 6.0 has advanced heuristics built in to determine the cacheable hot-set of an application or set of sites. Just because an item is cacheable, does not necessarily mean it makes sense to add that item to an in-memory cache, since there is a cost to managing the item and the memory it consumes. Therefore, IIS 6.0 uses a new heuristic to determine which items should be cached on the basis of the distribution of requests that a particular application receives. This means that the Web server makes better use of the resources available, while sustaining the performance on frequent requests, leading to scalability improvements.

IIS 6.0 also has heuristics built in to monitor the overall state of the server, and makes decisions to increase or reduce concurrency on that basis. The central idea here is to be efficient in using concurrency. For example, when executing processor-bound requests, starting concurrent work is not always the best approach.

IIS 6.0 Resource Kit Tools 资源工具箱

IIS 6.0 Resource Kit Tools(资源工具箱)可以帮助你管理、保护及控制 IIS。使用这些工具可以查询日志文件、配置 SSL 证书,使用自定义站点身份验证,校验权限,排查问题,执行委托管理,运行压力测试等等。

Internet Information Services (IIS) 6.0 Resource Kit Tools

资源工具箱目前包含以下工具: 

 IIS 6.0 资源工具箱直接下载

  • IIS 6.0 Migration Tool Version 1.0 单独下载 Version1.1
  • Apache to IIS 6.0 Migration Tool Version 1.0
  • CustomAuth Version 1.0 自定义站点身份验证
  • IISCertDeploy.vbs Version 1.0 配置 SSL 证书
  • IIS Host Helper Service Version 1.0
  • IISState Version 3.0
  • Log Parser Version 2.1 单独下载 Version 2.2查询日志文件
  • Metabase Explorer Version 1.6
  • Permissions Verifier Version 1.0 校验权限
  • RemapUrl Version 1.0
  • SelfSSL Version 1.0
  • TinyGet Version 5.2
  • Web Capacity Analysis Tool Version 5.2
  • WFetch Version 1.3

用MRTG在IIS 6.0上实现入侵检测功能

MRTG(Multi Router Traffic Grapher)是一个跨平台的监控网络链路流量负载的工具软件,目前它可以运行在大多数Unix系统和Windows NT之上。它通过snmp协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载。

或许你还不知道,MRTG还是一个有效的入侵检测工具。大家都知道,入侵者扫描与破坏后都能生成一些异常的网络流量,而人们在一般情况下是意识不到的。但是MRTG却能通过图形化的形式给管理员提供入侵的信息。并可以查出数周之前的入侵信息,以备管理员参考。

一,攻击行为对服务器造成的信息

1,攻击者使用CGI漏洞扫描器对潜在的CGI漏洞脚本进行扫描时,HTTP 404 Not Found errors的记录会增长。

2,攻击者尝试暴力破解服务器上的帐户,HTTP 401 Authorization Required errors 的记录会增长。

3,一种新的蠕虫出现,某一个特定的协议的流量会增长。

4,蠕虫通过傀儡主机,攻击其他的服务器,出外的流量增加,并增大CPU的负荷。

5,入侵者尝试SQL injection攻击,HTTP 500 Server Errors记录会增长。

6,垃圾邮件发送者在网络上寻找中继SMTP服务器来发送垃圾邮件,会造成SMTP的和DNS lookups流量大增,同时造成CPU负荷增大。

7,攻击者进行DDOS攻击,会造成ICMP流量,TCP连接,虚假的IP,多播广播流量大增。造成浪费大量的带宽。

看完上面的,我们可以总结出,攻击者要入侵必须会影响到服务器的这些资源:: CPU, RAM,磁盘空间,网络连接和带宽。入侵者还有可能对服务器建立进程后门,开放端口,他们还对他们的入侵行为进行伪装掩盖,避免遭到入侵检测系统的监视。

二,攻击者使用以下的方法避免被检测到:

1,探测扫描很长时间后,才进行真正的入侵进攻。

2,从多个主机进行攻击,避免单一的主机记录。

3,尽量避免入侵造成的CPU, RAM和驱动器的负荷。

4,利用管理员无人职守时入侵,在周末或者节假日发起攻击。

三,对于IIS 6,我们需要监视的是

1,网络流量,包括带宽,数据包,连接的数量等。

2,网络协议的异常错误。

3,网站的内外流量,包括用户的权限设置,外部请求的错误流量等。

4,线程和进程。

四,在Windows 2003下安装MRTG

在使用MRTG之前,你需要在你的服务器里安装SNMP 服务。具体步骤如下:从控制面板中选择添加/删除程序,点击添加和删除windows组件。管理和监视工具中的详细资料里就可以找到简单网络管理协议,即可安装。

安装成功后,你需要立刻安全配置一下,我们大家都知道,SNMP在网络上决不是一个安全的协议,你可以通过http://support.microsoft.com/?kbid=324261这 个连接来具体了解。但是我们只是在本地使用SNMP,但是还是建议你通过防火墙屏蔽SNMP的161与162端口和使用IPSec。并且要配置为 obscure community string。在管理工具中,在服务中选择安全,设为只读访问。尽管community string安全问题不多,但是你还是要避免使用community string为只读访问。

MRTG是一个用Perl编译的C程序。你还要安装ActivePerl来解决支持脚本的问题。下载最新的MRTG。可以到http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/下载,

注意要选择.zip的文件下载。这篇文章所使用的版本请到http://securityfocus.com/microsoft/images/burnett_MRTG_files.zip下载。

把MRTG解压到C:Program FilesMRTG目录下。

安装Perl的过程其实很简单。首先打开PERL的安装文件 ,点下一步,然后同意软件使用权的协议,下一个画面会让您确认是否使用[PPM3发送个人信息至ASPN],还是省着点儿,不要选它,直接按下一步。然后就是下一步直通车,直至Perl安装成功。

由于MRTG是一个Perl写的程序,不需要安装,稍后有些安装过程需要在DOS里面完成,所以建议解压的路径为C:MRTG。

下面给出详细的安装步骤:

1. 运行cmd,进入DOS窗口;

c:>cdMRTGbin 进入刚才解压的MRTG目录,准备执行命令;

使用perl MRTG 命令测试MRTG是否正确;

执行命令行perl cfgmaker caacnetwork@10.3.0.20 –global "WorkDir: C:InetpubwwwrootMRTG" –output caacnetwork.cfg

caacnetwork.cfg是输出配置文件,位置在MRTGbin。 workdir内是MRTG生成的网页文件。本例指定在IIS默认目录。

caacnetwokr@10.3.0.20 注释: caacnetwork是团体名, 10.3.0.20是IP地址。

当有多个设备要监控时,用下面的命令:

perl cfgmaker caacnetwork@ip1 caacnetwork@IP2 community@ip3 –global "WorkDir: C:InetpubwwwrootMRTG" –output caacnetwork.cfg

2.为了让MRTG每个五分钟监视一次,在DOS下MRTGbin目录用下面的命令:

(1)echo RunAsDaemon:yes>>caacnetwork.cfg

(2)echo Interval:5>>caacnetwork.cfg

3.使用indexmaker生成报表首页:

perl indexmaker caacnetwork.cfg>c:InetpubwwwrootMRTGindex.htm

4.运行MRTG:

perl MRTG –logging=caacnetwork.log caacnetwork.cfg

访问c:InetpubwwwrootMRTGindex.htm检查MRTG是否可以正常工作,生成统计图形。

5.将MRTG 配置为系统服务

使用windows 2003 resource kit中的Instsrv.exe和srvany.exe。首先安装win2003 rerouse kit

将srvany.exe拷贝到c:MRTGbin 目录

1.添加srvany.exe为服务

instsrv MRTG "c:MRTGbinsrvany.exe"

2. 配置srvany:

在注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMRTG中,添加一个parameters子键。在该子键中添加以下项目:

Application的字串值,内容为c:perlbinperl.exe —该值为perl程序目录。

AppDirectory的字串值,内容为c:MRTGBIN —-该值为MRTG程序目录。

AppParameters的字串值,内容为MRTG –logging=caacnetwork.log caacnetwork.cfg。

3.管理工具—服务中,找到MRTG服务,启用服务。

MRTG就可以全天监视制定主机的网络信息了。

五,具体配置SNMP计数器

尽管微软提供了SNMP的计数器,但是我发现它对一些应用程序支持有些问题,然而,MRTG却能从很多的应用程序中得到消息。但是我们通过 Windows Management Instrumentation (WMI) 也能得到包括所有的计数器的性能信息。同SNMP不同的是,微软在WMI下了很大的时间和金钱。比如:我想得到关于线程和进程的信息,我可以使用以下的脚 本轻易实现:

Set oWService=GetObject("winmgmts:localhostrootcimv2")

Set colItems=oWService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_System",,48)

For Each Item in colItems

Param1=Param1 + Item.Processes

Param2=Param2 + Item.Threads

Uptime=Item.SystemUptime

Next

WScript.Echo Param1

WScript.Echo Param2

WScript.Echo Uptime &" seconds"

WScript.Echo "LocalHost"

Another problem I had was getting detailed or custom web statistics through either SNMP or WMI. To solve that, I used Microsoft’s LogParser tool to run custom queries from a simple batch file:

@for /f "tokens=1,2,3,4* delims=/ " %%i in (‘date /t’) do @set year=%%l&& @set month=%%j&& @set day=%%k

@set logfile=c:windowssystem32LogFiles%1ex%YEAR:~2,2%%month%%day%.log

@If Exist %logfile% (

@logparser "SELECT COUNT(*) FROM %logfile% WHERE (sc-status>= 400AND sc-status<500)

AND TO_TIMESTAMP(date, time) >SUB(SYSTEM_TIMESTAMP(), TO_TIMESTAMP(‘5′,’m'))" -q

@logparser "SELECT COUNT(*) FROM %logfile% WHERE (sc-status>= 500AND sc-status<600)

AND TO_TIMESTAMP(date, time) >SUB(SYSTEM_TIMESTAMP(), TO_TIMESTAMP(‘5′,’m'))" -q

) ELSE (

@Echo %logfile%

@Echo 0

)

@Echo Unknown

@Echo %1

因为微软的日志记录工具也非常强大,和MRTG的计数器配合使用,在加上免费的入侵检测系统Snort,效果会更好。

六,最后

在你自定义的完你的计数器完成之后,通过图行化的状况就可以轻易的找出入侵者。可以在网站http://snmpboy.msft.net看到在Windows 2003 server中的snmp更多的信息。

Windows 2003 防木马、权限设置、IIS服务器安全配置整理

今天一朋友的服务器被人挂马了,记录一下对服务器实现防木马、权限设置、IIS服务器安全配置的设置过程:

一、系统的安装  
1、按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面。
2、IIS6.0的安装
开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件
应用程序 ———ASP.NET(可选)
|——启用网络 COM+ 访问(必选)
|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选) 
|——公用文件(必选)
|——万维网服务———Active Server pages(必选)
|——Internet 数据连接器(可选)
|——WebDAV 发布(可选)
|——万维网服务(必选)
|——在服务器端的包含文件(可选)
然后点击确定—>下一步安装。(具体见本文附件1)

3、系统补丁的更新
点击开始菜单—>所有程序—>Windows Update
按照提示进行补丁的安装。

4、备份系统
用GHOST备份系统。

5、安装常用的软件
例如:杀毒软件、解压缩软件等;安装完毕后,配置杀毒软件,扫描系统漏洞,安装之后用GHOST再次备份系统。

6、先关闭不需要的端口 开启防火墙 导入IPSEC策略
在 ”网络连接”里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据 包计划程序。在高级tcp/ip设置里–"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。在高级选项里,使用"Internet 连接防火墙",这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。

修改3389远程连接端口
修改注册表.
开始–运行–regedit
依次展开 HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/
TERMINAL SERVER/WDS/RDPWD/TDS/TCP
右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000 )

HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/TERMINAL SERVER/
WINSTATIONS/RDP-TCP/
右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000 )
注意:别忘了在WINDOWS2003自带的防火墙给+上10000端口
修改完毕.重新启动服务器.设置生效.

二、用户安全设置
1、禁用Guest账号
在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进去。
2、限制不必要的用户
去掉所有的Duplicate User用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。
3、把系统Administrator账号改名
大家都知道,Windows 2003 的Administrator用户是不能被停用的,这意味着别人可以一遍又一遍地尝试这个用户的密码。尽量把它伪装成普通用户,比如改成Guesycludx。
4、创建一个陷阱用户
什么是陷阱用户?即创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。这样可以让那些 Hacker们忙上一段时间,借此发现它们的入侵企图。
5、把共享文件的权限从Everyone组改成授权用户
任何时候都不要把共享文件的用户设置成“Everyone”组,包括打印共享,默认的属性就是“Everyone”组的,一定不要忘了改。
6、开启用户策略
使用用户策略,分别设置复位用户锁定计数器时间为20分钟,用户锁定时间为20分钟,用户锁定阈值为3次。 (该项为可选)
7、不让系统显示上次登录的用户名
默 认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录 的用户名。方法为:打开注册表编辑器并找到注册表“HKLM\Software\Microsoft\Windows T\CurrentVersion\Winlogon\Dont-DisplayLastUserName”,把REG_SZ的键值改成1。
密码安全设置
1、使用安全密码
一些公司的管理员创建账号的时候往往用公司名、计算机名做用户名,然后又把这些用户的密码设置得太简单,比如“welcome”等等。因此,要注意密码的复杂性,还要记住经常改密码。
2、设置屏幕保护密码
这是一个很简单也很有必要的操作。设置屏幕保护密码也是防止内部人员破坏服务器的一个屏障。
3、开启密码策略
注意应用密码策略,如启用密码复杂性要求,设置密码长度最小值为6位 ,设置强制密码历史为5次,时间为42天。
4、考虑使用智能卡来代替密码
对于密码,总是使安全管理员进退两难,密码设置简单容易受到黑客的攻击,密码设置复杂又容易忘记。如果条件允许,用智能卡来代替复杂的密码是一个很好的解决方法。
 三、系统权限的设置
1、磁盘权限
系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe、ftp.exe、 tftp.exe、telnet.exe 、       netstat.exe、regedit.exe、at.exe、attrib.exe、format.com、del文件只给 Administrators 组和SYSTEM 的完全  控制权限  
另将<systemroot>\System32\cmd.exe、format.com、ftp.exe转移到其他目录或更名
Documents and Settings下所有些目录都设置只给adinistrators权限。并且要一个一个目录查看,包括下面的所有子目录。
删除c:\inetpub目录

2、本地安全策略设置
开始菜单—>管理工具—>本地安全策略
A、本地策略——>审核策略
审核策略更改   成功 失败  
审核登录事件   成功 失败
审核对象访问      失败
审核过程跟踪   无审核
审核目录服务访问    失败
审核特权使用      失败
审核系统事件   成功 失败
审核账户登录事件 成功 失败
审核账户管理   成功 失败

B、本地策略——>用户权限分配
关闭系统:只有Administrators组、其它全部删除。
通过终端服务允许登陆:只加入Administrators,Remote Desktop Users组,其他全部删除

C、本地策略——>安全选项
交互式登陆:不显示上次的用户名       启用
网络访问:不允许SAM帐户和共享的匿名枚举  启用
网络访问:不允许为网络身份验证储存凭证   启用
网络访问:可匿名访问的共享         全部删除
网络访问:可匿名访问的命          全部删除
网络访问:可远程访问的注册表路径      全部删除
网络访问:可远程访问的注册表路径和子路径  全部删除
帐户:重命名来宾帐户            重命名一个帐户
帐户:重命名系统管理员帐户         重命名一个帐户

3、禁用不必要的服务  开始-运行-services.msc
      TCP/IPNetBIOS Helper提供 TCP/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享
      文件、打印和登录到网络
      Server支持此计算机通过网络的文件、打印、和命名管道共享
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
      Task scheduler 允许程序在指定时间运行
      Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息
Distributed File System: 局域网管理共享文件,不需要可禁用
Distributed linktracking client:用于局域网更新连接信息,不需要可禁用
Error reporting service:禁止发送错误报告
Microsoft Serch:提供快速的单词搜索,不需要可禁用
NTLMSecuritysupportprovide:telnet服务和Microsoft Serch用的,不需要可禁用
PrintSpooler:如果没有打印机可禁用
Remote Registry:禁止远程修改注册表
Remote Desktop Help Session Manager:禁止远程协助
      Workstation   关闭的话远程NET命令列不出用户组
以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。

4、修改注册表
修改注册表,让系统更强壮
1、隐藏重要文件/目录可以修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL 实现完全隐藏,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0

2、防止SYN洪水攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为SynAttackProtect,值为2
新建EnablePMTUDiscovery REG_DWORD 0
新建NoNameReleaseOnDemand REG_DWORD 1
新建EnableDeadGWDetect REG_DWORD 0
新建KeepAliveTime REG_DWORD 300,000
新建PerformRouterDiscovery REG_DWORD 0
新建EnableICMPRedirects REG_DWORD 0

3. 禁止响应ICMP路由通告报文 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface 新建DWORD值,名为PerformRouterDiscovery 值为0

4. 防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
将EnableICMPRedirects 值设为0

5. 不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为IGMPLevel 值为0

6、禁止IPC空连接:
cracker可以利用net use命令建立空连接,进而入侵,还有net view,nbtstat这些都是基于空连接的,禁止空连接就好了。
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 把这个值改成”1”即可。

7、更改TTL值
cracker可以根据ping回的TTL值来大致判断你的操作系统,如:
TTL=107(WINNT);
TTL=108(win2000);
TTL=127或128(win9x);
TTL=240或241(linux);
TTL=252(solaris);
TTL=240(Irix);
实 际上你可以自己改的:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip \Parameters:DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦

8. 删除默认共享
    有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共 享,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer \Parameters:AutoShareServer类型是REG_DWORD把值改为0即可

9. 禁止建立空连接
默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。我们可以通过修改注册表来禁止建立空连接:
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成”1”即可。

10、建立一个记事本,填上以下代码。保存为*.bat并加到启动项目中
net share c$ /del
net share d$ /del
net share e$ /del
net share f$ /del
net share ipc$ /del
net share admin$ /del

5、IIS站点设置:
1、将IIS目录&数据与系统磁盘分开,保存在专用磁盘空间内。
2、启用父级路径
3、在IIS管理器中删除必须之外的任何没有用到的映射(保留asp等必要映射即可)
4、在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件
5、Web站点权限设定(建议)
读                 允许
写                 不允许
脚本源访问        不允许
目录浏览        建议关闭
日志访问        建议关闭
索引资源        建议关闭
执行             推荐选择 “仅限于脚本”
6、 建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。(最好 不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)。
7、程序安全:
1) 涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,涉及到与数据库连接地用户名与口令应给予最小的权限;
2) 需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。
3) 防止ASP主页.inc文件泄露问题;
4) 防止UE等编辑器生成some.asp.bak文件泄露问题。

6、IIS权限设置的思路
•要为每个独立的要保护的个体(比如一个网站或者一个虚拟目录)创建一个系统用户,让这个站点在系统中具有惟一的可以设置权限的身份。
•在IIS的【站点属性或者虚拟目录属性→目录安全性→匿名访问和验证控制→编辑→匿名访问→编辑】填写刚刚创建的那个用户名。
•设置所有的分区禁止这个用户访问,而刚才这个站点的主目录对应的那个文件夹设置允许这个用户访问(要去掉继承父权限,并且要加上超管组和SYSTEM组)。

7、卸载最不安全的组件
最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,( 以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:\WINDOWS\ )
regsvr32/u C:\WINDOWS\System32\wshom.ocx
del C:\WINDOWS\System32\wshom.ocx
regsvr32/u C:\WINDOWS\system32\shell32.dll
del C:\WINNT\WINDOWS\shell32.dll

然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。
去http://www.ajiang.net/products/aspcheck/下载阿江的探针查看相关安全设置情况

彻底掌握IIS 6.0功能:异步CGI处理and带宽限制

异步CGI处理

IIS 5.0和IIS 4.0以同步方式运行CGI(Common Gateway Interface,通用网关接口)进程,这实际上意味着每次只有一个线程能够访问一个CGI进程,所以IIS 5.0和IIS 4.0对CGI支持的可伸缩性不佳。IIS 6.0能够异步运行CGI进程,所以如果一个线程调用了一个CGI应用程序,它不必再等待CGI进程处理完毕和返回信息。异步CGI改善了IIS服务器运 行CGI Web应用程序的性能,使得IIS能够运行更多执行关键任务的基于CGI的应用程序。

当Web服务器接收到包含CGI程序名和程序所需参数的URL时,CGI程序开始执行。如果将CGI程序编译为可执行 (.exe)文件,则必须提供包含程序执行权限的目录,以便用户可以运行程序。如果CGI程序以脚本形式(例如Perl脚本)编写,则既可为目录提供执行 权限,也可为其提供脚本权限。另外,如果要使用脚本权限,必须将脚本解释程序标记为脚本引擎。

必须注意的是,默认情况下,IIS_WPG组不具备启动CGI进程的权限。如果创建了新帐户并将其添加到IIS_WPG组,还必须授予此帐户两种启动CGI进程的用户权限,即“调整进程的内存配额”和“替换进程级令牌”。

带宽限制

在IIS 5.0和IIS 4.0中,Web网站属性对话框的“性能”页允许启用带宽限制功能,指定允许网站占用的最大带宽。不过,这个功能不一定起作用,因为IIS 5.0和IIS 4.0不能直接操作服务器的网卡。

IIS 6.0则不同,第一次启用带宽限制功能时,Windows 2003自动安装QoS数据包计划程序供IIS服务器调用。QoS数据包计划程序使得服务器能够控制服务质量(即QoS),因此安装期间Windows 2003将临时地停止所有网络服务。配置好QoS数据包计划程序后,IIS才真正有了担负起控制网站带宽限制所需的驱动程序——对于ISP来说,这无疑是 一个好消息。允许设置的最小带宽限制值是1024 Byte/秒。不要忘了检查一下网卡是否在Windows 2003硬件兼容清单(HCL)中,因为只有最新的网卡才支持QoS功能。

要配置QoS数据包计划程序,首先必须创建一个组策略控制台。点击“开始”→“运行”,输入“mmc”,然后点击“确定”。在控制台窗口中, 选择菜单“文件”→“添加/删除管理单元”,点击“添加”,在“添加独立管理单元”对话框中,选择“组策略对象编辑器”,然后依次点击“添加”、“完成 ”、“关闭”、“确定”。现在依次扩展控制台中的“本
地计算机策略”、“计算机配置”、“管理模板”、“网络”,显示出“QoS数据包计划程序”,如图五所示。

qos数据包计划程序.gif

图五

启用带宽限制之前,请使用系统监视器检查“网络接口”对象中的总字节数/秒或当前带宽计数器。如果希望比较传入和传出流量,请检查发送的字节 数/秒和接收的字节数/秒,再比较“网络接口”对象的值和网络连接的总带宽。对于“正常”的负载,服务器使用的带宽不应超过其全部可用带宽的50%。如果 服务器有较大的高峰负载,请将正常负载保持在50%以下,剩下的带宽可在高峰期使用。

带宽限制可以是针对全局WWW服务的(即对所有网站都有效),也可以是针对单个网站的。设置全局WWW服务最大带宽不会替代已为服务器上的单 个网站设定的最大带宽。单个站点根据已设置的最大值来限制带宽,而全局设置限制所有其他未限制带宽的网站。另外,全局WWW服务带宽限制设置不会影响 FTP站点或FTP服务。

默认设置的变化

在IIS 6.0中,许多配置项目的默认值已经与IIS 5.0或IIS 4.0的不同。例如,默认的连接超时时间已经从900秒减少到120秒,另外,EnableParentPaths设置默认关闭。还有其他一些新的设置项目也会影响服务器的性能和行为,包括:

⑴ 如果某种文件类型没有在MimeMap配置属性中映射,所有对该类文件的请求将被拒绝。

⑵ 默认情况下,所有工作进程会在1740分钟后自动回收,回收期间会话信息可能丢失。

⑶ 运行CGI应用程序的用户上下文必须是一个IIS_WPG组的成员。

⑷ Windows 2003不安装Collaboration Data Objects for Windows NT Server(CDONTS)。微软建议开发者改用CDO for Windows 2000(CDOSYS)对象。

⑸ ASP请求默认限制在204800字节之下,每一个域限制在100 KB之下。IIS 5.0和IIS 4.0没有这方面的限制。

⑹ 默认情况下,http.sys仅接受标题小于16 KB的请求。

IIS管理器

每次产品重大升级,人们都会试图从用户界面寻找令人激动的新功能。IIS 6.0的管理器确实有了变化,不过改动之处出乎意料地少。

其中一个改动之处虽小,但很实用。如果在IIS管理器中右击一个文件夹,现在可以选择“权限”菜单打开文件夹的“安全”对话框。在这个对话
框中可以设置文件夹的NTFS授权,不必再离开IIS管理器。虽然这是一个小小的改动,也许它今年会为全世界所有的IIS管理员总共节省数千小时的工作时间。

右击一个Web网站,选择“属性”,转到“目录安全性”页,点击“安全通信”下面的“编辑”按钮,在这里可以找到另一个重要的改动之处——安 全通信属性页允许配置SSL、证书信任列表(CTL)、客户证书。在IIS 5.0和IIS 4.0中,除非在Web网站上安装一个证书,否则不能访问该属性页,这一限制令人不快,因为从技术上看,配置CTL、客户证书并不要求服务器上安装了证 书,换句话说,在IIS 5.0中我们安装证书的唯一用途可能就是因为用户界面需要它。IIS 6.0改正了这一多余的要求,现在我们不必在Web服务器上安装证书也可以访问和使用该属性页了。

通配符应用程序

如果你熟悉IIS 5.0和IIS 4.0的ISAPI筛选器,可能也熟悉它们的缺点。ISAPI筛选器不仅编写困难,而且由于它们在Inetinfo进程内运行,如果编写时不小心留下了一 点错误,很容易导致灾难性的后果,出错的代码可能造成整个IIS崩溃。另外,ISAPI筛选器不能拥有常规ISAPI DLL拥有的功能。当然,不管怎样,在IIS 5.0和IIS 4.0中,ISAPI筛选器仍是一种非常有用的组件,是唯一可以针对所有进入Web服务器或Web网站的请求执行操作的代码。

IIS 6.0提供了一种更加灵活的新型机制来提供通常由ISAPI筛选器提供的服务,它就是ISAPI截取器(Interceptor),或者称为通配符应用程 序(Wildcard Application)。通配符应用程序的配置方式是:在IIS管理器中右击Web网站,选择菜单“属性”,转到“主目录”页面,点击“应用程序设置” 下面的“配置”按钮,出现“应用程序配置”对话框,如图四所示。在对话框的“映射”页中,我们可以将一个或多个ISAPI DLL配置成通配符应用程序。对于每一个接收到的请求,IIS 6.0将调用这里列出的各个通配符应用程序。除了针对所有网站配置通配符应用程序,还可以针对单个网站或在目录层次上配置通配符应用程序。由于这些 ISAPI截取器是标准的ISAPI应用程序,它们具有普通ISAPI应用程序具备的所有功能,包括访问消息正文的能力,而不仅仅象ISAPI筛选器那样 访问消息头。

应用程序设置.gif

图四

通配符应用程序可以做到开发者要做的任何事情,诸如URL定制、验证身份、记录特殊的日志信息、检测攻击企图、创建内容,等等。通配符应用程 序结束处理后,它把请求转交给适当的处理引擎(例如处理ASP页面的asp.dll),由处理引擎进一步处理请求。另外,通配符应用程序还可以通过调用为 ISAPI应用程序新增的ExecuteURL功能
,将请求传递到同一个应用程序池中的任意页面。

新增的ISAPI通配符应用程序为创造性的应用程序设计大开方便之门。例如,IIS 6.0的URL授权功能就是作为一个ISAPI通配符应用程序(urlauth.dll)实现。URL授权功能允许IIS 6.0根据一系列的规则授予对某个URL的访问权,例如用户是否为某个组的成员、地理位置,以及其他在数据库或AD中与用户有关的信息。有关ISAPI通 配符应用程序和URL授权的更多信息,请参见IIS 6.0的帮助文档。

彻底掌握IIS 6.0功能:网站ID

  对于IIS服务器来说,唯一标识一个网站的不是网站的名称,而是网站的ID数值。当我们在IIS 5.0和IIS 4.0中创建一个新的网站,Web服务器将下一个可用的数字顺序号指定给网站(即,Web服务器给默认站点指定的数字是1,下一个网站是2,接下来是2、 3、4,等等),这个数字就是网站的唯一ID。如果要访问一个网站的日志文件,首先必须知道该网站的ID,因为日志文件保存在\W3SVC\<网站的ID编 号>目录。如果Web服务器上运行着一个以上的网站,仅仅依靠日志文件的路径名称根本无法判断哪一个日志目录属于哪一个网站。另外,无论是在编写管 理脚本时,还是在修改配置数据文件时,网站ID都是必不可少的,例如,在IIS配置数据文件中指定ADSI(活动目录服务接口,Active Directory Service Interface)路径时往往要指定正确的网站ID。

尽管如此,在IIS 5.0和IIS 4.0中,从IIS管理器无法直接找到网站的ID编号。为此,IIS 6.0的管理器在网站清单中增加了一个新的“标识符”列,该列的内容就是网站的ID编号。不过,即使IIS 6.0 Web服务器上只有二三个网站,网站的ID也可能很大,例如387660891(因此该网站的日志文件路径是\W3SVC\387660891),不必奇 怪,IIS 6.0不再按照顺序指定网站的ID了——它根据网站的名字计算出网站的ID。

如果你编写了一些脚本程序辅助管理,这些脚本要求使用原有的网站ID顺序生成方式,可以禁用IIS 6.0新式的ID生成方式,具体的操作步骤是:找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetMgr \Parameters注册子键,创建一个REG_DWORD值IncrementalSiteIDCreation,将它设置为2(注意,默认情况下, 该键不存在)。