Apache、Nginx、IIS日志记录分析&详解

Apache、Nginx、IIS日志记录分析

一、Apache

1.1.Windows Server 2008 R2平台

1.1.1.日志位置及配置

(1)启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access.log和错误日志error.log。

(2)我们可以在Apache配置文件httpd.conf中,配置Apache访问日志格式。

#下面两句定义不同模式下的日志记录格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
#下面一句定义日志文件存储位置以及采用的记录格式
CustomLog "logs/access.log" common

解释:

apache中日志记录格式主要有两种,普通型(common)和复合型(combined),安装时默认使用普通型(common)类型日志记录访问信息。

1.1.2.分析

(1)以下是一段标准的采用common记录格式下的日志记录

192.168.2.184 - - [20/Apr/2020:17:17:18 +0800] "GET /pikachu-master HTTP/1.1" 301 247

分析如下:

字段值 字段名称 含义
192.168.2.184 客户端IP 访问服务端的IP
-
- 登录名 客户端访问服务验证时提供的名字(匿名的情况下为-)
[20/Apr/2020:17:17:18 +0800] 时间 客户段请求的时间(“+0800”表示服务器所处时区位于UTC之后的8小时)
"GET /pikachu-master HTTP/1.1" 方法+资源+协议 客户端请求方式、请求的资源文件、客户端采用的协议
301 状态代码 301代表所请求的页面已经转移至新的 URL
247 字节数 服务端发送给客户端的字节长度

(2)以下是一段标准的采用combined记录格式下的日志记录

192.168.2.184 - - [20/Apr/2020:17:36:18 +0800] "GET /pikachu-master/ HTTP/1.1" 200 35392 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0"

分析如下:

字段值 字段名称 含义
... ... ...
"-" 引用站点 用户访问的前一个站点。此站点提供到当前站点的链接。
"Mozilla/5.0
(Windows NT 10.0; Win64; x64; rv:75.0)
Gecko/20100101 Firefox/75.0"
客户端浏览器提供的浏览器识别信息 浏览器内核版本、操作系统版本、浏览器版本

1.2.CentOS 7 平台

1.2.1.日志位置

cat /var/log/httpd/access_log 查看Apache日志

1.2.2.分析

以下是一段记录

