标签归档:日志

通过案例学功能 监控宝自定义监控功能初探

通过案例学功能 监控宝自定义监控功能初探

IT系统千差万别hao123网站大全,即便是通用的Java、PHP也会由于版本的差异,配置和接口存在大同而小异,但往往就是这些小差别,会对系统的稳定性和性能产生大影响。市面上的IT监控产品都只能对标准应用的流行版本进行准确监控,对于分支版本或企业自己开发的应用系统则需要大量的定制开发才能实现监控,而云智慧监控宝提供一种简单灵活的监控手段——自定义监控,让你轻松搞定各种应用系统的性能监控。

下面就用监控宝一个客户的案例让大家认识一下自定义监控。

前一段时间,某著名商业企业上线了他们的Tmall系统,云智慧监控宝为其提供了从服务器、应用服务和API接口的监控服务,除此之外,该企业还期望通过交易日志分析了解订单的状态和性能统计,这部分功能并非监控宝产品自带功能,为此云智慧基于监控宝自定义监控功能进行了定制开发,来实现Tmall系统日志分析和监控功能。

监控部署方面比较麻烦,因为Tmall系统是第三方的,非常不愿意我们去监控他们,有很多限制条件,比如不允许日志服务器向外网请求,我们的采集服务只能请求日志服务器nginx后端服务器监控,但最终都得到了圆满的解决。

下面就看看我们怎么用自定义监控搞定Tmall日志监控的。

首先,用Python写了一个增量日志分析程序,根据Tmall提供的规则把企业所需要的监控指标数据比如订单总数、失败订单数、退款订单数以及退款失败订单数从第三方的日志文件中读取出来,并写入我们自己的日志中。

然后,在内网采集器中增加了一个自定义监控的插件,来请求这个日志分析程序获得监控指标数据。

最后,在监控宝自定义监控中增加了一个监控项目,选择采集器Python本地获取数据,实现了这个需求。在部署上,内网采集器独立部署在一台能够访问公网的服务器上,日志分析程序部署在第三方的日志集中存储服务器上。

由于在项目开始的时候,没有认真研究客户日志样例文件和规则说明,所以走了一些弯路,所幸很快校正过来,把所有规则三方确认后升级了一版并最终搞定。这里提醒各位做项目的,项目管理控制必要的步骤不能省,债早晚都是要还的。。。

这个项目是典型的先苦后甜,虽然前期掉了不少坑,但后来通过监控宝发现了不少Tmall系统的问题,在客户面前证明了产品的价值,细节涉及隐私,略过不提。

通过这个案例给大家讲讲监控宝自定

义监控,这是我们产品中藏着的一把瑞士军刀,但由于这个功能是免费的,所以很多用户反而不太了解。

那么监控宝为什么会提供这个功能呢?

监控宝靠网站监控打开了一片天地,后来增加了服务器和服务监控,并逐渐支持Apache、Nginx等典型Web应用,在这个过程中我们发现nginx后端服务器监控,即使提供再多的标准服务也无法覆盖广大用户不同版本、不同类型的应用,还有不少中、高级用户会根据需求自己开发的个性化应用。

对监控来说,简单说就是采集数据、分析结果、给出告警这三个步骤万发商务移动站,而客户的各类个性化应用对我们来说最难的一点在于数据采集。监控宝自定义监控的工作原理非常简单,就是将数据采集标准化,我们制定了一个标准格式的数据交换文件。

:0.0

:0

:0

:906

:96692

:3

:0

:14668.

:1205901.0

:2090

size:92

:1

:5567

:0

是必须有的,、等这些都是我们定义的监控指标,冒号之后是对应的指标值,这个文件是通过界面的方式定义。

定义好这个规则之后,剩下的就简单了,让被监控的目标程序或是应用把指标写成这种格式的文件,做成一个可以被http请求到的资源,不断的把指标数据值写进来。之后在自定义监控中创建监控项目,选择这个规则,就可以了。

举例说明:

是Apache的开源消息总线,如果用自定义监控如何实现的监控需求呢?

第一步,整理出监控的指标要求

第二步,写个程序读取的指标数据,这里用到了 plugin ,在中配置一下即可。

配置项灰常简单,用java写个进程隔几秒钟取一次指标,代码比较挫,可以无视。

主要是看输出文件位置:”/Users/jason///webapps/root/.html”

在本机装个tomcat通过案例学功能 监控宝自定义监控功能初探,这个位置就是默认的应用目录,.html就是我们定义的规则文件。

至此,监控指标读取和输出完毕,这部分工作一般是客户自己完成,或是云智慧的工程师来帮客户以项目方式完成,该企业的日志分析程序就是类似这样的。

再后面就是监控宝自定义监控的工作了。

因为tomcat在本机,外网访问不到,所以需要安装一个采集器,选择好自定义监控插件即可。操作过程略过。

非常新鲜,刚刚创建的。

创建一个自定义监控。

规则是提前建好的,指标多创建起来好麻烦的说。

这个是创建页面,这里面的状态页其实就是我之前/Users/jason///webapps/root/.html输出的格式。

这个规则是对照着输出结果创建的,而用采集器解决了外网访问不了的问题。

上面提到的那家咖啡企业是采用了“执行内部文件获取数据”的方式hao123网站大全,和这个方式不太一样,不过这是最简单和常用的方式。另外,在规则定义中可以定义图和线的,

最后给大家看下效果吧。

自定义监控功能非常强大的,如果数据采集输出环节技术难度不大的话,可以非常快速的搞定一个客户的特殊监控需求,所以很多老用户都最爱自定义监控功能。接下来我们会为您介绍监控宝自定义监控的详细用法,敬请期待。

818114文章来源于互联网,本网转载出于传递更多信息和动漫学习之目的,并不意味着赞同其观点或证实其内容的真实性,如有侵权请通知我们立刻删除!

服务器被黑给我上了一课,由0到1轻松应对各式攻击!

服务器被黑给我上了一课,由0到1轻松应对各式攻击!

当你负责的服务器被黑了,怎么办?

没遭遇过如此大风大浪的运维人员:

哦,**!我该怎么办,点根香烟冷静一下。

Wait!小编请您先切断网络,再拿出你的打火机。

下面用一根烟的时间,和小编一起看看处理服务器遭受攻击事件的最佳思路。

开始之前,我们分析一下,服务器遭受恶意攻击后主要有哪几种情况。

攻击行为分类:

1)恶意的攻击行为服务器被黑给我上了一课,由0到1轻松应对各式攻击!,如拒绝服务攻击,网络病毒等等,这些行为旨在100%消耗服务器资源,影响服务器的正常运作万发商务移动站,甚至服务器所在网络的瘫痪;

2)恶意的入侵行为,这种行为更是会导致服务器敏感信息泄露,入侵者可以为所欲为,肆意破坏服务器服务器密码修改,窃取其中的数据信息并毁坏等。

1、深呼吸,不要紧张

首先,你需要在攻击者察觉到你已经发现他之前夺回机器的控制权。如果攻击者正在线上,他很可能发现你已经开始行动了,那么他可能会锁死你不让你登陆服务器,然后开始毁尸灭迹。

所以,如果技术有限,首先切断网络或者直接关机。

切断网络的方式:你可以拔掉网线,或者运行命令:

  1. systemctl stop network.service  

