2005年07月03日

IIS 安装配置全攻略


  WEB篇
  Windows 2000 Server、Windows 2000 Advanced Server 以及 Windows 2000 Professional 的默认安装都带有 IIS ,也可以在 Windows 2000 安装完毕后加装 IIS。
IIS 是微软出品的架设 WEB、FTP、SMTP 服务器的一套整合软件,捆绑在 Windows2000/NT 中,可以在控制面板的添加/删除程序中选择添加删除 Windows 组件中选择添加 IIS 服务。如下图:



  ==========WEB 服务器 ===========
  IIS 默认的 WEB (主页)文件存放于系统根区中的 %system%\Inetpub\wwwroot 中,主页文件就放在这个目录下;出于安全考虑,因此微软建议用 NTFS 格式化使用 IIS 的所有驱动器。
  快速配置好默认的 WEB 站点
  打开 IIS 管理器,在开始菜单的管理工具中选择 Internet 信息服务或直接在运行中输入 %SystemRoot%\System32\Inetsrv\iis.msc



  安装好后的 IIS 已经自动建立了管理和默认两个站点,其中管理 WEB 站点用于站点远程管理,可以暂时停止运行,但最好不要删除,否则重建时会很麻烦的。
  马上在浏览器中输入这个地址,微软已经预先把详尽的帮助资料放到 IIS 里面了:http://localhost/iishelp/iis/misc/default.asp
  配置
  右击已存在的“默认 WEB 站点”,选择属性,现在开始配置 IIS 的 WEB 站点。
  每个 Web 站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求的分别是端口号、IP 地址和主机头名。
  浏览器访问 IIS 的时候是这样的: IP -> 端口 -> 主机头 -> 该站点主目录 -> 该站点的默认首文档。
  所以 IIS 的整个配置流程应该按照访问顺序进行设置:
  第一步,配置 IP 和 主机头



  这里可以指定 WEB 站点的 IP,如没有特别需要,则选择全部未分配。
  如指定了多个主机头,则 IP 一定要选为全部未分配,否则访问者会访问不了的。



  如果 IIS 只有一个站点,则无需写入主机头标识。
  然后配置好端口,WEB 站点的默认访问端口是 TCP 80,如果修改了站点端口,则访问者需要输入 http://yourip:端口 才能够进行正常访问。
  第二步,指定站点主目录。
  主目录用来存放站点文件的位置,默认是 %system%\Inetpub\wwwroot



  可以选择其他目录作为存放站点文件的位置,点击浏览后选择好路经就可以了。
  这里还可以赋予访问者一些权限,例如目录浏览等。
  基于安全考虑,微软建议在 NTFS 磁盘格式下使用 IIS。
  第三步:设定默认文档。
  每个网站都会有默认文档,默认文档就是访问者访问站点时首先要访问的那个文件;例如 index.htm index.asp default.asp 等等。
  这里需要指定默认的文档名称和顺序。



  注意,这里的默认文档是按照从上到下的顺序读取的。
  最后一步:设定访问权限。



  一般赋予访问者有匿名访问的权限,其实IIS 默认已经在系统中建立了 IUSR_机器名 这种匿名用户了。
  按照向导建立新站点
  如果想建立新的站点,可以按照 IIS 的向导进行设置:


 


  在 IP 地址这一下拉菜单中可以选择你的 WEB 服务器 IP,缺省情况下应该选择 (全部未分配)。[TIPS: 通过这个下拉菜单可以查看你是否有公网 IP] TCP 默认端口是 80,如修改了端口,则需要用 http://ip:端口 这种格式进行浏览。
  站点主机头使该站点指定一个域名,如 http://abc.vicp.net。可以在一个相同的 IP 下指定多个主机头。默认为 “无”。



  你可以选择 WEB 站点主目录,该目录用于存放主页文件;选中允许匿名访问此站点则其任何人都可以通过网络访问你 WEB 站点。



  WEB 站点的访问权限可以设定允许或禁止读取、运行脚本等权限设置。
  WEB 站点的常规设置
  选中刚建立的站点,右击后选择属性,出现站点设置界面:



  1. 说明:站点的说明,这将出现在 IIS 管理界面中的站点名称
  2. IP 地址:常规情况下可选择全部未分配。高级选项中可设定主机头高级 WEB 站点标识等设置。
  3. TCP 端口:指定该站点的访问端口,浏览器访问 WEB 的默认端口是 80。
  4. 连接: 选择无限选项允许同时发生的连接数不受限制。选择限制同时连接到该站点的连接数。在该对话框中,键入允许连接的最大数目。设定连接超时;如选择无限,则不会断开访问者的连接。
  5. HTTP激活: 允许客户保持与服务器的开放连接,而不是使用新请求逐个重新打开客户连接。禁用保持 HTTP 激活会降低服务器性能。默认情况下启用保持 HTTP 激活。
  6. 日志记录:可选择日志格式:IIS 、ODBC 或 W3C 扩充格式,并可定义记录选项如访问者 IP、连接时间等。
  操作员: 设定操作 IIS 管理的用户,默认情况只允许管理员权限可操作和管理 IIS。
  也可以添加多个用户或用户组别参加 IIS 的管理和操作。



  主目录用于设定该站点的文件目录,可以选择本地目录或另一台计算机的共享位置。
  本地路径中可以设定站点目录的存放位置,请确保你要有该目录的控制管理权限。
  访问设置中可指定那些资源可访问那些资源不可访问,要注意的是目录浏览和日志访问;选择日志访问,IIS 会记录该站点的访问记录,你可以选择记录那些资料,如: 访问者 IP 时间等等。