192.168.2.184 - - [11/Apr/2020:21:51:47 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0"

通过观察和Windows下的一摸一样,故分析可以参照1.1.2

二、Nginx

2.1.Windows Server 2008 R2平台

2.1.1.日志位置

我们可以在配置文件中查看或者更改日志的存放位置

2.1.2.分析

以下是一段日志。

192.168.33.254 - - [20/Feb/2020:22:57:27 +0800] "POST /pikachu-master/vul/burteforce/bf_form.php HTTP/1.1" 200 4899 "http://192.168.33.254/pikachu-master/vul/burteforce/bf_form.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"

详情请看2.2(与Linux下的一样)

2.2.CentOS 7 平台

2.2.1.日志位置及配置

#日志位置
/var/log/nginx/access.log

#nginx配置文件位置
vim /etc/nginx/nginx.conf(可能有所不一样)

#配置文件中关于日志的字段(日志格式+日志存放位置)
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

2.2.2.分析

以下是一段Nginx日志:

192.168.2.184 - - [20/Apr/2020:17:59:09 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0" "-"

分析:

字段值 字段名称 含义
192.168.2.184 $remote_addr 客户端(用户)的IP地址
- - - $remote_user 客户端的用户名,匿名访问为-
[20/Apr/2020:17:59:09 +0800] [$time_local] 访问时间
"GET /index.html HTTP/1.1" "$request" 请求方式以及请求的资源URI地址
200 $status 状态码(200 OK)
612 $body_bytes_sent 请求的页面大小
"-" "$http_referer" 来源页面,即从哪个页面转到本页
"Mozilla/5.0
(Windows NT 10.0; Win64; x64; rv:75.0)
Gecko/20100101 Firefox/75.0"
"$http_user_agent" 浏览器信息,操作系统信息
"-" "$http_x_forwarded_for" 获取到真实IP,获取不到则显示为 -

3.2.3.自定义日志记录字段

如果我们想要获取的信息并没有记录下来,例如:服务器的处理时间等等。那么我们可以在配置文件中添加以下内容,从而获取到我们想要的信息。

$request_time
#记录请求处理时间(以秒为单位,携带毫秒的解决方案),从读取客户端第一个字节开始算起,到发送最后一个字节给客户端的时间间隔

$upstream_response_time
#记录nginx从后端服务器(upstream server)获取响应的时间(以秒为单位,携带毫秒的解决方案),多个请求的时间以逗号分隔

$request_length
#记录请求长度(包括请求行,请求头,请求体)

$bytes_sent
#发送给客户端的字节数,不同于$body_bytes_sent(发送给客户端的响应体字节数)

三、IIS

3.1.IIS 7日志记录所在位置(Windows Server 2008 R2)

除此之外,我们可以通过Internet信息服务(IIS)管理器设置日志中要记录的字段:

3.2.分析

一段完整的日志记录如下:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2020-04-20 07:28:44
#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken

2020-04-20 07:28:44 W3SVC4 FENGWENBO 192.168.2.254 GET /picnews.asp - 8004 - 192.168.2.184 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:75.0)+Gecko/20100101+Firefox/75.0 zh_choose=n;+ASPSESSIONIDAQSBBTTA=FHLLDFKCKALEMJAPACIFLDLL http://192.168.2.254:8004/ 192.168.2.254:8004 200 0 0 731 500 327

各字段含义如下:

字段值 字段名称 含义
2020-04-20 日期(date) 活动发生的日期
07:28:44(+8) 时间(time) 活动发生的时间
W3SVC4 服务名(s-sitename) 客户端所访问的该站点的 Internet 服务和实例的号码
FENGWENBO 服务器名(s-computername) 生成日志项的服务器名称。
192.168.2.254 服务器IP(s-ip) 生成日志项的服务器IP地址
GET 方法(cs-method) 客户端执行的操作
/picnews.asp 请求访问的页面(cs-uri-stem) 客户端访问的文件
访问的查询字符串(cs-uri-query) 客户端正在尝试执行的查询(此时没有,显示为-)
8004 服务器端口(s-port) 客户端连接服务端的端口
- 客户端用户名(cs-username) 匿名用户登陆,显示为-
192.168.2.184 客户端IP(c-ip) 真实的访问服务器的客户端IP地址
HTTP/1.1 协议版本(cs-version) 客户端使用的协议
Mozilla/5.0
+(Windows+NT+10.0;
+Win64;+x64;+rv:75.0)
+Gecko/20100101
+Firefox/75.0
用户代理(cs(User-Agent)) 在客户端使用的浏览器
zh_choose=n;
+ASPSESSION
IDAQSBBTTA
=FHLLDFKCK
ALEMJAPACIFLDLL
cookie(cs(Cookie)) 发送或接收的 Cookie 的内容
http://192.168.2.254:8004/ 引用站点(cs(Referer)) 用户访问的前一个站点。此站点提供到当前站点的链接。
192.168.2.254:8004 主机(cs-host) 显示主机头的内容
200 协议返回状态(sc-status) 以HTTP或FTP表示的操作的状态(200 OK)
0 HTTP子协议的状态(sc-substatus)
0 Win32® 状态(sc-win32-status) 用 Windows® 使用的术语表示的操作的状态
731 服务器发送的字节数(sc-bytes) 服务器发送的字节数。
500 服务器接受的字节数(cs-bytes) 服务器接收的字节数。
327 所用时间(time-taken) 操作花费的时间长短(亳秒)
posted @ 2020-04-20 18:53  WindStream  阅读(724)  评论(1编辑  收藏  举报