应急响应——web日志分析

HTTP协议

  • HTTP(超文本传输协议)是一个请求-响应协议,通常运行在TCP之上,默认端口为80。1990年HTTP成为了WWW(万维网)的支撑协议。HTTP是基于C/S架构进行通信的,其服务端的实现程序有httpd、nginx等,客户端实现程序主要是web浏览器,如Firefox、InternetExplorer、Google
    Chrome、Safari以及Opera。Web服务是基于TCP的,为了能够随时响应客户端的请求,Web服务器会监听80/TCP端口。

HTTP报文格式解析

  • web浏览器向Web服务器发送请求,然后Web服务器处理请求并返回适当的应答。
  • HTTP请求包含三部分,分别是请求行(请求方法、请求地址、HTTP协议版本)、请求头和请求正文(可选内容,最常出现在POST请求方法中)
  • HTTP响应消息包含三部分,分别是响应行(HTTP协议版本、状态码)、响应头和响应正文(HTML代码,通过浏览器解析成web页面)

HTTP请求方法

  • HTTP/1.1定义了八种方法(动作)来表明Requ-URL指定资源的不同操作方式,包括OPTIONS、GET、POST、HEAD、DELETE、TRACE、PUT、CONNECT。其余的HTTP请求方法:PATCH、MOVE、COPY、LINK、UNLINK、WRAPPED以及Extension-method。
    HTTP请求方法参考链接:https://blog.csdn.net/su__xiaoyan/article/details/112426852

HTTP状态码

  • HTTP状态码是表示网页服务器超文本传输协议响应状态的3位数字代码。状态码的第一位代表了响应的5种状态之一。
    参考链接:https://blog.csdn.net/su__xiaoyan/article/details/112427411

web日志格式解析

  • web日志会记录用户对web页面的访问操作行为,通过日志分析可以追踪溯源。需要注意由于POST提交的数据过于庞大,中间件默认不记录POST的详细数据,如果有需要,可以通过额外的配置开启该功能。

IIS 中间件日志

  • IIS是微软提供的,运行在windows系统下的中间件,主要用来解析.ASP、.ASA、.CER这三种文件格式的文件,也可结合环境资源包解析PHP等。IIS是一种web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等。常见的IIS版本包括IIS 6.0/7.0/7.5/8.0/8.5等。
  • 不同的IIS日志的默认目录不同,可以用户自定义。在日志目录下如果有多个IIS站点,就会有多个W3SVC文件夹。IIS日志文件的格式为“ex+年份的末两位数字+月份+日期”,文件后缀是.log,例如2019年9月30日的日志生成文件是“ex190930”,默认为按天数生成。
  • IIS中间件日志文件存储目录
    IIS 6.0 日志存放目录:%systemroot%\system32\LogFiles
    IIS 7.x/8.x 日志存放目录:%systemdrive%\inetpub\logs\LogFiles
    %systemroot%和%systemdrive%的查看方法可以使用DOS命令echo进行输出
  • IIS每条日志的格式由data、time、c-ip、cs-method、cs-uri-stem、sport、s-ip、cs(user-agent)、sc-status、sc-bytes、cs-bytes组成。
    data:发出请求的日期
    time:发出请求的时间
    c-ip:客户端IP地址
    cs-method:请求中使用的HTTP请求方法
    cs-uri-stem:URI资源,记录作为操作目标的统一资源标识符,即访问的页面文件
    sport:为服务配置的服务器端口号
    s-ip:服务器的IP地址
    cs:用户代理,包括客户端浏览器、操作系统等情况
    sc-status:协议状态,记录HTTP状态码
    sc-bytes:服务器发送的字节数据
    cs-bytes:服务器接收的字节数

Apache 中间件日志

  • 安装Apache后,在Apache的配置文件“httpd.conf”中存在两个可以调配的日志文件,这两个日志文件分别是访问日志“access_log”(Linux操作系统中是access_log,windows中是access.log)和错误日志“error_log”(Linux操作系统中是error_log,windows中是error.log)。如果使用了SSL服务,则可能存在“ssl_access_log”、“ssl_error_log”和“ssl_request_log”这三种日志。
  • 日志文件的路径一般在Apache安装目录的logs子目录中,日志文件路径可根据实际安装情况在Apache配置文件中进行查找。在应急响应过程中,重点关注的是访问日志——“access_log”,其中记录了所有对Web服务器的访问活动。
  • 日志字段所代表的的内容如下:
    远程主机IP地址:表示访问网站的是谁
    E-mail:用户邮箱,为避免用户的邮箱被垃圾邮件所侵扰,使用“-”取代
    登录名:用于记录浏览者进行身份验证时提供的名字
    请求时间:用方括号包围,采用“公用日志格式”或者“标准英文格式”。时间信息后面的内容标识服务器所处时区的相关信息,+x00表示服务器所处时区位于UTC之后的x个小时
    方法 资源 协议:表示服务器收到的请求的具体信息,其中资源代表请求的链接地址。
    状态代码:请求是否成功,或者遇到了什么样的错误
    发送的字节数:发送给客户端的总字节数,可说明传输是否被打断。