应用程序设置中配置访问者能否执行程序和执行那些程序。



  主文档: 设定该站点的首页文件名,访问者会按照默认文档的顺序访问该站点。
  要在浏览器请求指定文档名的任何时候提供一默认文档,请选择该复选框。默认文档可以是目录的主页或包含站点文档目录列表的索引页。
  要添加一个新的默认文档,请单击“添加”。可以使用该特性指定多个默认文档。按出现在列表中的名称顺序提供默认文档。服务器将返回所找到的第一个文档。
  要更改搜索顺序,请选择一个文档并单击箭头按钮。
  要从列表中删除默认文档,请单击“删除”。
  注意: 如果在主目录中没有该首页文件,请马上建立或者进行相关设置。
  要自动将一个 HTML 格式的页脚附加到 Web 服务器所发送的每个文档中,请选择该选项。页脚文件不应是一个完整的 HTML 文档。而应该只包括需用于格式化页脚内容外观和功能的 HTML 标签。要指定页脚文件的完整路径和文件名,请单击“浏览”。



  目录安全性
  匿名访问和验证控制:
  要配置 Web 服务器的验证和匿名访问功能,请单击“编辑”。使用该功能配置 Web 服务器在授权访问受限制内容之前确认用户的身份。但是,首先必须创建有效的 Windows 用户帐户,然后配置这些帐户的 Windows 文件系统 (NTFS) 目录和文件访问权限,服务器才能验证用户的身份。请打开 [计算机管理] 进行查看。
  IP 地址及域名限制(该功能仅在安装有 Windows 2000 Server 的设备中可用。):
要允许或阻止特定用户、计算机、计算机组或域访问该 Web 站点、目录或文件,请单击“编辑”。

  ====用 IIS 建立多个站点 ===========
  主机头的使用
  新建两个 WEB 站点,分别在主机头中指定两个不同的域名: test-user1.vicp.net 和 test-user2.vicp.net
  可在该站点属性的 WEB站点 -> WEB 站点标识 -> IP 地址 -> 高级中随意修改该主机头标识。


 

 

 


  使用 nslookup 命令指定用广州电信 ADSL 默认的 DNS 服务器检测出:tset-user1.vicp.net 和 test-user2.vicp.net IP 是一样的。但浏览时显示的确是两个不同的页面。



  注意:使用主机头建立多个不同域名的站点时,也需要注意主文档等设置。
  使用端口配置建立多站点



  您可以使用不同的端口来设置多个站点,但访问者的浏览器的默认访问端口是 80,所以您必须告诉访问者您的站点使用的 TCP 端口是什么。访问格式:http://url:port

