目录
- Apache、Nginx、IIS日志记录分析
- 一、Apache
- 1.1.Windows Server 2008 R2平台
- 1.1.1.日志位置及配置
- 1.1.2.分析
- 1.2.CentOS 7 平台
- 1.2.1.日志位置
- 1.2.2.分析
- 二、Nginx
- 2.1.Windows Server 2008 R2平台
- 2.1.1.日志位置
- 2.1.2.分析
- 2.2.CentOS 7 平台
- 2.2.1.日志位置及配置
- 2.2.2.分析
- 3.2.3.自定义日志记录字段
- 三、IIS
- 3.1.IIS 7日志记录所在位置(Windows Server 2008 R2)
- 3.2.分析
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) | 操作花费的时间长短(亳秒) |