服务器iis的安装和配置
服务器IIS安装和配置
1 IIS安装
添加角色和功能
在角色服务下,除保持默认的勾选项外,还需要勾选上应用程序开发下的“.Net Extensibility 4.5”、“ASP.Net 4.5”、“ISAPI扩展”、、“WebSocket协议”、应用程序初始化(注意一定要安装应用程序初始化角色,用于后续配置解决第一次访问.NET网站慢的问题)。
在IIS安装成成后,打开IIS管理器,删除IIS自带的默认站点“Default Web Site”
如果有多台服务器做负载均衡的,同一台服务器上的不同应用程序池的定时回收时间要错开来(比如相隔10分钟),同一个网站在每台服务器上的应用程序池的回收时间应该也要错开来(比如相隔5分钟)。
同一台服务器上的不同应用程序池的定时回收时间要错开来(比如相隔10分钟),这样配置的目的是为了防止同一时间服务器把所有应用程序池都回收,则所有网站在回收后都是第一次访问要执行很长时间(少到20几秒,多则1两分钟),叠加起来会非常慢。
同一个网站在每台服务器上的应用程序池的回收时间应该也要错开来(比如相隔5分钟),这样配置的目的是为了避免同一时间所有服务器都同时回收应用程序池,那那会有20几秒到一分钟,期间针对这个网站的请求都会非常慢,反复刷新也会非常慢。
如果有定时任务的后台服务器(全文检索、网站监测),回收时间应该设置应该设置在23:30~24:00之间(因为我们的定时任务一般都设置在1点到5点间)。这样以避免定时任务与应用程序池回收冲突。应用程序池回收应该放在所有定时任务之前执行。因为一旦回收应用程序池,正在执行的定时任务就会中止。而一些定时任务需要很长时间,比如重建索引、监测扫描全站内容以发现错别字等、删除缓存文件夹中标记为需要删除的站点文件夹等。
以下以配置后台服务器回收时间为例:
配置网站程序池时候注意按图设置启动模式(配置解决网站首次访问慢的问题):应用程序池 -> 网站对应程序池 -> 右键,高级设置 ->选择,启动模式 AlwaysRunning。回收固定间隔时间改为0,特定时间为23:50(因为从0:00以后,有许多定时任务在执行,如果回收了,就可能把定时任务给打断),这样我们有明确的预期,知道是什么时间点访问网站可能会慢一下。
2网站用户配置
IIS是处理用户请求与网站程序进行交互的枢纽,其安全方面包括程序执行控制、IP和域限制、请求筛选、身份认证、HTTPS加密等,在这其中控制好网站目录的权限是重中之重,下面着重以对外发布网站的目录权限进行演示:
在IIS面版中,点选站点后,点击右侧“基本设置”按钮,按下图所示,将站点的路径凭据设置为“应用程序用户(通过身份验证)”
在IIS中选中站点,双击打开右侧的“身份验证”:
通过上面的操作将网站的匿名用户替换为应用程序池标识账户,降低被破解风险。
3网站目录权限设置
在IIS中右键点击网站名称,选择“编辑权限”。
在“安全”选项卡下,点击“高级”按钮。
在高级安全设置对话框中,按下图如示,设置禁用权限继承关系,选择“将已继承的权限转换为此对象的显式权限。”,通过禁用权限继承关系后,就能进一步删除不必要的权限。
禁用权限继续关系后,即可删除Windows自带的Authenticated Users、Users、Creator Owner等用户或用户组权限,仅保留System、Administrators权限。
其中Authenticated Users是Windows系纺中所有使用用户名、密码登录并通过身份验证的账户,其在网站目录中的权限可能导致其它账户对网站目录下的文件、文件夹进行非法访问和修改,所以有必要删除网站目录里默认自带的Authenticated Users的权限。
同理,Users是Windows所有账户的默认用户组,其在网站目录中的权限同样可能导致其它账户对网站目录进行非法访问,所以也有必要删除其权限。
Creator Owner 账户为访问控制列表(ACL)中的占位符,账户将被子目录或文件“所有者”账户代替,“所有者”可以更改对象的权限,其在网站目录中的权限可能导致目录权限被意外修改,即所谓的“非法提权”中的一种,所以也有必要将其删除。
点击“添加”按钮,在“选择主体”界面输入“IIS Apppool\SiteAzure”其中的“SiteAzure”为应用程序池标识账户名称,和程序池名称一样。
设置完账户主体后,点击“显示高级权限”按钮,进入更详尽的权限选择界面
网站根目录授予列出文件夹/读取数据、读取属性、读取扩展属性、读取权限这四项权限,如下图所示:
bin目录授予遍历文件夹/执行文件、列出文件夹/读取数据、读取属性、读取扩展属性、读取权限这五项权限,如下图所示:
Upload、Content、Content.Pad、Content.Phone、View、View.Pad、View.Phone、App_Data这八个目录授予列出文件夹/读取数据、读取属性、读取扩展属性、创建文件/写入数据、创建文件夹/附加数据、写入属性、写入扩展属性、删除子文件夹及文件、删除、读取权限这十项权限,如下图所示:
Config目录授予列出文件夹/读取数据、读取属性、读取扩展属性、创建文件/写入数据、写入属性、写入扩展属性、读取权限这七项权限。
在这里我们给应用程序池标识用户按下表汇总目录权限:
网站目录 | 应用程序池标识用户权限 |
网站根目录(/) | 列出文件夹/读取数据、读取属性、读取扩展属性、读取权限 |
Admin | |
App_Code | |
Configuration | |
bin | 遍历文件夹/执行文件、列出文件夹/读取数据、读取属性、读取扩展属性、读取权限 |
App_Data | 列出文件夹/读取数据、读取属性、读取扩展属性、创建文件/写入数据、创建文件夹/附加数据、写入属性、写入扩展属性、删除子文件夹及文件、删除、读取权限 |
Upload | |
Content | |
Content.Pad | |
Content.Phone | |
View | |
View.Pad | |
View.Phone | |
Config | 列出文件夹/读取数据、读取属性、读取扩展属性、创建文件/写入数据、写入属性、写入扩展属性、读取权限 |
注一:bin目录为网站程序的DLL/EXE等可执行文件的存放及运行目录,需要有执行权限以使得网站正常运行;App_Data目录为网站程序的索引、系统日志等数据文件存放目录,需要有写入、删除等权限以使得网站的索引、日志等文件能正常更新;Upload目录为上传文件存放目录,需要写入、删除等权限,以使得上传的文件能正常保存和管理;Content、Content.Pad、Content.Phone、View、View.Pad、View.Phone目录为网站模板、风格文件存放目录,需要有写入、删除等权限以使得模板、风格等文件能在后台被正常管理;Config目录为网站配置文件存放目录,需要写入权限,以使得网站配置信息能正常修改。
注二:应用程序池标识用户的权限配置遵守如下原则:写入权限和执行权限不同时授予同一目录,确保能写入的目录不能被执行,能执行的目录不能被写入。
注三:若网站已完成制作,相关页面的模板、风格无需经常修改,可进一步去除Content、Content.Pad、Content.Phone、View、View.Pad、View.Phone这六个目录的写入、删除权限,以保证网站的风格、模板等文件不被意外修改。当需要修改或管理模板或风格文件时,可重新授予这六个目录的写入、删除权限。
4删除不必要的处理程序映射
在处理程序映射下,仅保留ExtensionlessUrlHandler-Integrated-4.0、ExtensionlessUrlHandler-ISAPI-4.0_32bit、ExtensionlessUrlHandler-ISAPI-4.0_64bit、StaticFile这4项,其余均删除,通过删除不必要的处理程序映射,可以有效防范黑客用AspxSpy这样的木马非法得到WebShell权限,如下图所示:
5删除不必要的处理程序映射功能权限
除了网站根目录之外,根目录下的所有目录,均分别取消处理程序映射的脚本和执行权限,仅保留读取权限。通过去掉脚本权限,能有效防止脚本型木马的非法运行。
因为SiteAzure产品已经自动通过配置文件取消了这些文件夹的脚本执行权限,所以这一步可以节省了。但如果是其他公司的产品,则一定要做这一步。
6设置日志存储位置和W3C日志记录字段
1、设置日志存储位置
双击IIS下的“日志”,打开功能
在非系统盘下,建立一个存放IIS日志的文件夹,如D:\IIS_Log,在日志功能配置下,选择该文件夹作为日志存放目录,避免日志文件占用系统盘空间。
2、设置W3C日志记录字段
因为网站群是绑定了多个主机名(子域名),所以需要知道具体哪个URL是哪个站点的。但IIS的默认配置中,W3C日志记录字段是没有勾选“主机(cs-host)”这个字段的,这样以后就无法通过IIS日志来分析是哪个站点的请求。所以需要修改一下所有服务器的IIS配置,把日志中的这个字段勾选上。
7检查对比网站文件
进行网站重新迁移部署前,需进行一次与动易官方的相同版本产品包对比,确保当前网站迁移文件不存在任何可疑文件。
因为如果网站被黑客攻击而感染了木马文件时,靠手工清理往往难以彻底清理黑客植入的木马文件,因为黑客通常会把木马文件隐藏在比较深层的文件夹下,这时候可以用到文件对比工具,将网站文件与动易官方的默认产品包文件进行对比,再针对差异的文件进行分析,就能快速地找到可疑的文件并进行处理(备注:SiteAzure现在没有可以生成WebShell的安全漏洞,就算是WebShell放在SiteAzure的网站中,在web.config没有修改时(或者说没有加上脚本文件的处理程序映射时),这些WebShell是不能运行的。SiteAzure的前台模板(视图文件)是无法调用文件读写等接口的,所以也不可能通过修改视图文件来得到WebShell。所以,如果SiteAzure出现了Global.asax文件被修改的情况的话,一定是黑客通过旁注来修改的,或者是已经取得了服务器控制权限后才修改的)。
在这里推荐一款文件对比软件Beyond Compare,安装好在界面中选择文件夹比较,如下图所示:
1、打开Beyond Compare程序,两侧分别点击【浏览文件夹】按钮,选择现有网站程序和动易官方的相同版本产品程序包。(本文使用Beyond Compare3版本,其他版本图标可能不尽相同)
2、点击【差别】,选择“显示差异”
3、选择比较范围,建议选择“总是显示文件夹”
4、点击【规则】按钮,打开【比较】选项卡,勾选“比较文件夹大小”,取消勾选“比较时间戳”;需要搭建的文件的选项里,勾选“比较内容”,比较方式选择“二进制比较”具体如下图:
5、点击确认之后,文件会进行自动比较。
文件夹为紫色,代表文件夹下有多余的文件,双击多余文件可打开查看,右击多余文件可进行单独对比检查
6、粉紫混合颜色文件夹,代表文件夹下有大小不相同的文件,双击文件可进行内容对比,即可判断文件是否被篡改。
7、如何对是否存在可疑后缀文件进行快速查看对比呢?
打开【名称过滤】选项卡,填写常见可疑文件类型,填写:*.asax、*.asp、*.asa、*.php、*.axd、*.ashx、*aspx,如还需要对比其他类型的文件,将相应的文件类型也填写进去。