Windows 2000 IIS 安装、配置、进阶管理
  设置 WWW 和 FTP 服务的主属性
  右击服务器,选择属性,可以设定 WWW 或 FTP的主属性,这些属性包括整个站点的缓存等。


 


  可以启用带宽限制功能限制 IIS 占用的带宽


 

 

 


  让 WWW 服务支持动态程序
  1. 在 IIS 中安装 Perl 语言解释器
  Perl 语言的作者是 Larry Wall 。 Practical Extraction and Report Language 是该语言的全称,其原始设计目的是代替 Unix sed/awk 与shell script的组合。
  要让 IIS 支持这种语言,就需要安装 Perl 语言解释器。
Perl 解释器的官方下载: http://www.perl.com/pub/a/language/info/software.html
http://download.pchome.net/development/sever/perl/730.html (PCHOME.NET)
http://www8.pconline.com.cn/download/swdetail.phtml?id=4379 (PCONLINE.COM.CN)
  下载后可以直接把 Perl 放在一个目录下,也可以运行安装向导把文件安装在相应的目录下;这里安装在 D:\perl 下 (Perl.exe在bin 目录中)。



  配置 IIS:
  选择站点的属性,在主目录栏中的应用程序设置点选配置:( 注意:需要在 Perl 后面加上 “% %”)。



  选择添加:
  IIS 询问应用程序的位置、对应程序解释的文件名,这里需要添加 cgi 和pl 两种文件,以及 plx 。


 

 


  (可把扩展名写成 .* 或直接写成 *,IIS 会自动识别)
  最后,把 IIS 的执行许可设置成脚本和可执行程序。



  现在 IIS 已经可以支持 Perl 了。
  2. 让 IIS 支持 PHP
  PHP 是 Personal Home Page Tools 的缩写(Hypertext Preprocessor)。
  PHP 的下载地址:
http://www.php.net/downloads.php (官方站点下载)
http://download.pchome.net/development/sever/php/7884.html (PCHOME.NET)
http://www8.pconline.com.cn/download/swdetail.phtml?id=645 (PCONLINE.COM.CN)
  与 Perl 一样,这里选择安装在 D:\php 下。
  配置 IIS,过程和配置 Perl 一样:


 


  至此,IIS 已支持目前主流的动态语言了。
Windows 2000 IIS 安装、配置FTP篇
  Windows 2000 Server、Windows 2000 Advanced Server 以及 Windows 2000 Professional 的默认安装都带有 IIS ,也可以在 Windows 2000 安装完毕后加装 IIS。