以关闭服务器的网络功能。或者在服务器上运行以下两条命令之一来关机:

  1. shutdown -h now 
  2. systemctl poweroff 

2、备份重要的数据

在开始分析之前,备份服务器上重要的用户数据,同时也要查看这些数据中是否隐藏着攻击源。如果攻击源在用户数据中,一定要彻底删除,然后将用户数据备份到一个安全的地方。

3、修改root密码

因为很多情况下,攻击者高概率已经拿到你的root权限。

接着进行痕迹数据采集备份,痕迹数据是分析安全事件的重要依据,包括登录情况、进程信息、网络信息、系统日志等等。具体的一些查看方参考下文~

4、查看当前登录在服务器上的用户

查看近期登陆过服务器的用户

  1. last | more 

5、通过上述命令114黄页网,假设发现可疑用户someone万发商务移动站,锁定可疑用户someone

  1. passwd -l someone 

6、查看攻击者有没有在自己的服务器上开启特殊的服务进程,比如后门之类的

  1. netstat -nl 

类似22等是我们比较熟悉的端口,一些比较大的端口号,如52590等114黄页网,就可以作为怀疑对象,用lsof -i命令查看详细信息:

  1. lsof -i :52590 

7、检查有无异常进程并终止

  1. ps aux 

  1. top 

根据进程名称(以sshd为例)查看pid

  1. pidof sshd 

查看对应pid目录下的exe文件信息

  1. ls -al /proc/7182/exe 

查看该pid文件句柄

  1. ls -al /proc/7182/fd 

指定端口,查看相关进程的pid

  1. fuser -n tcp 111 

根据pid查看相关进程

  1. ps -ef|grep 6483 

列出该进程地所有系统调用

  1. strace -p PID 

列出该进程打开的文件

  1. lsof -p PID 

8、如果攻击者依旧在线上,那么现在,把他踢!下!线!

根据w命令输出信息中的TTY,用以下命令,可以向攻击者发送消息并“杀死他”:

  1. write USER TTY 
  2. pkill -kill -t TTY 

如上图,小编把自己当小白鼠实验一下,write命令可以向对方发送消息”Goodbye!!”(小编给自己发了服务器密码修改,所以屏幕上有两个Goodbye,第二个就是收到的)hao123网站大全,这里你就发送任何挑衅的语言,获得一丝丝满足感。最后Ctrl+d即可退出对话。然后用pkill命令就可以真的可以和对方say goodbye啦~

但是没有足够的技术把握,还是不要随意挑衅攻击者114网址导航,气急败坏地回来在攻击一遍就糟了。

9、检查系统日志

查看命令历史

  1. history 

能够看见攻击者曾经做过的事情,注意观察有没有用 wget 或 curl 命令来下载类似垃圾邮件机器人或者挖矿程序之类的非常规软件。如果发现没有任何输出,这也是十分不妙,很可能是攻击者删除了~/.文件,这意味着你的对手也许不容小觑。

