IIS网站日志综合分析 一、日志介绍 网站日志是属于服务器中的一种数据记录文本,主要针对网站在运行状态中所产生的各类数据,常规情况下由网站在正常运营的中,由服务器所自己保持记录的数据。 网站日志与网站的服务器程序密不可分,不同的服务器程序在生成网站日志时方法相差相大。 互联网上常见的服务器程序有: Apache 49%, IIS 20% , Lighttpd 4% 本文档侧重于IIS与Apache服务器的日志说明。 二、网站日志与SEO的作用 了解搜索引擎抓取网页的问题: 1、根据搜索引擎蜘蛛所抓取的情况,我们能够分析出网站在搜索引擎收录中的状态。 2、通过网站日志中的蜘蛛所抓取的数据我们可以清楚的知道,我们网站搜索引擎喜欢哪些页面,哪些页面经常被爬取,而哪些页面爬取频率稍微低一些,从数据我们对网站中不友好的地方做出相应的调整。 3、对搜索引擎蜘蛛在对我们网站在爬去中每日的数据是否正常,是否有太大的变化和不正常的抓取频率。 4、对我们所设置的ROBOTS能够进行跟踪,对所调整后的页面和对蜘蛛进行屏蔽了的页面进行关注和跟进,了解蜘蛛对我们所屏蔽的页面是否有重复或者是继续抓取的情况。 了解网站内容及链接是否正常: 1、 通过对返回的HTML状态代码我们可以了解网站中是否存在死链接,错误地址。 2、 了解网站是否存在内容更新而因设置的关系导致搜索引擎在抓取中无法发觉。 3、 网站是否存在了重定向的问题。 4、 服务器是否存在稳定性不足,影响搜索引擎的爬去。 5、 服务器存在权限不足导致搜索引擎无法抓取。 6、 网站是否被植入一些木马病毒或者是一些可疑的文本植入进行对网站的攻击,我们通过对网站日志所保存的数据跟踪能够及时找到问题的根源。 7、 网站中是否存在了某些文件被误删的情况,通常比如说图片、文档、CSS、JS文本等等。 网站日志研究对于网站安全的作用: 1、了解网站被盗链的情况 如果网站出现了第三方网站的盗链,对我网站中的图片、视频、MP3进行绝对路径的调用导致服务器资源被大量浪费,我们从网站日志中能够及时进行处理。 可初步分析是否有程序在大量抓取数据 1、搜索引擎或者第三方网站如果使用采集程序,大量反复采集我方网站数据,既会对服务器性能造成严重影响,而且会让我们的资料流转到其它网站上。 通过分析日志数据,可以让我们发现这种采集现象。 三、 网站日志文件在哪里?5 J# |7 ?/ K5 K- }9 o 0 U& D& Z9 [6 d8 W* q7 U4 C9 p, K/ I; k9 @# @/ T; O 虚拟主机开通成功之后,会在您的FTP里面自动生成4个文件夹,分别是:"databases","logofiles","others","wwwroot",他们作用如下: ; w6 Q- O, r/ |7 A/ U 1、wwwroot文件夹:该文件夹内存放可以通过web访问的文件,您需要将您对外发布的网站文件上传到该目录下,输入域名访问到的文件将是该文件夹下的文件。% A$ O) H) W. ? 2、databases文件夹:该文件夹同logofiles、others文件夹一样,属于不可通过web访问的文件夹,即用户无法通过输入网址来访问这些文件夹下的文件,您可以在这些文件夹下上传一些不希望别人能够访问的文件。比如您可以将access数据库存放在databases文件夹下,这样可以最大化的保证您的数据库安全。9 S+ r! s1 g7 E- j# ? 3、logofiles文件夹:logofiles文件夹是日志文件,该文件夹存放您的网站日志文件。通过日志文件您可以查询到网站的一些访问记录。(由于各个空间商的不同,本文件夹的命名也有少许差别有都命为:logofiles或者WEBLOG反正一般都会带上LOG这一个字母)" _( w) V) a& t# J8 K 4、others文件夹:该站点存放您自定义的IIS错误文件。IIS默认的一些错误提示,比如404错误,403错误,500错误等等,如果您觉得这些错误提示不够个性化,您可以将您自定义的错误提示上传到该目录下。 四、网站日志设置与分析: IIS日志建议使用W3C扩充日志文件格式,这也是IIS 5.0已上默认的格式,可以指定每天记录客户IP地址、用户名、服务器端口、方法、URI资源、URI查询、协议状态、用户代理,每天要审查日志。如图1所示。 IIS日志的设置 第一个步骤:打开IIS服务器。选择所要设置的网站属性。弹出如下窗口: 选择“启用日志记录”,勾选,选择“W3C扩展日志文件格式”。 第二步骤:再次点击这里的“属性”按钮,常规选项里面,选择新日志计划为“每天”,当然也可以选择其他,选择好保存日志文件的目录。 很多SEO设置到这里,点击确定之后,发现IIS日志已经开始记录,但是无论如何都找不到搜索引擎爬虫的痕迹,类似于Baiduspider+怎么都看不到,其实,我们还应该做第三个辅助步骤,因为默认的IIS日志是不开启这个功能的。 第三个步骤:选择高级选项。勾选底下的用户代理(cs(User-Agent))等选项,我一般都将最下面的三个选项勾选起来。这样,你才可以看到百度等爬虫的名称。 第四个步骤:如果你全部按照上面设置之后,发现你的IIS日志还没开始记录,也就是本次困扰了我非常久的问题,那么最重要的一步就是检查相关的设置是否都完整。有的朋友说IIS日志不记录是因为系统服务WINDOWS time 没启动,或者系统的权限不正确等,比如没让IIS日志保存的那个文件夹有和IIS一样的权限之类,其实没有这么复杂,把下图的“记录访问”选项勾选即可。这样你的IIS日志就开始正常记录了。 将服务器中的LOG文件下载到本地(有些需要文件解压),当然下载当天的,我们打开一个文件可以看见文本中有很多代码。 例:123.125.66.69 - - [05/Jun/2010:01:30:58 -0700] "GET www.xx.com.com/ HTTP/1.1" 200 14384 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)" 220.181.7.88 - - [05/Jun/2010:01:31:00 -0700] "GET www.xx.com.com/ HTTP/1.1" 200 14384 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)" 用户IP地址 123.125.66.69 220.181.7.88 该IP是属于用户或者搜索引擎来访所使用的IP地址,我们通常能够通过此IP地址了解到用户以及搜索引擎所在的地域,通过上面的IP分析我们可以了解到该IP是属于百度蜘蛛所使用。 用户来访时间 05/Jun/2010:01:30:58 日志中所出现的时间是用户或者是搜索引擎蜘蛛在爬取网站中的某一个的时间,如果我们要想了解是用那些地方来访问了我们哪些页面,我们可以使用该时间配合上面的IP地址进行查询。 时区 -0700 该数据代表是网站访问时的时区 服务器动作 "GET www.xx.com.com/ HTTP/1.1 服务器要做的动作要么是GET,要么是POSP。除了一些CGI脚本外,通常都应该是GET,也就是从服务器上获取某个网页或图片文件。 例子里的这行意思就是按HTTP/1.1协议(protocol)获取文件/ www.xx.com.com 返回状态码 Http状态代码 200 下一行是服务器反应是否成功。200就是说成功获取了文件,如果是返回了404,就是文件没有找到。401是需要密码,403禁止查看,500服务器错误,304表示网页无更新或者是无修改,当然还有其他很多代码。 文件大小 14384 这一行指的是所获取的文件大小或者说是抓取的字节,在我们的来自例子里14384byte。 所属蜘蛛探测器 Baiduspider 从此名称我们可以看见是由百度蜘蛛所发出的信号,Google网络蜘蛛的标识为GoogleBot,Yahoo网络蜘蛛的标识为Inktomi Slurp,msn网络蜘蛛的表示为:msnbot,有道蜘蛛:YodaoBot和OutfoxBot,当然还有很多比如说搜搜、搜狗等等。 来访地址 http://www.baidu.com/search/spider.htm 来访地址或者我们可以说是蜘蛛的常见问题和解答 Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) 为访客所使用的浏览器类型(Agent),这里记录了用户使用的操作系统、浏览器型号等 看了以上说明,可能你也大概知道每一行记录到底记录了一些什么东西,可以开始独立分析你的网站原始访问日志了,但是叫你直接看这些杂乱的日志,相信你会很抓狂,不愿意干。cPanle面板中的“Latest Visitors”提供一种格式化后日志查看方式,看起来比较舒服一些: 六、常见名词解释 各大搜索引擎蜘蛛名称 1. Google爬虫名称 1) Googlebot:从Google的网站索引和新闻索引中抓取网页 2) Googlebot-Mobile针对Google的移动索引抓取网页 3) Googlebot-Image:针对Google的图片索引抓取网页 4) Mediapartners-Google:抓取网页确定 AdSense 的内容。只有在你的网站上展示 AdSense 广告的情况下,Google才会使用此漫游器来抓取您的网站。 5) Adsbot-Google:抓取网页来衡量 AdWords 目标网页的质量。只有在你使用 Google AdWords 为你的网站做广告的情况下,Google才会使用此漫游器。 2. 百度(Baidu)爬虫名称:Baiduspider 3. 雅虎(Yahoo)爬虫名称:Yahoo Slurp 4. 有道(Yodao)蜘蛛名称:YodaoBot 5. 搜狗(sogou)蜘蛛名称:sogou spider HTML返回状态代码 2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。 203 正常;部分信息 — 返回的信息只是一部分。 204 正常;无响应 — 已接收请求,但不存在要回送的信息。 3xx 重定向 301 已移动 — 请求的数据具有新的位置且更改是永久的。 302 已找到 — 请求的数据临时具有不同 URI。 303 请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。 304 未修改 — 未按预期修改文档。 305 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。 306 未使用 — 不再使用;保留此代码以便将来使用。 4xx 客户机中出现的错误 400 错误请求 — 请求中有语法问题,或不能满足请求。 401 未授权 — 未授权客户机访问数据。 402 需要付款 — 表示计费系统已有效。 403 禁止 — 即使有授权也不需要访问。 404 找不到 — 服务器找不到给定的资源;文档不存在。 407 代理认证请求 — 客户机首先必须使用代理认证自身。 410 请求的网页不存在(永久); 415 介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。 5xx 服务器中出现的错误 500 内部错误 — 因为意外情况,服务器不能完成请求。 501 未执行 — 服务器不支持请求的工具。 502 错误网关 — 服务器接收到来自上游服务器的无效响应。 503 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。 W3C 扩展日志记录定义 前缀 含义 s- 服务器操作。 c- 客户端操作。 cs- 客户端到服务器的操作。 sc- 服务器到客户端的操作。 字段 格式 描述 日期 date 活动发生的日期。 时间 time 活动发生的时间。 客户端 IP 地址 c-ip 访问服务器的客户端 IP 地址。 用户名 cs-username 访问服务器的已验证用户的名称。这不包括用连字符 (-) 表示的匿名用户。 服务名 s-sitename 客户端所访问的该站点的 Internet 服务和实例的号码。 服务器名 s-computername 生成日志项的服务器名称。 服务器 IP 地址 s-ip 生成日志项的服务器的 IP 地址。 服务器端口 s-port 客户端连接到的端口号。 方法 cs-method 客户端试图执行的操作(例如 GET 方法)。 URI 资源 cs-uri-stem 访问的资源;例如 Default.htm。 URI 查询 cs-uri-query 客户端正在尝试执行的查询(如果有)。 协议状态 sc-status 以 HTTP 或 FTP 术语表示的操作的状态。 Win32? 状态 sc-win32-status 用 Windows? 使用的术语表示的操作的状态。 发送的字节数 sc-bytes 服务器发送的字节数。 接收的字节数 cs-bytes 服务器接收的字节数。 所用时间 time-taken 操作花费的时间长短(亳秒)。 协议版本 cs-version 客户端使用的协议(HTTP,FTP)版本。对于 HTTP,这将是 HTTP1.0 或 HTTP 1.1。 主机 cs-host 显示主机头的内容。 用户代理 cs(User-Agent) 在客户端使用的浏览器。 Cookie cs(Cookie) 发送或接收的 Cookie 的内容(如果有)。 引用站点 cs(Referer) 用户访问的前一个站点。此站点提供到当前站点的链接。 IIS 日志定义 字段 描述 客户端 IP 地址 提出请求的客户机的 IP 地址。 用户名 访问服务器的已验证用户的名称。这不包括用连字符 (-) 表示的匿名用户。 日期 活动发生的日期。 时间 活动发生的时间。 服务和实例 网站实例显示为 W3SVC#;FTP 站点实例显示为 MSFTPSVC#,其中 # 是站点的实例。 计算机名 服务器的网络基本输入/输出系统 (NetBIOS) 名称。 服务器的 IP 地址 为请求提供服务的服务器的 IP 地址。 所用时间 操作花费的时间长短(亳秒)。 发送字节数 从客户端向服务器发送的字节数。 接收字节 客户端从服务器接收到的字节数。 服务状态码 HTTP 或 FTP 状态码。 Windows 状态码 用 Windows 使用的术语表示的操作的状态。 请求类型 服务器收到的请求类型(例如 GET 和 PASS)。 操作目标 操作目标 URL。 参数 传递给脚本的参数。 NCSA 公用日志文件格式 字段 描述 远程主机地址 提出请求的客户机的 IP 地址。 远程登录名称 该值始终是连字符 (-)。 用户名 对于通过身份验证的用户,格式是“域\用户名”;对于匿名用户,是一个连字符 (-)。 日期 活动发生的日期。 时间和 GMT 时差 发生活动的时间,后面跟的是格林威治标准时间时差。 请求和版本 使用的请求类型、目标 URL、传递给脚本的参数(如果有的话)以及客户端使用的 HTTP 版本。 服务器状态码 HTTP 状态码。 发送字节数 从服务器向客户端发送的字节数。 七、常见问题解答以及处理 1、问:如果发现自己网站日志中出现了被人盗链的情况,应该如何处理? 答:如果在日志中,你发现某个资源(网页、图片和mp3等)被人频繁访问,那你应该注意该资源被用于何处了!如果这些请求的来源(Referer)不是你的网站或者为空,且状态码(Http Code)为200,说明你的这些资源很可能被人盗链了,通过 Referer 你可以查出盗链者的网址,这可能就是你的网站流量暴增的原因,你应该做好防盗链了。请看下图,某网站上的japan.mp3这个文件就被人频繁的访问了,下图还只是日志的一部分,这人极其险恶,由于我早已将该文件删除,它迟迟要不到japan.mp3,在短短一个小时内对japan.mp3发起了不下百次的请求,见我设置了防盗链就伪造来源Referer和Agent,还不断地更换IP,很可惜它做得都是无用功,根本没有这个文件,请求的状态码Http Code都是403或者404 2、问:如何根据网站日志分析出网站的 用户体验不足。 答:通过查看格式化后的日志,可以查看跟踪某个IP在某个时间段的一系列访问行为,单个IP的访问记录越多,说明你的网站PV高,用户粘性好;如果单个IP的访问记录希希,你应该考虑如何将你的网站内容做得更加吸引人了。通过分析访客的行为,可以为你的网站建设提供有力的参考,哪些内容好,哪些内容不好,确定网站的发展方向;通过分析访客的行为,看看他们都干了些什么事,可以揣测访客的用意,及时揪出恶意用户。 以上只是我个人总结出来的一些小技巧,可以简单的分析你的日志内容,毕竟我个人见识还是比较短浅,还不能全面地进行日志分析。在cPanel主机控制面板中,还提供了awstats和webalizer两个日志分析工具,它们都是以原始访问日志为基础进行分析,功能强大且丰富,你可以一试,不懂的可以咨询主机客服。 3、问:如何对某个网站盗链进行封杀。 答:如果某个网站频繁地对你网站进行盗链,且不听劝,那你可以通过禁止它的Referer,来达到防盗链目的,下面举个例子来禁止http://www.google.com这个网站对你网站的盗链,正则的编写跟上面的无异,在.htaccess中添加以下规则: SetEnvIf Referer "^http://www\.google\.com" bad_referer Order Allow,Deny Allow from all Deny from env=bad_referer 4、问:针对与网络中存在的盗链问题应该如何处理? 答:通过对来源(Referer)的判断,使用以下代码可以达到简单的防盗链。以下列出的网址,允许访问你网站上后缀名为jpg|gif|png|css|js|bmp|mp3|wma|swf的文件,其余网站全部禁止访问这些文件,正则的写法与上面说的相同,你可以将其中的域名稍作更改,然后应用于你的网站,在.htaccess中添加以下规则: SetEnvIf Referer "^http://www\.ludou\.org/" local_referer SetEnvIf Referer "^http://cache\.baidu\.com/" local_referer # 将以下语句中的 # 去除,即可允许Referer为空的请求,一般设置允许为好 # SetEnvIf Referer "^$" local_referer Order Deny,Allow Deny from all Allow from env=local_referer 以上的代码能够帮你起到防盗链的作用,不过还有一种方式是重命名,即使你网站上的资源被人盗链了,通过文件重命名,同样可以达到防盗链的目的,毕竟盗链者不知道你改了文件名,它也不会整天监视你的文件。 6、问:我怎样对IIS设置进行备份? 答:有多种方法可以用来完成此项工作。在Internet信息服务管理器控制台(IIS插件)中所设置的属性和值都被储存在Metabase.bin文件 中,缺省情况下,这个文件位于“C:winntsystem32inetsrv”目录中。在IIS 5.0中,你可以从内置的IIS插件中来备份元数据。如果需要进行此工作,请选择桌面上的计算机图标然后单击右健。然后再选择 “备份/恢复配置”。然后你就可以选择备份现有元数据设置或者恢复以前的版本。与此相同的选项在MetaEdit 2.2中也可找到。 当你以 这种方式保存了元数据时,你的备份将以.md0文件的格式储存在C:winntsystem32instrvmetaback文件夹中。当你执行备份时, 文件将使用你所指定的名称,如Pre-Lockdown.md0。如果你使用相同的文件名创建了多个备份,他们将使用数字逐渐递增的扩展名,如 Backup.md0,Backup.md1等等。 在你的元数据严重损坏的情况下,你将不能启动IIS。此时,你也不能从IIS插件或 metaedit中执行恢复操作。如果真的发生了类似情况,你就可以通过从备份文件夹中选用最合适的.md0(.md1等等)元数据备份文件来替换 Metabase.bin。如果你的备份文件没有错误,IIS将会立刻启动。 制作元数据的备份还有其它两个意义。你可以使用xcopy,scopy或其它复制程序来简单地复制Metabase.bin文件。你应该先停止Internet服务,以保证你的元数据是最新的并且不在使用状态中。 最 后,我们还提供了两个脚本--metaback.vbs和metarest.vbs--它们位于 Inetpub/IISSamples/sdk/admin(如果你在IIS 5.0上安装了IIS SDK)文件夹中或在IIS Resource Kit/Utility/ADSI Admin Scripts文件夹(如果你安装了IIS 4.0 Resource Kit)中。这些.vbs脚本使用了一个ADSI命令,它是专门为创建元数据备份而提供的。 7、问:我网站返回状态码出现了304,是正常情况? 答:对于大家所关心的304的问题其实不用太过于担心,304返回状态表示了网站没有更新,无任何改动。 8、问:IIS日志中默认时间应该如何调整? 答:IIS默认情况下记录的时间是格林威治时间,也就是与我们使用的北京时间相差8个小时,这样一来看日志就很不方便。 通过一个很小的设置让IIS日志时间使用服务器设置的时区的时间,我们使用的北京时间也就是+8区,一般来说安装操作系统的时候已经设置过了。下面对IIS进行设置(以Windows2003+IIS6为例): 打开“Internet 信息服务(IIS)管理器”,点击“Internet信息服务”、“本地计算机”、“网站”,在需要的网站上(如果要设置所有的网站,则直接在“网站”上)右击“属性”,打开网站属性。 在“网站”标签下找到“活动日志格式”,点击其后的“属性”,打开IIS日志属性 在IIS日志属性“常规”标签下,找到“文件命名和创建使用当地时间”,在其前打勾。 点击两次“确定”退出“Internet 信息服务(IIS)管理器”。 此时,IIS日志就已经是使用当地时间了。 -------------------------------- 注意 根据以下技术分类,对于除 ODBC 日志记录外的所有日志格式,都将记录“所用时间”(毫秒):当 HTTP.sys(内核模式驱动程序)接收到第一个字节时(甚至在 HTTP.sys 开始分析请求之前),将初始化客户端请求的时间戳。当在 IIS 中完成发送(最后一次发送)时,客户端请求时间戳将停止。“所用时间”不反映通过网络的时间。还要注意,对站点的第一次请求需要的时间会比其他类似/相同的请求稍长一点,因为第一次请求时 HTTP.sys 要打开日志文件。 八、工具软件的使用 |
|