IIS 是微软出品的架设 WEB、FTP、SMTP 服务器的一套整合软件,捆绑在 Windows2000/NT 中,可以在控制面板的添加/删除程序中选择添加删除 Windows 组件中选择添加 IIS 服务。如下图:



  FTP 服务器
  利用 IIS 可以建立多个不同的 FTP 服务器,并且可实现限制用户、锁定目录、锁定权限、封锁访问者的 IP 等一些列功能。
  一、建立
  利用 IIS 的向导就可以简单地建立 FTP 服务器。



  右击 IIS 控制台的电脑图标(本地管理的会显示本地计算机名),新建一个 FTP 站点。



  IP 地址等和 WEB 方式的设置一样,动态 IP 可选择全部未分配,FTP 的默认端口是21



  指定该 FTP 站点的主目录路径



  设置用户的访问权限,如需要赋予访问者上传的权限,这里也应该选中“写入”。
  二、设置FTP 站点建立后还需要进行相关的设置,在 IIS 控制台中右击 FTP 站点再选择属性可进行设置:



  如选中只允许匿名连接,则 FTP 只对匿名用户开放。



  设置服务器回复信息
  三、监控
  如想监视 FTP 服务器,可以按下图所示进行监控,并可以断开其中的访问连接。



  监控 FTP 服务器

  Windows 2000 IIS 安装、配置SMTP篇
  一、SMTP 服务的建立
  IIS 提供 SMTP 虚拟服务器,用户可通过本地 SMTP 服务向外发送电子邮件。



  右键击 SMTP 服务器选择属性进行 SMTP 的相关设置。



  二、SMTP 的应用
  您现在可以使用自己的机器发送邮件,不再需要服务商提供的 SMTP 了。
  outlook 中的邮件账户



  把账户里面的 SMTP 更改成自己的 IP 就可以使用自己机器的 SMTP 服务了。