查看日志是否还存在,或者是否被清空

  1. ll -h /var/log/* 
  2. du sh /var/log/* 

10、日志等信息备份

818114文章来源于互联网,本网转载出于传递更多信息和动漫学习之目的,并不意味着赞同其观点或证实其内容的真实性,如有侵权请通知我们立刻删除!

网站渗透测试 日志溯源技术与密码授权机制分析

在众多渗透测试中客户想要了解攻击溯源查找问题,我们Sine安全在日常网站安全检测过程中了解知道黑客是如何攻击和上传木马并进行篡改,以及如何查找日志分析攻击者是通过哪些脚本入口文件进行入侵的,那么本节由我们资深的渗透测试主管技术来为大家讲解。

6.9.1.1. 基于日志的溯源

使用路由器、主机等设备记录网络传输的数据流中的关键信息(时间、源地址、目的地址),追踪时基于日志查询做反向追踪。 这种方式的优点在于兼容性强、支持事后追溯、网络开销较小。但是同时该方法也受性能、空间和隐私保护等的限制,考虑到以上的因素,可以限制记录的数据特征和数据数量。另外可以使用流量镜像等技术来减小对网络性能的影响。

6.9.1.2. 路由输入调试技术

在攻击持续发送数据,且特性较为稳定的场景下,可以使用路由器的输入调试技术,在匹配到攻击流量时动态的向上追踪。这种方式在DDoS攻击追溯中比较有效,且网络开销较小。

6.9.1.3. 可控洪泛技术

追踪时向潜在的上游路由器进行洪泛攻击,如果发现收到的攻击流量变少则攻击流量会流经相应的路由。这种方式的优点在于不需要预先部署,对协同的需求比较少。但是这种方式本身是一种攻击,会对网络有所影响。

6.9.1.4. 基于包数据修改追溯技术

这种溯源方式直接对数据包进行修改,加入编码或者标记信息,在接收端对传输路径进行重构。这种方式人力投入较少,支持事后分析,但是对某些协议的支持性不太好。 基于这种方式衍生出了随机标记技术,各路由以一定概率对数据包进行标识,接收端收集到多个包后进行重构。

6.9.2. 分析模型

6.9.2.1. 杀伤链(Kill Kain)模型

杀伤链这个概念源自军事领域,它是一个描述攻击环节的模型。一般杀伤链有认为侦查跟踪(Reconnaissance)、武器构建(Weaponization)、载荷投递(Delivery)、漏洞利用(Exploitation)、安装植入(Installation)、通信控制(Command&Control)、达成目标(Actions on Objective)等几个阶段。

在越早的杀伤链环节阻止攻击,防护效果就越好,因此杀伤链的概念也可以用来反制攻击。

在跟踪阶段,攻击者通常会采用扫描和搜索等方式来寻找可能的目标信息并评估攻击成本。在这个阶段可以通过日志分析、邮件分析等方式来发现,这阶段也可以采用威胁情报等方式来获取攻击信息。

武器构建阶段攻击者通常已经准备好了攻击工具,并进行尝试性的攻击,在这个阶段IDS中可能有攻击记录,外网应用、邮箱等帐号可能有密码爆破的记录。有一些攻击者会使用公开攻击工具,会带有一定的已知特征。

载荷投递阶段攻击者通常会采用网络漏洞、鱼叉、水坑、网络劫持、U盘等方式投送恶意代码。此阶段已经有人员在对应的途径收到了攻击载荷,对人员进行充分的安全培训可以做到一定程度的防御。

突防利用阶段攻击者会执行恶意代码来获取系统控制权限,此时木马程序已经执行,此阶段可以依靠杀毒软件、异常行为告警等方式来找到相应的攻击。

安装植入阶段攻击者通常会在web服务器上安装Webshell或植入后门、rootkit等来实现对服务器的持久化控制。可以通过对样本进行逆向工程来找到这些植入。

通信控制阶段攻击者已经实现了远程通信控制,木马会通过Web三方网站、DNS隧道、邮件等方式和控制服务器进行通信。此时可以通过对日志进行分析来找到木马的痕迹。

达成目标阶段时,攻击者开始完成自己的目的,可能是破坏系统正常运行、窃取目标数据、敲诈勒索、横向移动等。此时受控机器中可能已经有攻击者的上传的攻击利用工具,此阶段可以使用蜜罐等方式来发现。

6.9.2.2. 钻石(Diamond)模型

钻石模型由网络情报分析与威胁研究中心(The Center for Cyber Intelligence Anaysis and Threat Research,CCIATR)机构的Sergio Catagirone等人在2013年提出。

该模型把所有的安全事件(Event)分为四个核心元素,即敌手(Adversary),能力(Capability),基础设施(Infrastructure)和受害者(Victim),以菱形连线代表它们之间的关系,因而命名为“钻石模型”。

杀伤链模型的特点是可说明攻击线路和攻击的进程,而钻石模型的特点是可说明攻击者在单个事件中的攻击目的和所使用攻击手法。

在使用钻石模型分析时,通常使用支点分析的方式。支点(Pivoting)指提取一个元素,并利用该元素与数据源相结合以发现相关元素的分析技术。分析中可以随时变换支点,四个核心特征以及两个扩展特征(社会政治、技术)都可能成为当时的分析支点。

6.9.3. 关联分析方法

关联分析用于把多个不同的攻击样本结合起来。

6.9.3.1. 文档类

hash

ssdeep

版本信息(公司/作者/最后修改作者/创建时间/最后修改时间)

6.9.3.2. 行为分析

基于网络行为

类似的交互方式

6.9.3.3. 可执行文件相似性分析

特殊端口

特殊字符串/密钥

PDB文件路径

相似的文件夹

代码复用

相似的代码片段

6.9.4. 清除日志方式

kill不会存储

set +o history 不写入历史记录

unset HISTFILE 清除历史记录的环境变量

OAuth

7.1.1. 简介

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

OAuth在客户端与服务端之间,设置了一个授权层(authorization layer)。客户端不能直接登录服务端,只能登录授权层,以此将用户与客户端区分开来。客户端登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。

客户端登录授权层以后,服务端根据令牌的权限范围和有效期,向客户端开放用户储存的资料。

OAuth 2.0定义了四种授权方式:授权码模式(authorization code)、简化模式(implicit)、密码模式(resource owner password credentials)和客户端模式(client credentials)。

7.1.2. 流程

用户打开客户端以后,客户端要求用户给予授权

用户同意给予客户端授权

客户端使用上一步获得的授权,向认证服务器申请令牌

认证服务器对客户端进行认证以后,确认无误,同意发放令牌

客户端使用令牌,向资源服务器申请获取资源

资源服务器确认令牌无误,同意向客户端开放资源

7.1.3. 授权码模式

授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与服务端的认证服务器进行互动。

其流程为:

用户访问客户端,后者将前者导向认证服务器

用户选择是否给予客户端授权

假设用户给予授权,认证服务器将用户导向客户端事先指定的”重定向URI”(redirection URI) ,同时附上一个授权码

客户端收到授权码,附上早先的”重定向URI”,向认证服务器申请令牌

认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)

A步骤中,客户端申请认证的URI,包含以下参数:

response_type:表示授权类型,必选项,此处的值固定为 code

client_id:表示客户端的ID,必选项

redirect_uri:表示重定向URI,可选项

scope:表示申请的权限范围,可选项

state:表示客户端的当前状态,需动态指定,防止CSRF

C步骤中,服务器回应客户端的URI,包含以下参数:

code:表示授权码,必选项。该码的有效期应该很短且客户端只能使用该码一次,否则会被授权服务器拒绝。该码与客户端ID和重定向URI,是一一对应关系。

state:如果客户端的请求中包含这个参数,认证服务器回应与请求时相同的参数

D步骤中,客户端向认证服务器申请令牌的HTTP请求,包含以下参数:

grant_type:表示使用的授权模式,必选项,此处的值固定为 authorization_code

code:表示上一步获得的授权码,必选项

redirect_uri:表示重定向URI,必选项,且必须与A步骤中的该参数值保持一致

client_id:表示客户端ID

E步骤中,认证服务器发送的HTTP回复,包含以下参数:

access_token:表示访问令牌,必选项

token_type:表示令牌类型,该值大小写不敏感,必选项,可以是 bearer 类型或 mac 类型

expires_in:表示过期时间,单位为秒。如果省略该参数,必须其他方式设置过期时间

refresh_token:表示更新令牌,用来获取下一次的访问令牌,可选项

scope:表示权限范围,如果与客户端申请的范围一致,此项可省略

7.1.4. 简化模式

简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了授权码这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。

其步骤为:

客户端将用户导向认证服务器

用户决定是否给于客户端授权

假设用户给予授权,认证服务器将用户导向客户端指定的重定向URI,并在URI的Hash部分包含了访问令牌

浏览器向资源服务器发出请求,其中不包括上一步收到的Hash值

资源服务器返回一个网页,其中包含的代码可以获取Hash值中的令牌

浏览器执行上一步获得的脚本,提取出令牌

浏览器将令牌发给客户端

A步骤中,客户端发出的HTTP请求,包含以下参数:

response_type:表示授权类型,此处的值固定为 token ,必选项

client_id:表示客户端的ID,必选项

redirect_uri:表示重定向的URI,可选项

scope:表示权限范围,可选项

state:表示客户端的当前状态,需动态指定,防止CSRF

C步骤中,认证服务器回应客户端的URI,包含以下参数:

access_token:表示访问令牌,必选项

token_type:表示令牌类型,该值大小写不敏感,必选项

expires_in:表示过期时间,单位为秒。如果省略该参数,必须其他方式设置过期时间

scope:表示权限范围,如果与客户端申请的范围一致,此项可省略

state:如果客户端的请求中包含这个参数,认证服务器回应与请求时相同的参数

在上面的例子中,认证服务器用HTTP头信息的Location栏,指定浏览器重定向的网址。注意,在这个网址的Hash部分包含了令牌。

根据上面的D步骤,下一步浏览器会访问Location指定的网址,但是Hash部分不会发送。接下来的E步骤,服务提供商的资源服务器发送过来的代码,会提取出Hash中的令牌。

7.1.5. 密码模式

密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向”服务商提供商”索要授权。

在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。

其步骤如下:

用户向客户端提供用户名和密码

客户端将用户名和密码发给认证服务器,向后者请求令牌

认证服务器确认无误后,向客户端提供访问令牌

B步骤中,客户端发出的HTTP请求,包含以下参数:

grant_type:表示授权类型,此处的值固定为 password ,必选项

username:表示用户名,必选项

password:表示用户的密码,必选项

scope:表示权限范围

7.1.6. 客户端模式

客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向服务端进行认证。

其步骤如下:

客户端向认证服务器进行身份认证,并要求一个访问令牌

认证服务器确认无误后,向客户端提供访问令牌

A步骤中,客户端发出的HTTP请求,包含以下参数:

granttype:表示授权类型,此处的值固定为 clientcredentials ,必选项

scope:表示权限范围,可选项

B步骤中,认证服务器向客户端发送访问令牌,渗透测试中包含的授权模式都要详细的审计和检测,如果对此有更多的想要了解,可以联系专业的网站安全公司来处理,国内做的比较大的推荐Sinesafe,绿盟,启明星辰,深信服等等都是比较不错的渗透测试公司。

蜘蛛日志分析蜘蛛抓取的行为

  通过对网站日志的分析,我们可以很好的判断我们的网站的健康程度,并且还可以看到蜘蛛抓取的记录以及用户的一些行为记录,这样数据对于我们来讲无疑是提升网站的一个关键,可以时刻的让我们看到网站的不足之处,从而进行改正。然而今天小编与大家分享的主要是蜘蛛抓取的行为,希望对各位站长有所帮助。

  (一)蜘蛛访问的次数、停留时间以及抓取的数量。

  从小标题中的三个小编提到的数据我们可以了解到下面几点信息:

  1、平均每次抓取页面数=总抓取量/访问次数

  2、单页抓取停留=每次停留/每次抓取

  3、平均每次停留时间=总停留时间/访问次数

  以上三点载自百度百科。

  从这些数据中我们可以很好的看出百度蜘蛛在我们网站上的活跃度、是否亲和,以及我们网站内容抓取的深度等等有效的数据。当我们网站中总的访问频次、蜘蛛停留的时间,以及网站抓取程度的是否高,从这些都是可以看出我们网站是否受到蜘蛛的喜爱。并且在我们单页面的蜘蛛停留时间的长短也可以看出我们的文章页面是否受蜘蛛的喜爱。

  小提示:如果你想要长期发展一个网站的话,小编建议各位定期的整理出网站数据报表,这样对我们网站的发展也会有着很好的帮助。

  (二)网站目录蜘蛛抓取的统计。

  通过网站日志的分析,可以很好的看出我们的哪些目录比较受蜘蛛的喜爱,蜘蛛经常抓取收录,并且给予的排名权重状况。并且我们可以通过这些数据能够发现很多问题,对于我们想要突出的栏目可以通过内部结构来进行指向,从而有效的增加栏目的权重和蜘蛛抓取的程度。对于那些我们不希望蜘蛛抓取的页面,也可以进行屏蔽。

  (三)网站页面的抓取。

  通过日常的日志分析统计中,我们可以看出哪些网站页面比较受蜘蛛的喜爱,并且可以了解到蜘蛛在这些页面的抓取行为,例如说蜘蛛是否抓取了一些没有被收录价值的页面,或者重复的抓取了一些页面等,大家都知道这样会影响到我们网站其他页面的权重传递的。就比如说小编的网站皮肤栏目通常就要比名字栏目抓取的勤快,收录健康程度也较好,所以小编现在定期在名字栏目的文章中添加进入一些图片,不仅仅美观还有效的提升了名字栏目文章的收录,所以通过分析,我们可以屏蔽蜘蛛抓取这些没有价值的页面,也有效的提高了我们其他页面权重的传递,并且学习蜘蛛比较喜爱的页面优点来补充其他页面的不足。

  (四)了解蜘蛛是否访问我们的页面以及访问页面的状态代码。

  很多朋友的网站主页快照经常不正常,网站发布的文章也经常不收录,面对这样的情况我们都会想蜘蛛有没有到我们的网站抓取。这时候我们也可以通过网站日志来看是否有蜘蛛IP的记录就可以了解蜘蛛是否来爬行我们的网站,从而判断是否是我们网站质量的原因导致不收录。并且也可以看出蜘蛛访问我们网站页面的状态代码,例如说301、503、403等,当出现这样情况的时候,我们尽早做处理,以免成为网站降权的隐患。

  (五)了解蜘蛛抓取的时间段。

  通过日常日志分析总结中,你会很奇妙的发现一件事,那就是蜘蛛会在每天的一个特定时间内在网站爬行抓取的很活跃,当我们了解到这样的情况,我们就可以再特定的时间去更新网站内容,这个可以更加有效的让蜘蛛抓取我们网站内容,从而达到一个秒收的效果。

  总结:如果一个网站想要长久发展的话,站长们一定要学会分析网站日志,从而了解网站每天的健康状况,并且发现异常情况的时候即使改正,这样不仅仅对网站有很大的帮助,还有效的防止网站因为这些异常引发的降权、被K等现象。

站长优化日常:SEO每日日志

SEO的日常工作相对较为反复,迷茫开始成为SEOer标配,一天看似忙的不可开交,大多数都是去这个SEO群里聊聊,那么贴吧看看,找找外链平台,观摩一下其他做的比较好的同类别网站,然后赶在下班之前,发发文章,总之一天下来,对网站的建树不够大,自身的提升也可寥寥几笔带过。

SEO工作是什么?

SEO工作日志就是,每天通过网站操作后,获取的细微数据变量情况的整理和优化方向的调整,获取相对正确的网站操作方式以及经验累积。

那么站长优化日常工作是什么?

1、利用站长工具查询网站排名变化

(1) 通过5118、站长、爱站工具进行排名查询。

(2) 对于核心关键词和重点优化关键词把词性变化汇总于excel之中。

(3) 总结排名变化中的规律以及你自身的操作对排名带来的效果和影响。

2、网站收录、索引、流量、外链分析

(1) 查询网站对前一天内容收录情况,网站收录速度和基础排名是否正常。

(2) 通过百度站长对网站索引进行查询,网站索引是否有正常递增。

(3) 通过网站流量统计,对网站流量进行整体分析,如:什么页面的用户点击行为较强?什么关键词用户搜索点击频次比较高,依据对应关键词做词性延展和调整。

(4) 对外链情况进行分析,通过外链的收录和排名基础,能够不断累积一批在这个行业类别中,收录比较好,排名比较靠前,以及各类不同平台的发文规则。

3、网站文案及网站内容的撰写要求

(1) 不断的提升网站固定文案的营销性和吸睛能力,加强用户进入网站后的粘性。

(2) 加强对文章内容质量传输,观察网站文章发布后的基础排名情况,找到适应于网站的关键词布局逻辑。

(3) 详细的分析,网站的文章关键词布局数量、长短、内容质量、收录速度、排名基础等整体情况,了解什么样的文章写作手法和内容方向能够成为网站的加速器。

4、挖掘周边关键词和同类别关键词

(1) 通过各种挖掘工具对关键词进行挖掘

(2) 如果是新站,前期建议不要考虑做更多的大词,流量指数高于500的词,一般新手不好驾驭,建议对周边词做拓展,例如:成都SEO优化、成都SEO网站优化、成都网站优化等。

(3) 挖掘一批优质关键词之后,可通过文章的标题和内容体现不断的加深关键词的输出,但不要仅依托一篇文章就预想关键词排名能够上首页,因为前期网站质量不高,文章的竞争优势相对比较薄弱。

5、SEO竞争对手分析

(1) 分析对手网站整体情况

(2) 分析竞争对手网站排名基础和每日变量

(3) 对竞品网站文章输出质量、数量以及布局逻辑进行分析

(4) 不要随意模仿竞品手法应采取借鉴思维,因为随是竞品但因运营思路、运营模式、核心关键词定位不一致,容易导致网站主体漂移。

(5) 同竞品对比,对自身网站不足进行完善和补充。会议平台网站 

什么是网站日志分析,网站日志都分析什么?

网站日志是记录web服务器接收处理请求以及运行时错误等各种原始信息的以·log结尾的文件,确切的讲,应该是服务器日志。网站日志最大的意义是记录网站运营中比如空间的运营情况,被访问请求的记录。


怎么分析网站日志?


登录“FTP”账号,链接到网站数据,找到网站日志文件夹。(注意:一般情况下,网站日志所在文件夹都是与网站文件同级文件夹,且带有log字样。只有少数情况下,网站日志文件夹在网站根目录下。)


打开文件夹,下载日志压缩文件!(下载方法很简单,只要选中文件直接拖到电脑桌面,然后左下方的本地浏览下载目录的文件上“右键—传输队列”即可!)

解压下载的日志文件,而后将解压后文件的后缀改为“txt”

新建一个excel表格,并打开!找到顶端工具栏的“数据”工具

点击“导入数据”,默认“直接打开数据文件”,再选择“选择数据源”。

选中解压后的txt文档,并打开!

默认“其他编码”

选择“分隔符号”,并“下一步”;

勾选所有选项,然后“下一步”;

默认“常规”,并“完成”;

如图,网站日志哥数据项之间全部分隔开来;

接下来只要保留自己需要的数据项即可。删除不需要的数据项!(如图,仅保留了数据分析需要的访客ip、访问文件、访问状态码以及访客名称四项数据。)

选中访客名称一整列,然后点击“开始”栏目的“筛选”工具

点击访客名称一列上方的三角下拉按钮;

取消“全选”,找到百度蜘蛛的访客名称,选中并“确定”;

我们就可以得到日志当天百度蜘蛛访问网站的所有数据。


最后,该数据保存到网站每日分析日志中。

服务器日志有什么作用

日志服务器是专门供一些服务器,设备在运行过程中产生的使用记录及硬件状态的一个集中反应的

据存储
的地方就是日志服务器,用户可以根据需要做数据的查询统计等工作,及时了解各部分设备的运行状态。

日志文件为服务器、工作站、防火墙和应用软件等IT资源相关活动记录必要的、有价值的信息,这对系统监控、查询、报表和安全审计是十分重要的。日志文件中的记录可提供以下用途:监控系统资源;审计用户行为;对可疑行为进行告警;确定入侵行为的范围;为恢复系统提供帮助;生成调查报告;为打击计算机犯罪提供证据来源。

里面的代码怎么看?

好多朋友下了日记后打开一看,里面写的乱七八糟,一个都看不懂。其实他是有顺序的,他是以时间为单位的。一行就是一个记录。下面举例:

2009-10-11 09:36:32 GET /show.asp – 220.181.125.70 HTTP/1.1 Sogou+web+spider/4.0(+
http://www.sogou.com/docs/help/webmasters.htm#0
7
) – 200 0 36228

这是网站日记里的一行代码, 2009-10-11 09:36:32 这是时间,就是什么时候来的。get 那是动作,一般有GET和HEAD两种 ,这两个的区别,懂编程的朋友都知道的,这里不说。/show.asp 是文件地址,就是你被访问的文件的地址。 220.181.125.70 是IP地址,我这里是Google来的,HTTP/1.1 Sogou+web+spider/4.0(+
http://www.sogou.com/docs/help/webmasters.htm#07
)这 里一看就知道了。200 0 36228这里代表未收录。

分析服务器日志
可以找到网站存在的隐患、操作的记录等等,便于对遇到的问题进行判断。

一个百亿级日志系统是怎么设计出来的?

日志是记录系统中各种问题信息的关键,也是一种常见的海量数据。

日志平台为集团所有业务系统提供日志采集、消费、分析、存储、索引和查询的一站式日志服务。

主要为了解决日志分散不方便查看、日志搜索操作复杂且效率低、业务异常无法及时发现等等问题。

随着有赞业务的发展与增长,每天都会产生百亿级别的日志量(据统计,平均每秒产生 50 万条日志,峰值每秒可达 80 万条)。日志平台也随着业务的不断发展经历了多次改变和升级。

本文跟大家分享有赞在当前日志系统的建设、演进以及优化的经历,这里先抛砖引玉,欢迎大家一起交流讨论。

原有日志系统

有赞从 2016 年就开始构建适用于业务系统的统一日志平台,负责收集所有系统日志和业务日志,转化为流式数据。

通过 Flume 或者 Logstash 上传到日志中心(Kafka 集群),然后供 Track、Storm、Spark 及其他系统实时分析处理日志。

并将日志持久化存储到 HDFS 供离线数据分析处理,或写入 ElasticSearch 提供数据查询。

整体架构如图 2-1 所示:

图 2-1:原有日志系统架构

随着接入的应用越来越多,接入的日志量越来越大,逐渐出现一些问题和新的需求,主要在以下几个方面:

  • 业务日志没有统一的规范,业务日志格式各式各样,新应用接入无疑大大的增加了日志的分析、检索成本。
  • 多种数据日志数据采集方式,运维成本较高。
  • 日志平台收集了大量用户日志信息,当时无法直接的看到某个时间段,哪些错误信息较多,增加定位问题的难度。
  • 存储方面。

关于存储方面:

  • 采用了 ES 默认的管理策略,所有的 Index 对应 3*2 Shard(3 个 Primary,3 个 Replica)。

有部分 Index 数量较大,对应单个 Shard 对应的数据量就会很大,导致有 Hot Node,出现很多 bulk request rejected,同时磁盘 IO 集中在少数机器上。

  • 对于 bulk request rejected 的日志没有处理,导致业务日志丢失。
  • 日志默认保留 7 天,对于 SSD 作为存储介质,随着业务增长,存储成本过于高昂。
  • 另外 Elasticsearch 集群也没有做物理隔离,ES 集群 OOM 的情况下,使得集群内全部索引都无法正常工作,不能为核心业务运行保驾护航。

现有系统演进

日志从产生到检索,主要经历以下几个阶段:

  • 采集
  • 传输
  • 缓冲
  • 处理
  • 存储
  • 检索

详细架构如图 3-1 所示:

图 3-1:现有系统架构

日志接入

日志接入目前分为两种方式:

  • SDK 接入:日志系统提供了不同语言的 SDK,SDK 会自动将日志的内容按照统一的协议格式封装成最终的消息体,并最后最终通过 TCP 的方式发送到日志转发层(Rsyslog-Hub)。
  • HTTP Web 服务接入:有些无法使用 SDK 接入日志的业务,可以通过 HTTP 请求直接发送到日志系统部署的 Web 服务,统一由 Web Protal 转发到日志缓冲层的 Kafka 集群。

日志采集

现在有 Rsyslog-Hub 和 Web Portal 做为日志传输系统,Rsyslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。

之前系统演进过程中使用过直接在宿主机上部署 Flume 的方式,由于 Flume 本身是 JAVA 开发的,会比较占用机器资源而统一升级为使用 Rsyslog 服务。

为了防止本地部署与 Kafka 客户端连接数过多,本机上的 Rsyslog 接收到数据后,不做过多的处理就直接将数据转发到 Rsyslog-Hub 集群。

通过 LVS 做负载均衡,后端的 Rsyslog-Hub 会通过解析日志的内容,提取出需要发往后端的 Kafka Topic。

日志缓冲

Kafka 是一个高性能、高可用、易扩展的分布式日志系统,可以将整个数据处理流程解耦。

将 Kafka 集群作为日志平台的缓冲层,可以为后面的分布式日志消费服务提供异步解耦、削峰填谷的能力,也同时具备了海量数据堆积、高吞吐读写的特性。

日志切分

日志分析是重中之重,为了能够更加快速、简单、精确地处理数据。日志平台使用 Spark Streaming 流计算框架消费写入 Kafka 的业务日志。

Yarn 作为计算资源分配管理的容器,会跟不同业务的日志量级,分配不同的资源处理不同日志模型。

整个 Spark 任务正式运行起来后,单个批次的任务会将拉取到的所有的日志分别异步的写入到 ES 集群。

业务接入之前可以在管理台对不同的日志模型设置任意的过滤匹配的告警规则,Spark 任务每个 Excutor 会在本地内存里保存一份这样的规则。

在规则设定的时间内,计数达到告警规则所配置的阈值后,通过指定的渠道给指定用户发送告警,以便及时发现问题。

当流量突然增加,ES 会有 bulk request rejected 的日志重新写入 Kakfa,等待补偿。

日志存储

原先所有的日志都会写到 SSD 盘的 ES 集群,LogIndex 直接对应 ES 里面的索引结构。

随着业务增长,为了解决 ES 磁盘使用率单机最高达到 70%~80% 的问题,现有系统采用 Hbase 存储原始日志数据和 ElasticSearch 索引内容相结合的方式,完成存储和索引。

Index 按天的维度创建,提前创建 Index 会根据历史数据量,决定创建明日 Index 对应的 Shard 数量,也防止集中创建导致数据无法写入。

现在日志系统只存近 7 天的业务日志,如果配置更久的保存时间的,会存到归档日志中。

对于存储来说,Hbase、ES 都是分布式系统,可以做到线性扩展。

多租户

随着日志系统不断发展,全网日志的 QPS 越来越大,并且部分用户对日志的实时性、准确性、分词、查询等需求越来越多样。

为了满足这部分用户的需求,日志系统支持多租户的的功能,根据用户的需求,分配到不同的租户中,以避免相互影响。

针对单个租户的架构如下:

  • SDK:可以根据需求定制,或者采用天网的 TrackAppender 或 SkynetClient。
  • Kafka 集群:可以共用,也可以使用指定 Kafka 集群。
  • Spark 集群:目前的 Spark 集群是在 Yarn 集群上,资源是隔离的,一般情况下不需要特地做隔离。
  • 存储:包含 ES 和 Hbase,可以根据需要共用或单独部署 ES 和 Hbase。

现有问题和未来规划

目前,有赞日志系统作为集成在天网里的功能模块,提供简单易用的搜索方式,包括时间范围查询、字段过滤、NOT/AND/OR、模糊匹配等方式。

并能对查询字段高亮显示,定位日志上下文,基本能满足大部分现有日志检索的场景。

但是日志系统还存在很多不足的地方,主要有:

  • 缺乏部分链路监控:日志从产生到可以检索,经过多级模块,现在采集,日志缓冲层还未串联,无法对丢失情况进行精准监控,并及时推送告警。
  • 现在一个日志模型对应一个 Kafka Topic,Topic 默认分配三个 Partition。

由于日志模型写入日志量上存在差异,导致有的 Topic 负载很高,有的 Topic 造成一定的资源浪费,且不便于资源动态伸缩。

Topic 数量过多,导致 Partition 数量过多,对 Kafka 也造成了一定资源浪费,也会增加延迟和 Broker 宕机恢复时间。

  • 目前 Elasticsearch 中文分词我们采用 ikmaxword,分词目标是中文,会将文本做最细粒度的拆分,但是日志大部分都是英文,分词效果并不是很好。

上述的不足之处也是我们以后努力改进的地方,除此之外,对于日志更深层次的价值挖掘也是我们探索的方向,从而为业务的正常运行保驾护航。

运维利器:WEB日志分析场景介绍

作者简介

朱林 资深开发人员,《Elasticsearch技术解析与实战》作者。有接近20年的开发经验,15年安全产品开发经验,对安全技术、数据分析有较深的研究。现任安全派技术总监,研究业务安全。

为什么要对 Web日志进行分析

随着 Web 技术不断发展,Web 被应用得越来越广泛,现在很多企业对外就一个网站来提供服务,所以网站的业务行为,安全性显得非常重要。正如安全行业的一句话:“世界上只有两种人,一种是知道自己被黑了的,另外一种是被黑了还不知道的”。

对网站的业务行为分析,网站的安全性分析一个很重要的途径就是通过日志。通过WEB日志分析最直接明显的几个目的:

  • 一为网站安全自检查,了解服务器上正在发生的安全事件;

  • 二为应急事件中的分析取证;

  • 三是可根据日志分析一些常用的业务行为。

如何进行日志分析?

在进行日志分析之前,我们先来了解一下 Web服务器中产生的日志是什么样子。我们来看一条 Apache 的访问日志为例:

114.221.137.87 - - [10/Sep/2019:14:52:28 +0800] "GET /login HTTP/1.1" 200 1068 https://secilog.secisland.com/ Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.40

通过以上信息,我们可以得知服务器会记录来自客户端的每一个请求,其中有大量来自正常用户的请求,当然也包括来自恶意攻击者的请求,那么我们如何区分正常请求和恶意攻击请求呢?

站在攻击者的角度,攻击者对网站进行渗透时,其中包含大量的扫描请求执行恶意操作的请求,而这两者在日志中都有各自的特征,如扫描请求会访问大量不存在的地址,在日志中体现则为大量的响应状态码为404,而不同的恶意请求都有各自相应的特征。

如当有人对服务器进行SQL注入漏洞探测时会有类似:/login?attack=test’;select/* */1/**/from/**/1等内容。通过关键字分析可以分析哪些 IP 在进行攻击,可以进一步的进行处置,比如封ip等。

