引言:IIS信息服务器在网络上应用的很广泛,很多网站都是基于其管理和发布的,正因为如此,IIS服务器也成了黑客重点攻击的目标。因此,提高IIS服务器的安全性,是保证网站安全运行的基本条件。
IIS信息服务器在网络上应用的很广泛,很多网站都是基于其管理和发布的,正因为如此,IIS服务器也成了黑客重点攻击的目标。因此,提高IIS服务器的安全性,是保证网站安全运行的基本条件。对于Windows Server 2012中提供的IIS 8.0来说,其拥有多层次的安全体系结构。例如,但客户端访问Web网站时,客户端将访问请求发送给服务器,服务器将处理结果发送回客户端,完成客户端和服务器的交互过程。实际上,对于该过程,从安全控制角度来看,可以划分为不同的层级。
图1 添加必要的功能项目
例如,从IP层面来说,可以设置是否允许客户端访问Web网站。当某客户端在规定的时间内连续访问服务器,就会被服务器视为可疑用户,通过将其放置到黑名单中,该用户就无法继续访问服务器。从HTTP以及HTTPS层面来说,IIS就可以通过设置特定的HTTP/HTTPS协议的特性,对用户的访问进行管控。例如,可以限制用户使用Get,Post,Put等方式提交数据,来有效保护服务器安全。从IIS层面来说,可以设置相关的身份验证协议,来检测客户端是否是合法的用户。从业务程序层面来说,同样可以限制用户的访问权限。例如当用户访问网站上的开设的论坛时,就会按照身份的不同,被划分到管理员预设的不同的账户组中,用户只能在规定的权限内,对资源进行访问。
当然,要提高IIS的安全性,必须保证安装好启用了对应的功能。在Windows Server 2012中打开服务器管理器,点击“添加角色和功能”项,在向导界面中的“角色”列表中打开“Web服务 器(IIS)”→“Web服 务器”→“安全性”分支,在其中选择所有的功能项(如图1)。点击安装按钮,执行安装操作。
打开IIS管理器,在其中可以针对服务器级别或者具体的网站,执行所需的安全设置。例如,选择某个网站,从IP层面设置其安全属性的话,在窗口中部双击“IP地址和域限制”项,在右侧点击“编辑功能设置”链接,在弹出窗口中可以看到,在默认情况下,没有指定的限制条件的客户端都是可以访问该网站的。点击“添加拒绝条目”链接,在弹出窗口中可以设置特定的IP地址或者地址段。这样,这些IP客户端将无法访问服务器。
点击“编辑动态限制设置”链接,在弹出窗口中选择“基于并发请求数量拒绝IP地址”项,在其下可以设置并发连接的数量。当客户端在特定的时间内并发访问次数超过该值后,IIS就会视为恶意的请求并对其进行拦截,选择“基于一段时间内的请求数量拒绝IP地址”项,在其下可以设置特定的时间段以及最大的请求数量。如果客户端违法了该设置,同样会被IIS视为恶意请求。
从HTTP/HTTPS层面来说,可以在窗口中部的“IIS”栏中双击“请求筛选”项,在“文件扩展名”面板右侧点击“拒绝文件扩展名”链接,在弹出窗口中输入特定的扩展名(例如“.asa”),这样当客户端试图在浏览器地址栏访问该类型的文件(例如“http://www.xxx.com/form/1.asa”等),IIS就会返回“HTTP 错误404.7-Not Found”之类的错误信息,拒绝用户访问这类文件。
在网站结构中,存在各种目录和文件。当不希望用户查看和访问某些目录和文件时,可以在“隐藏段”面板右侧点击“添加隐藏段”连接,输入对应的文件和目录名称,就可以实现上述目的。对于黑客来说,经常使用SQL注入的方式,对SQL数据库进行攻击。其原理是利用SQL Server数据库的一些漏洞,通过构造和提交特定的URL地址,来注入相关的信息,对数据库进行渗透。为此,可以在“URL”面板右侧点击“拒绝序列”项,在其中窗口中输入对应的 URL,例 如“/Default.aspx?jobid=1'or'1'='1”等。这样,当黑客提交这样的URL时,就会遭到IIS的拦截。当然,也可以添加特定的目录和文件路径(例如“/admin/index.asp”), 当用户试图访问这些受限制的路径时,服务器就会返回“HTTP 错误404.5 –NOT Found”之类的警告信息。
在“HTTP谓词”面板中点击“拒绝谓词”链接,在弹出窗口中输入对应的谓词(例 如‘Post”),这 样,当用户在对应页面中输入所需内容,点击“提交”按钮后,服务器就会返回“HTTP 错误 404.6-Not Found”之类的警告信息。当用户访问目标网站时,在发送的数据包中存在一些标头信息,例 如“Host”,“ACCEPT”,“CONTENT-TYPE”,“SET-COOKIE”等。在对应标头后面跟随对应的数据信息,例如在“Content-Length”标头后面跟随数据包内容的长度等。如果黑客使用专用工具拦截了数据包内容,并对其标头信息进行了修改(例如写入超长数据),之后将该数据包发送给服务器,就很容易造成服务器发生溢出问题,给黑客入侵带来了可乘之机。
在“标头”面板右侧点击“添加标头”链接,在弹出窗口中的“标头”栏中输入具体的标头名(例如“Host”),在“大小限制”栏中输入其数据的大小(例如“9”)。这样,如果用户提交的数据包中“Host”标头的数据长度超过该值,服务器就会返回“HTTP 错误 404.10-Not Found”之类的错误信息。在网站中可以设置查询栏,允许用户查询所需的内容。为了防止用户输入提交非法数据,可以对其进行必要的限制。在“查询字符串”面板右侧点击“拒绝查询字符串”链接,在弹出窗口中需要拒绝的内容。这样,当用户在网站页面中查询限制的内容时,服务器就会返回“HTTP 错误 404.18-Not Found”之类的错误。
实际上,在“规则”面板中,可以对各种限制条件进行集成处理。在右侧点击“添加筛选规则”链接,在弹出窗口中输入规则名称,选择“扫描url”和“扫描查询字符串”项,在“扫描标头”,“文件扩展名”以及“字符串”栏中输入对应的内容,针对的特定的标头,允许访问特定的文件扩展名,拒绝访问特定的字符串。除了使用请求筛选保护HTTP/HTTPS访问之外,还可以使用授权规则来强化安全性。在“IIS”栏中双击“授权规则”项,可以看到存在默认的授权规则。点击右侧的“编辑”链接,可以查看其属性,了解到其允许所有的用户进行访问。
图2 添加拒绝访问项目
图3 用户身份验证模式窗口
当然,可以添加所需的拒绝访问规则。点击右侧的“添加拒绝访问”项,在弹出窗口(如图2)中可以选择限制的用户类型,包括所有用户,所有匿名用户,指定的角色或者用户组,指定的用户等。例如当使用了基本身份验证模式后,当用户访问网站时,就需要输入账户名和密码,通过认证后,才可以浏览网站。例如,当需要对用户“fwyongh”进行控制,可以选择“指定的用户”项,输入“fwyongh”,选择“将此规则应用于特定谓词”项,输入“Get”谓词。这样当该用户在网页中查询内容,执行提交操作时,服务器就会返回“HTTP错误401.2-Unauthorized”之类的错误信息,说明该用户的访问收到了服务器的限制。同请求筛选相比,授权规则可以将系统账户和HTTP/HTTPS特定的谓词进行关联,让指定的用户只能访问允许的谓词,来使用HTTP/HTTPS协议中相应的属性。使用授权规则和请求筛选,可以在HTTP/HTTPS层面有力的保护IISS服务器的安全。
使用相关的身份验证协议,可以从IIS层面上提高安全性。在“IIS”栏中双击“身份验证”项,可以看到起提供了各种身份验证模式(如图3)。启用的匿名身份验证方式,允许所有用户访问Web服务器。
当然,您可以根据需要对其进行控制。例如点击右侧的“编辑”按钮,可以看到与其对应的是名为“IUSR”账户。点击“设置”,可以将其更改为别的用户。以“IUSR”账户为例,打开网站根目录中的属性窗口,在“安全”面板中点击“编辑”按钮,在“组或用户名”列表中选择“IIS_IUSRS”账户,在权限列表中的“拒绝”列中选择读取和执行,列出文件夹内容,读取等项目。保存配置信息后,当以匿名方式访问网站时,服务器就会返回“HTTP错误401.3-Unauthorized”的错误提示。
对于ASP.NET模拟方式来说,会使用IIS应用程序池使用的标识信息进行验证。使用Windows身份验证,会将访问者的账户名和密码提交给IIS服务器,并将其密码进行加密处理。之后服务器会验证该账户身份合法性,如果验证通过,就可以访问服务器,这适用于内部的或者加入域的客户端。对于基本身份验证来说,当用户访问时,需要输入对应的账户名和密码,这些内容会以Base64方式进行加密,之后将其提交给服务器。不过这种加密方式安全性很低,为了安全起见,需要将其和SSL加密结合起来使用,其适用于未加入域或者外部的客户端。
对于摘要式身份验证,其支持HTTP 1.0协议,该模式将用户提交的凭据进行MD5加密,之后将其哈希值提交给IIS服务器,通过验证后,可以访问网站。适用于域环境,IIS服务器必须使活动目录域的成员服务器或者域控制器,用户账户必须使活动目录域账户,并且该账户必须和IIS服务器位于相同的或者信任的域。选择所需的身份验证协议,点击“启用”,可以激活该验证方式。当激活多个身份验证协议,其使用是由顺序的。一般匿名身份验证方式优先级最高,之后依次为Windows验证方式,摘要式验证方式,基本身份验证方式。