安全维护 IIS asp 站点的高级技巧 作者:摆渡人
一:前言
(仅以此文感谢好友bigeagle。不是他,我可能不用这么担心win2000安全问题的。呵呵!)
人说,一朝被蛇咬,十年怕…..。就是这样。2000年初,当我终于摆脱winnt 4.0 server那可怕的补丁之旅,迈向win2000 server时。我终于可以比较放心我的服务器了。但随着sp1的补丁出现。我知道,与微软的补丁因缘又开始轮回了。但还好。win2000自动化的管理还是让我放心好多,而以前管理winnt后的失眠症状也逐渐消失了。偶尔还能见到我的“梦”老弟。但这一切都伴随者同bigeagle的一次知心交谈中付之东流了。一次。bigeagle发来qq。给我看了一段代码。我一看就知道这不是bigeagle写的代码,那么烂,不过有点熟悉。再一看。啊?!这不是我的数据库连接字符串吗!!GOD。顿时觉得有一种不祥的 预兆。不过还好,这个只是个access的,我还用了一些手段防止他被下载。但这足以让我长时间的失眠又来了。(再次说明,bigeagle不是蛇,他是鹰)
二:安装过程中的IIS 与 asp安全防护。(这里只考虑是web服务器,而不是本地机子上的web开发平台。 )接下来的几天有是几个难熬的日子。我开始重新部署win2000 web服务器的安全策略。找到asp代码被泄漏的原因,原来。我的补丁每次打得都比较及时的。但一次因为卸载FTP时,重装了 IIS,而这之后,我并没有再打补丁而导致最新的漏洞web解析出错。(就是那个较新的漏洞 Translate :f 用这个加上一些工具就可以看到asp的代码了。)
首先,开始重装IIS。
这次安装的策略就是安全,够用。去掉一些多余的东西。
一:FTP不要安装了,功能不好,还容易出错,并且漏洞很大。Ftp缺省传输密码的过程可是明文传送 ,很容易被人截获。(可以考虑用第三方工具。)
二:一切实例、文档也不要安装了。这是在web服务器上,最好不要这些例子,事实证明可以从这些例子站点突破IIS的防线的。
三:安装时选择站点目录,建议不要用缺省目录c:\inetpub,最好安装道不是系统盘的盘上。如:
d:\IISWEB,可以考虑自建目录。这样即使IIS被突破,也能尽可能的保护好系统文件了。
四:不要安装html的远程管理。html的远程管理在winnt 4.0还能用的上,但漏洞比较大,而且比较危险,端口号虽然是随机的,但很容易被人扫描道,从而留下隐患。事实上,我们可以通过另一台服务器上
的IIS来管理他。这样比较安全。
五:多余的服务也不要安了,如NNtp,如果不做新闻组。就不要安了。smtp,如果有更好的邮件服务,也不要装他了。
六:索引服务器。这个索引真的是很有用,但我没有用过他。否则,你可以用他建立个整个站点的文件搜索的,但现在好像大多数的asp网页都是一个网页,动态从数据库里查询。所以根本用不上索引服务器了,(不是索引不好,而是本身上面的那种asp文件结构就不适合)所以可以不要安装。
三:有目的进行安全配置。
一:开发前的工作。
首先,启动IIS后,看有没有\iissamples,\IIShelp,\msadc\,这些目录,如果有,他们大多是用来作为例子,帮助安装的,删掉他们,再把脚本库也删掉,直到web目录只留下干静的新建的虚拟目录即可,如果有管理的web站点,也删掉他。没有他,我们一样可以工作的更好。 还有看看有没有printer的文件夹,他们大多数都是些通过web来访问打印机的。MS就是怪。为了表示我的功力强大,允许通过web来远程打印。相信没有哪个网络公司是通过web网来打印的把。也不可能让网友来使用你的计算机吧。那好,去掉他.然后。开始详细配置各个web虚拟目录的安全。大概的策略是这样的。分类每个文件夹管理,如,可以吧扩展名是相同的分配到同一目录,如*.asp的,和*.inc就尽量分开 。如果是*.asp的,则开放虚拟目录权限,但将实际目录权限授予administrator,system(完全控制)everyone (rc)即可。这样可以通过web允许读取。但实际上你可以加大安全力度,如果你认位他是比较保
密的。如果是*.inc的,则开放目录权限,但不允许通过直接访问。这里又一个技巧了。比如。你可以允许实际目录被everyone访问,但在IIS中,你把改目录浏览项去掉,则改包含文件只能被源文件读取,但不允许被直接读许。这样,他就不可能下在倒一些你的单机数据库了。而且你的*.inc文件也不会被浏览
器直接阅读。
刚才我的老弟“梦”还在问我,有没有办法可以让别人看不到你的连接字符串,你可以试试下面的方法 !
1 首先建立连接字符串,并建立一个单独的文件*.inc(要是*.inc的,不要*.asp的)你把你的连接字
符串用变量复制进来。
如:connstr=""Provider=SQLOLEDB.1;Password=passw;……………….."
2 然后建立一个文件夹include,放在根目录里。
3 然后每一个文件用下面的办法打开连接。
如:<!– #include file="include\*.inc" –>
set conn=server.createobject("adodb.connection")
conn.open connstr
4 最后在iis里把include 文件夹用拒绝读的方法保护起来。你会发现,你的连接可以照常打开,但是 如果对方看到你的源代码,他也看不到连接字符串,即使他看到了包含文件路径及名称。他也无法下载,或是用ie 打开。所以,可以保护你的连接字符串了。
这里用的方法是Nt 权限与 IIS权限的共同审核。我们知道,为了让用户从web上访问道服务器的文件 ,每个安装了IIS后的服务器都会有两个内置账号。I_USExxxxxx,I_WAMxxxxxx(x为你的机器名),这样
你就可以有的放矢的防治某些从你的web网络查看你的必要信息的用户了。 当然,还有一些比较好的文件策略你可以参考一下:
如:CGI (.exe, .dll, .cmd, .pl)Everyone (X)不允许读去,运行。Administrators(完全控制)
System(完全控制)
所以,你在编写asp应用程序时,尽量归类好你的目录。方便用IIS和NT进行管理。
如。采用下列结构比较好
d:\web\asptest\static (放置*.htm)
d:\web\asptest\script (放置*.asp)
d:\web\asptest\include(放置*.inc)
d:\web\asptest\images (放置*.gif,*.jpg)
这样你就可以用上面的方法来达到安全目的了。
二:启用日志监测。
这是亡羊补牢的好工具,至少你可以用它来监测谁通过webl干了什么,当然,你还要保护该日志的权限只
能是被系统管理员。和超级管理所控制。这样避免某些人的干了某些事而不留痕迹。为了留好现场而又不影响IIS的响应速度。还是建议选则w3c扩展日志格式比较好。(以前别人介绍我用ODBC,看来比较方便,但实际上不是这样。他受到数据库的影响很大。而且速度较慢了)。
可以考虑纪录下一下现场数据:
客户 IP 地址
用户名
方法
URI 资源
HTTP 状态
Win32 状态
用户代理
服务器 IP 地址
服务器端口
如果在一台计算机上有多个 Web 服务器,则后两种属性非常有用。Win32 状态属性对于调试非常有用。
检查日志时,密切注意错误 5,这意味着访问被拒绝。在命令行上输入 net helpmsg err,可找出其它Win32 错误的含义,其中 err 是要查找的错误号。
三:配置合适的脚本映射。
相信我,大部分的asp源代码泄漏都是通过不安全,或是有错误的脚本映射导致的。而他们中的大多数可能你用不到。如下面我说的。
1 *.htr这是一个比较厉害的文件,他是web应用程序的一种。同hta一样。这是些比较厉害的功能,但介绍很少。hta就是一种html 格式的 application,功能比较强大。切安全性比htm要低。所以可能会导
致功能强大的操作。比如htr就可以通过web来重社密码。相信我们大多数的asp程序员和NT网管不需要这个把。那好,把他的对应选项删掉好了。否则,任何人都可以通过你的web来进行非法操作,甚至格式化
掉你的硬盘。
2 *.hta 这个我已经说过了,他是把双刃剑,用的好,你可以通过他来访问nt的很多操作,在asp上开nt用户也是可能的。但大多数的工作可以不通过web来事最好的。而*.hta在web很少用到,虽然他在 iis4.0就推出了。比如,你把一个文件保存成*.hta,你就可以用ie打开。看看,很奇怪的界面吧。听ms 的工程师说.net中吧*.hta换了个说法,功能加大了。看来网管的工作又该加大了。如果你想安全一些。删掉吧。
3 *.idc 这个东东是个比较老的数据库连接方法了,现在大多数都直接用asp文件。不用idc了,所以删 掉他。
4 *.printer这个是打印机文件。去掉他好了
5 *.htw , *.ida *.idq这些都是索引文件,也可以去掉了。
四:好的安全习惯。
账号策略,密码策略
这些其实都在我的前两片贴子贴过了。,等等,感兴趣的可以看看相关文章。 另外。还要注意要多上ms的站点,看看安全公告。(MS的访问量就是这样长期排行世界前三的!)
还要准备好一些第三方的工具。如扫描工具,模拟攻击工具。多上安全站点看看。
如果你可以交道一些比较好的黑道朋友(我另一个师兄家家的方法),也是比较好的。(黑道是黑客走 的路!)
五:防止asp代码被泄漏。
这里只能说是防止,我只有从已经发现的看asp方法的漏洞入手,现在对于iis4.0则几乎有20种以上的 办法,但安装了sp6a后有两种,可以到微软的网站安全公告下载2000-8月后的补丁可以解决。但如果你用
了本文上面的方法。可以装到sp6就可以了。
如果是win2000 server,则有两种方法。安了sp1后,还有一种,所以你必须倒微软安全公告栏去下载 相应的hotfix。可以解决。
六:防止恶意的破坏。
这个功能能对付一些被你监测到的不良分子,你可以在日志中、或第三方工具看到到底是谁在不停的探 测、破坏你的IIS,那么把他列为不收欢迎的黑名单,这样,你再配置站点时可以对其IP,或域进行拒绝访
问,不过这一过程是要付出代价的,你的IIS要担任反向查找的功能。可能会比较耗时。
六: 安全的话题。
以上还只是IIS与asp的。如果你要用道数据库。用道远程管理,用道远程连接数据库。那还要分别注
意。正如我说的。没有绝对的安全。而这也才是安全的需要。关于安全的话题,没有结束,只有待续。。