日志分析场景介绍

一般可以按照两种思路展开,逐步深入,还原整个攻击过程。

  • 第一种:确定入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。

  • 第二种:攻击者在入侵网站后,通常会留下后门权限,以方便再次访问,我们可以找到该文件,并以此为线索来展开分析。

曾经有人问过运维的人员的大神,该如何分析日志?大神回答了三个字:“用命令”。

因为站在脚本操作经验丰富的人角度来看,的确用命令足矣,可是对于一般的人员来说用linux的shell命令还是稍显复杂。还是需要借助一些工具来提高效率。这里用了secisland 新推出的免费工具 secsoso 来作为示例:

spl 完整语法:secsoso ‘file=("文件名"," ") 过滤|统计…’简化语法:secsoso ‘文件名 过滤|统计…’

业务行为统计

列出文件中访问次数最多的10个IP

secsoso 'file=("/export/home/20190613/access.log"," ")|stats count($1) by $1|sort 10 -count_$1'

说明:其中/export/home/20190613/access.log为文件路径,“ ”为字段分割符。文件名可以是绝对路径(/export/home/20190613/access.log) 也可以是相对路径(access.log)。默认列名为$1,$2…, count($1)后的默认名称为count_$1。

结果如下:

 $1 count_$1
101.226.68.137 972
163.177.71.12 972
183.195.232.138 971
111.192.165.229 377
114.252.89.91 374
66.249.66.84 246
222.70.152.149 226
220.181.89.174 172
111.194.118.58 160
60.247.77.253 146