Tomcat 中间件日志

  • Tomcat对应日志的配置文件时Tomcat目录下面的“/conf/logging.properties”。Tomcat默认有四类日志,分别是catalina、localhost、mananger、host-manager。Tomcat的日志类别也可以进行自定义。
  • 访问日志仍是需要关注的重点,默认Tomcat不记录访问日志,如果要开启,需要编辑“${catalina}/conf/server.xml”文件(${catalina}是Tomcat的安装目录),需要将配置文件指定内容两端的<!-- -->去掉。
    <!-- <Value className=“org.apache.catalina.valves.AccessLogValue” directory=“logs” prefix=“localhost_access_log.” suffix=".txt" pattern=“common” resolveHosts=“false” /> -->
    可以设置日志保存的目录(directory)、日志文件名的前缀(prefix)、后缀(suffix)和日志的具体格式。 其中resolveHost处于性能的考虑,一般设置成false。但是访问日志的格式(pattern)却有很多的选择项。
  • 基本的日志格式项:
    %a - 远程主机的IP
    %A - 本机IP
    %b - 发送字节数,不包含HTTP头,0字节则显示“-”
    %B - 发送字节数,不包含HTTP头
    %h - 远程主机名
    %H - 请求的具体协议,HTTP 1.0/HTTP 1.1
    %l - 远程用户名,始终为“-”
    %m - 请求方式
    %p - 本机端口
    %q - 查询串
    %r - HTTP请求中的第一行
    %s - HTTP状态码
    %S - 用户会话ID
    %t - 访问日期和时间
    %u - 已经验证的远程用户
    %U - 请求的URL路劲
    %v - 本地服务器名
    %D - 处理请求所耗费的毫秒数
    %T - 处理请求所耗费的秒数
  • 使用以上的任意组合来定制访问日志格式,也可以用下面两个别名common和combined
    common:%h %l %u %t %r %s %b
    combined:%h %l %u %t %r %s %b “%{referer}i” “%{User-Agent}i”
  • 另外还可以将Cookie以及其他HTTP请求头部字段值、session、servletRequest中的数据写到Tomcat的访问日志中,其引用语法如下:
    %{xxx}i:记录请求消息中的HTTP请求头部字段
    %{xxx}c:记录特定的cookie
    %{xxx}r:记录servletRequest中的属性
    %{xxx}s:记录HTTPSession中的属性

weblogic 中间件日志

  • 在默认配置的情况下,Weblogic会有三种日志,分别是access log、server log和domain log,Weblogic 8.x和Weblogic 9及以后版本目录结构的区别如下。
  • WebLogic 8.x 版本:
    access log在“$MV_HOME\user_projects\domains\<domain_name>\<server_name>\access.log”;
    server log在“$MV_HOME\user_projects\domains\<domain_name>\<server_name>\<server_name>.log”;
    domain log在“$MV_HOME\user_projects\domains\<domain_name>\<domain_name>.log”
  • Weblogic 9及以后版本:
    access log在“$MV_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log”;
    server log在“$MV_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log”;
    domain log在“$MV_HOME\user_projects\domains\<domain_name>\servers\<adminserver_name>\logs\<domain_name>.log”;
    其中$MV_HOME是Weblogic的安装目录;<domain_name>是域的实际名称,是在创建域时指定的;<server_name>是server的实际名称,是在创建server是指定的;<adminserver_name>是管理服务器的实际名称,是在创建Admin Server时指定的。
  • Weblogic访问日志格式和Apache的访问日志格式基本相同

