由于NT系统的易维护性,越来越多的中小企业在自己的网站上和内部办公管理系统上采用它,而且很多都是用默认的IIS来做WEB服务器使用。当然不能否认近来威胁NT系统的几个漏洞都是由于IIS配置不当造成的,而且可以预见,未来IIS还会被发现很多新的漏洞和安全问题,但只要我们做好合理的安全配置,还是可以避免很多安全隐患的。本文并没有系统的去讲如何全面安全的配置IIS,我只是从利用SSL加密HTTP通道来讲如果加强IIS安全的。
建立SSL安全机制
IIS的身份认证除了匿名访问、基本验证和Windows NT请求/响应方式外,还有一种安全性更高的认证,就是通过SSL(Security Socket Layer)安全机制使用数字证书。SSL(加密套接字协议层)位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了一个惟一的安全通道。
建立了SSL安全机制后,只有SSL允许的客户才能与SSL允许的Web站点进行通信,并且在使用URL资源定位器时,输入https:// ,而不是http:// 。
简单的说默认情况下我们所使用的HTTP协议是没有任何加密措施的,所有的消息全部都是以明文形式在网络上传送的,恶意的攻击者可以通过安装监听程序来获得我们和服务器之间的通讯内容。这点危害在一些企业内部网络中尤其比较大,对于使用HUB的企业内网来说简直就是没有任何安全可讲因为任何人都可以在一台电脑上看到其他人在网络中的活动,对于使用交换机来组网的网络来说虽然安全威胁性要小很多,但很多时候还是会有安全突破口,比如没有更改交换机的默认用户和口令,被人上去把自己的网络接口设置为侦听口,依然可以监视整个网络的所有活动。
所以全面加密整个网络传输隧道的确是个很好的安全措施,很可惜的是现在网络上有关于具体给IIS配置SSL的文章并不是很多,我简单的摸索了下把我的经验拿出来给大家分享。
操作办法
我是以WIN2000服务器版本的来做例子讲解的,我们首先需要在控制面板里的填加删除WINDOWS组件中去安装证书服务,这个服务在默认安装中是没有安装在系统里的,需要安装光盘来安装。
然后选择独立根CA的安装类型。然后在下一步中给自己的CA起一个名字来完成安装就可以了。
安装完成后,我们就可以启动我们的IIS管理器来申请一个数字证书了,启动INTERNET管理器选择我们需要配置的WEB站点:
选择站点属性里的,目录安全性-安全通信-服务器证书
由于我们是第一次配置,所以选择创建一个新的证书。
用默认的站点名称和加密位长设置就可以了。
其实上面的设置都是非常简单的,看看我抓的几个设置画面就可以很简单的设置好的,最好选择一个地方把我们刚才生成的一个请求证书保存起来。
完成上面的设置后,我们就要把我们刚刚生成的服务器证书提交给我们刚刚在本地安装的证书服务器。在默认情况下证书服务器完成安装后会在本地的IIS里的WEB服务器里面生成几个虚拟的目录。
我们打开http://localhost/CertSrv/default.asp
选择申请证书
在选择申请类型的时候,选择高级申请。
选择使用base64的编码方式来提交我们的证书申请。
在证书申请的地方把我们刚刚生成的certreq.txt的内容拷备进去,然后选择提交。
提交成功以后,会返回一个页面给我们告诉我们证书已经成功提交了,现在是挂起状态就是等待CA中心来颁发这个证书了。
好接下来启动管理工具里的证书颁发机构,在待定申请中找到我们刚刚的申请条目然后点击鼠标右键选择颁发就好了。
颁发成功以后我们在颁发的证书里找到刚才颁发的证书,双击其属性栏目然后在详细信息里选择将证书复制到文件。
我们需要把证书导出到一个文件,这里我们把证书导出到c:\ sql.cer这个文件里。
重新回到IIS的WEB管理界面里重新选择证书申请,这个时候出来的界面就是挂起的证书请求了。
选择我们导处的sql.cer这个文件。
确定一切信息正确以后,就可以点击下一步确定来完成SSL的安装了。
默认安装结束后,SSL并没有启动我们需要自己给我们的站点SSL的加密通道,并且确定HTTPS使用的端口是443 。
第一次通过HTTPS进入站点的时候,会有一个对话框让我们确认是否同意当前证书,当然是同意啦~
好了,这个时候我们看这个网站的时候所有信息在网上就是以加密的方式来传送的了,任何人都无法再轻易了解其中的内容了。
下面给各位看看加密前后加密后的两幅IRIS的监听结果:
加密前:
加密后:
最后简单废话几句就是,加密过的SSL会比普通的没有加密的WEB浏览的时候慢一点,主要是因为加密的隧道额外还要占用一点CPU的资源,对于那些没有任何秘密可言的WEB站点没有需要用加密的SSL通道。只要对于那些重要的目录和站点才有这个必要性。