你也可以给字段重命名以友好方式显示,这个是简化语法:结果同上。

secsoso ‘access.log|rename $1 as ip |stats count(ip) by ip|sort 10 -count_ip’

查看文件中有多少个不同的IP访问

secsoso 'access.log|rename $1 as ip |stats dc(ip) '

结果如下:

dc_ip
1050

查看某一个页面被访问的次数

比如 /nodejs-underscore/?cf_action=sync_comments为访问页面

secsoso 'access.log "/nodejs-underscore/?cf_action=sync_comments"|eventcount'

红色字是过滤的含义,结果如下:

event_count
14

查看每一个IP访问了多少个页面

secsoso 'access.log $7="*.html*" |stats $1 as ip,count($1) as count by $1'

stats $1 as ip,count($1) as count by $1 和 stats count($1) by $1 结果一样,只是前者可以从新命名,命名也可以放在后面做:

stats count($1) by $1|rename $1 as ip,结果如下:

 ip count
10.70.101.89 3
10.70.101.90 3
10.70.141.32 3
10.70.142.18 5
10.70.146.115 2
10.70.146.120 5
10.70.147.28 2
10.70.149.233 2

查看每一个IP访问了多少个页面按从大到小排序

secsoso 'access.log $7="*.html*" |stats $1 as ip,count($1) as count by $1|sort -count'