nginx 中间件日志

  • Nginx中间件的日志分为两种:访问日志和错误日志,其中访问日志记录在“access.log”文件中,错误日志记录在“error.log”文件中。默认情况下,“access.log”日志会放在Nginx安装路径的logs目录中,如果通过yum源安装Nginx,那么“access.log”的默认路径为“/var/log/nginx/access.log”。
  • Nginx的访问日志格式和Weblogic以及Apache日志格式基本相同,但是Nginx访问日志格式后面多了一个HTTP请求头部字段值。

web日志分析方法

windows操作系统——利用Notepad++进行分析

  • 以Apache和PHP网站为例,在拿到一个日志文件时,由于日志文件内容非常多需要先对数据进行清洗然后进行查看分析。
  1. 清洗数据,提取出有用的数据
    利用标记功能(标题栏-搜索-标记-输入目标内容-全部标记)将含有指定内容的行进行标记,然后利用书签复制功能(标题栏-搜索-书签-复制书签行)将所有标记行进行复制,并且粘贴到新的文档中。反复几次即可将冗余数据进行筛选得到有价值的数据。
  2. 日志分析
    在日志分析过程中要需要注意每一条日志的访问链接,即某一用户都访问了网站中的哪一个页面以及可能做了哪些操作。例如短时间内对登录页面的大量访问,可能是攻击者在对登录页面进行暴力破解;通过用户访问网站时的URL也能辨别出用户进行过SQL注入漏洞的测试以及利用文件上传漏洞上传恶意文件。

Linux操作系统——利用shell命令进行分析

  • 在进行日志分析时也可以通过Linux下的shell命令组合进行分析,可以实现Notepad++所有功能的前提下对内容进行量化统计。一般结合grep、awk等命令实现。如果想要在Windows操作系统中使用shell命令,必须先安装Cygwin。
  • 提取状态码为200的日志
    awk ‘$9~ /^200$/ {print $0}’ access.log|sort -nr > new_txt
    awk中以空格作为分段,其中:
    $9~ /^200$/:在第九段状态码是200的数据,反向查找需要在波浪线后面添加感叹号(“!”)
    print $0:显示整行,如果是print $1就是显示该行中的第一个字段(IP地址)
    access.log:日志文件名
    sort -nr:sort是对文件进行排序,-n是按照数字进行排序,-r是反向排序,为了保持文档原有的状态
    除了使用awk表达式以外,还可以使用管道符(“|”)结合grep关键字进行过滤
    cat access.log | grep 200|sort -nr > new_txt
    如果要查询文本中状态码不是200的数据同样有多种方法:
    awk ‘$9~! /^200$/ {print $0}’ access.log|sort -nr > new_txt
    cat -n acess.log | sed ‘/200/d’
  • 查看某一IP地址访问某个页面的次数
    grep “IP地址” access.log | grep “页面路径” | wc -l
  • 查看有多少IP地址以及每个IP地址访问次数的命令:
    awk ‘{print $1}’ access.log|sort|uniq -c
    uniq表示可检查文本文件中重复出现的行列;-c表示显示该行重复的次数;-d表示仅显示重复的行。如果只想查看有多少个IP地址访问,在上面的命令后面加wc -l即可
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux web服务器应急响应靶场是一个模拟真实环境下的紧急事件响应练习场所。该靶场旨在提供一个具有高度仿真度的网络环境,以帮助安全人员提升对Linux web服务器应急响应能力。 首先,靶场会模拟真实的攻击场景,包括常见的漏洞利用和攻击技术,如SQL注入、跨站脚本攻击、远程命令执行等等。通过对这些攻击进行实践,安全人员能够学习并理解攻击者的手段和思路,从而更好地应对和防范类似攻击。 其次,靶场提供了一系列实际的应急响应演练,可以让安全人员在真实环境中应对各种紧急事件。比如,在被攻击后的服务器恢复和修复、日志分析和溯源等方面进行演练。通过这些实践,安全人员能够锻炼应急响应的技能,提升对应急事件的处理能力。 此外,靶场还提供了一些工具和资源,用于监控和检测攻击行为,以及收集和分析攻击相关的数据。通过这些工具的使用,安全人员可以更好地掌握攻击者的行为特征,及时发现异常情况并采取相应措施。同时,还能够积累更多的经验,为今后的实际工作提供更好的应对手段和方法。 总之,Linux web服务器应急响应靶场是一个非常有益的训练和实践场所,可以帮助安全人员提升Linux web服务器应急响应的能力和技巧。通过参与靶场的训练,可以提高应对紧急事件的速度和准确性,从而更好地保护服务器和网站的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值