结果如下:

 ip count
10.74.52.51 21
10.80.189.69 12
10.71.37.20 9
10.77.6.9 9
10.71.48.20 9
10.80.6.121 8
10.77.7.244 8

查看某一个IP访问了哪些页面

secsoso 'access.log "10.74.52.51" $7="*.html*" |fields $1,$7'

$7="*.html*"也支持正则表达式需要用//包起来,比如”access.log” “10.74.52.51” $7=”/.html./“ |fields 7,这个是查询,选择第一列和第7列。

结果如下:

 $1 $7
10.74.52.51 /zmccwps/welcome/qiyewenh.html
10.74.52.51 /zmccwps/welcome/gzsl.html
10.74.52.51 /zmccwps/welcome/gsry.html
10.74.52.51 /zmccwps/welcome/cylj.html
10.74.52.51 /zmccwps/welcome/yewu.html
10.74.52.51 /zmccwps/welcome/gzsl.html
10.74.52.51 /zmccwps/welcome/gsry.html
10.74.52.51 /zmccwps/welcome/yewu.html
10.74.52.51 /zmccwps/welcome/qiyewenh.html
10.74.52.51 /zmccwps/welcome/gzsl.html

统计每个小时的访问次数

secsoso 'access.log|eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats count(date) by tspan(date,"1h")'

结果如下:

date count_date
2013-09-18 06:00:00 123
2013-09-18 07:00:00 1075
2013-09-18 08:00:00 2167
2013-09-18 09:00:00 1424
2013-09-18 10:00:00 621
2013-09-18 11:00:00 607
2013-09-18 12:00:00 652
2013-09-18 13:00:00 570

根据浏览器指纹定位记录

secsoso 'access.log "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko Minefield/3.0" $7!="*.js*" $7!="*.css*"|fields $1,$4,$7'

红色是排除JS和CSS,结果如下:

 $1 $4 $7
123.125.71.103 [18/Sep/2013:07:13:23 /nodejs-bootstrap-select/
123.125.71.81 [19/Sep/2013:01:26:14 /r-package-faster/

统计爬虫

secsoso 'access.log "googlebot|Baiduspider|Applebot|bingbot|YoudaoBot|Sosospider|MSNBot"|stats dc($1) as count'

结果如下:

count
63

统计每个网段的访问次数

secsoso 'access.log| stats rex($1,"[0-3]+\.[0-9]+\.[0-9]+") as ipper,count(1) as count by ipper |sort -count'

结果如下:

 ipper count
101.226.68 972
3.177.71 972
3.195.232 971
111.192.165 377
2.89.91 374
222.70.152 226
1.135.216 185

统计状态码次数

secsoso 'access.log|stats $9 as stat ,count($9) as count by $9'

结果如下:

stat count
"-" 848
173 1
200 12340
301 94
302 152
304 949
400 13
403 3
404 201
408 1
499 8
500 1
502 8

统计每个 URL 的访问次数

secsoso 'access.log|eval url=$7.substring(0,POSITION("?",$7))|stats count(url) by url'

结果如下:

文件流量统计

secsoso ‘access.log|fields $10|stats sum(casewhen($10=“\”-\””,0,$10)) as fluxcount’

红色是函数嵌套,casewhen表示如果第10列等于”-“为零,否则是它自己,然后用sum累加,结果如下:

flowcount
218704890

统计单位时间内访问包含某个URI的IP排名

secsoso 'access.log $7="*/wp-content/themes*"|eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats count(date) as count by tspan(date,"1h"),$1|rename tspan_date as time,$1 as ip|sort time,-count'access.log 4.to_date(“[dd/MMM/yyyy:HH:mm:ss”)|stats count(date) as count by tspan(date,”1h”),< src=" https:="" chart.googleapis.com="" chart?cht="tx&chl=1%7Crename%20tspan_date%20as%20time%2C"" class="js_catchremoteimageerror">1 as ip|sort time,-count
access.log 4.to_date(“[dd/MMM/yyyy:HH:mm:ss”)|stats count(date) as count by tspan(date,”1h”),<img src=" https:="" chart.googleapis.com="" chart?cht="tx&chl=1%7Crename%20tspan_date%20as%20time%2C"" class="js_catchremoteimageerror">1 as ip|sort time,-count

其中/wp-content/themes 为url关键字

结果如下:

 time ip count
2013-09-18 06:00:00 124.42.13.230 13
2013-09-18 06:00:00 71.96.108.116 13
2013-09-18 07:00:00 222.247.54.20 26
2013-09-18 07:00:00 111.193.224.9 13
2013-09-18 07:00:00 113.106.104.210 13
2013-09-18 07:00:00 116.226.35.135 13
2013-09-18 07:00:00 116.24.8.156 13
2013-09-18 07:00:00 118.194.195.205 13
2013-09-18 07:00:00 121.8.153.6 13

网站登录趋势

对后台网站系统来说,一般会有登录页面,通过登录页面的状态码,可以判断是登录成功还是登录失败,比如/login,如果是post请求返回200,一般是登录失败,post请求返回302,一般表示登录成功,可以通过这个做一些业务的行为分析。比如分钟登录趋势:

114.221.137.86 - - [11/Sep/2019:13:44:59 +0800] "POST /login HTTP/1.1" 302 - https://secilog.secisland.com/login Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.40

secsoso 'access.log $6="*POST" $7="*/login" $9="302"| eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats count($1) as count by tspan(date,"1m")'

结果如下:

 tspan_date count
2019-09-11 09:22:00 1
2019-09-11 09:40:00 1
2019-09-11 13:44:00 1

安全统计

统计具有cc攻击的用户IP(单位时间内访问次数超过阈值的用户,不包括css 、js、png):

secsoso 'access.log $7!="/.*\.js.*|.*\.css.*|.*\.png.*/" |eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats $1 as ip,count(date) as count by tspan(date,"1h"),$1|search count>50'

其中 tspan (date,”1h”) 中的 “1h” 支持如下时间单位:

秒:s,分钟:m,小时:h,天:d,星期:w,月:mon,年:year

count>50 表示访问次数大于50。

$7!="/.*\.js.*|.*\.css.*|.*\.png.*/" 表示不包含css,js,png

结果如下:

 tspan_date ip count
2013-09-18 08:00:00 114.252.89.91 65
2013-09-18 08:00:00 60.247.77.253 60
2013-09-18 11:00:00 178.24.29.69 79
2013-09-18 15:00:00 114.252.89.91 53
2013-09-18 17:00:00 208.43.225.84 62
2013-09-19 03:00:00 222.70.152.149 91
2013-09-19 04:00:00 59.60.115.180 72
2013-09-19 05:00:00 111.192.165.229 142

统计具有cc攻击的用户IP(单位时间内访问次数超过阈值的用户,包括css 、js、png)

secsoso 'access.log|eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats $1 as ip,count(date) as count by tspan(date,"1h"),$1|search count>100'

结果如下:

 tspan_date ip count
2013-09-18 08:00:00 114.252.89.91 79
2013-09-18 08:00:00 116.24.236.137 68
2013-09-18 08:00:00 202.84.17.41 84
2013-09-18 08:00:00 203.192.6.59 83
2013-09-18 08:00:00 221.122.104.115 72
2013-09-18 08:00:00 58.248.178.212 68
2013-09-18 08:00:00 58.56.155.203 83
2013-09-18 08:00:00 60.10.8.5 56
2013-09-18 08:00:00 60.247.77.253 146
2013-09-18 09:00:00 183.60.177.228 121

统计发起 SQL 注入的 IP及URI

secsoso 'access.log "%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec| information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"|fields $1,$7'

结果如下:

统计发起SQL注入的IP并按IP攻击次数排名

secsoso 'access.log "%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec| information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"|fields $1,$7|stats $1 as ip,count(1) as count by $1|sort -count'

结果如下:

 ip count
66.249.66.84 4
111.192.165.229 2

敏感文件扫描

secsoso 'access.log ".zip|.rar|.mdb|.inc|.sql|.config|.bak|/login.inc.php|.svn|/MySQL/|config.inc.php|.bak|wwwroot|网站备份|/gf_admin/|/DataBackup/|/Web.config|/web.config|/1.txt|/test.txt" |fields $1,$7 '

结果如下:

漏洞利用

secsoso 'access.log "struts|jmx-console|ajax_membergroup.php|iis.txt|phpMyAdmin|getWriter|dirContext|phpmyadmin|acunetix.txt|/e/|/SouthidcEditor/|/DatePicker/" |fields $1,$7'

结果如下:

文件包含攻击

secsoso 'access.log "/passwd|%00|/win.ini|/my.ini|/MetaBase.xml|/ServUDaemon.ini|cmd.exe" |fields $1,$7'

结果如下:

getshell的攻击

secsoso 'access.log " eval|%eval|%execute|%3binsert|%20makewebtaski|/1.asp|/1.jsp|/1.php|/1.aspx|/xiaoma.jsp|/tom.jsp|/py.jsp|/k8cmd.jsp|/k8cmd|/ver007.jsp|/ver008.jsp|/ver007|/ver008|\.aar|%if" |fields $1,$7'

iis可以换成:

%20exec|%27exec|%3bexec|%27%3Bexec|%eval|%20eval|%execute|%3Binsert|%20makewebtaski|%20disk%20|%3Balter|%3Bdeclare|dbo|hack523|sysname|/1.asp|/1.jsp|/1.php|/1.aspx|/xiaoma.asp|/yijuhua.asp|/yjh.asp|/hack.asp|/k8cmd.asp|/k8cmd|/ver007.asp|/ver008.asp|/ver007|/ver008|\.asa|\.cer|\.ashx|asp;|asa;|cer;|aspx;|/1.asp/|/x.asp/|/a.asp/|/2.asp/

结果如下:

xss跨站脚本攻击

secsoso 'access.log " (S)%3C(S+)%3E|(S)%3C(S+)%2F%3E|(S+)<(S+)>|(S+)<(S+)/>|onerror|onmouse|expression|alert|document.|prompt\" |fields $1,$7'

结果如下:

网站登录密码猜测

比如5分钟大于10次同一个IP登录密码错误,认为是密码猜测,然后把所有IP找到。

114.221.137.86 - - [11/Sep/2019:10:25:39 +0800] "POST /login HTTP/1.1" 200 1111 https://secilog.secisland.com/login Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.40
secsoso 'access.log $6="*POST" $7="*/login" $9="200"| eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats count($1) as count by tspan(date,"5m"),$1| search count>10|stats sum(count) by $1'

结果如下:

$1 sum_count
114.221.137.86 15

通过上面示例得知,日志中含有丰富的内容,通过这些内容可以分析出很多有价值的信息。但这些分析的前提就是要先保存这些日志,并记录请求参数,但默认的WEB中间件日志只记录GET请求的参数,没有记录POST请求的参数,所以需要通过中间件配置才可以拿到POST的请求参数来进行更多的分析。

拿到参数后还可以继续深入分析更具体的业务行为,操作记录等,比如/asset(示例)表示访问资产模块,/asset/add(示例)表示资产添加模块,/asset?id=1表示查询id为1的资产记录。

文本通过分析WEB中间件日志的示例起到抛砖引玉的目的,来说明日志分析的重要性和思路。希望能对大家的日志分析起到参考和帮助。

备注:内容有部分数据来源于网络。

如何分析蜘蛛日志?

什么是蜘蛛日志?

所谓的蜘蛛日志就是当搜索引擎向服务器发送请求时产生的访问记录文件。

每个网站都会有日志文件,但是很多时候,日志文件只有在网站出现问题的时候才会被查阅。在seo方面,日志文件是更容易被忽略的一块,但是日志文件对于seo来说事非常重要的,我们可以在日志文件中获取各种信息并发现网站存在的一些问题。

日志可以去哪里拿到?

日志文件一般是在wwwlog或者log这样的文件夹里面可以下载。

分析主要用什么工具?

Python和loghao

在日志中可以查看哪些数据?

1.客户端的IP地址

2.访问时间

3.查看http状态码

4.请求方式等等

查看蜘蛛日志常用的一些命令

1.cat access.log | grep Baiduspider 命令来获取百度蜘蛛的详细爬取记录

2.cat access.log | grep Baiduspider | wc -l 命令来统计百度蜘蛛的爬取次数

3.cat access.log | grep Baiduspider | grep “GET url” 来统计百度蜘蛛爬取某个页面的记录,命令中的url为页面的相对地址。

grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为-,则grep指令会从标准输入设备读取数据。在分析日志的时候使用该工具,可以精确找出我们想看的日志内容,减少筛选时间,提升自身的工作效率。可以根据我们实际的场景,输入关键词来过滤日志。

蜘蛛日志有何作用?

1.通过对蜘蛛日志的分析,我们可以知道蜘蛛是否对站点进行了抓取,以及抓取是否成功,判断抓取资源是否被浪费,也可以判断我们的网站是否符合搜索引擎的抓取规范,找到抓取失败的原因。

2.如果某个页面被蜘蛛频繁地抓取,我们可以对这个页面做一些调整(比如布局),可以在页面中添加一些链接。但有些频繁地抓取是蜘蛛恶意的抓取,如果蜘蛛的访问频率过高,很可能会影响正常服务的运行,通过对蜘蛛日志的分析,可以发现恶意蜘蛛的足迹,然后可以限制蜘蛛的访问频率来保证服务器的稳定。

3.通过分析日志文件,我们可以发现蜘蛛的访问路径,有次我们可以优化我们的站点结构。

总结:利用日志我们可以挖掘到很多的信息,我们可以通过日志中的状态码来分析网站是否存在问题,如是否存在死链,页面失效等错误。我们通过日志可以发现用户对整站页面的访问次数、访问时间以及访问路径,通过这些可以分析用户的行为习惯。通过日志我们甚至可以防范恶意攻击,因此,日志分析在做网站的过程中是必不可少的。