网安之关于apache的access.log详解

下面总结了本人在遇到access.log相关问题时总结的东西。

在apache中,如何配置access.log的记录的精细度?

您可以使用Apache的LogFormat指令来配置access.log的记录精细度。
例如,您可以使用以下指令:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /path/to/access_log combined

上面的配置定义了一个名为“combined”的自定义记录格式,并将其用作日志文件的格式。您可以更改指令中的格式字符串以调整记录的精细度。

在什么情况下,access.log会记录?

Apache的access.log文件在每次有用户访问时都会被记录。这可以是用户浏览网站、下载文件、提交表单或进行其他类型的请求。每条记录都会包含该请求的详细信息,包括:

IP地址:请求的客户端IP地址。
时间戳:请求发生的时间。
请求方法:请求使用的HTTP方法(例如GET或POST)。
请求的资源:客户端请求的URL。
状态码:服务器响应的HTTP状态码(例如200或404)。
数据量:服务器响应的数据量。
引用页面:如果存在,该请求的来源页面。
User-Agent:客户端使用的浏览器的信息。

您可以通过调整Apache的配置,来决定记录的信息种类和细节。

如何调整配置?

您可以通过以下步骤来调整Apache的配置:

打开Apache的配置文件:您可以使用文本编辑器打开Apache的配置文件,通常位于/etc/httpd/conf/httpd.conf。

查找LogFormat指令:查找LogFormat指令,该指令定义了您希望在access.log中记录的信息。

调整格式字符串:在LogFormat指令中,您可以调整格式字符串,以指定您希望记录的信息。您可以参考Apache文档,了解可用的格式字符串字符。

保存更改:保存更改并退出文本编辑器。

重新启动Apache:使用以下命令重新启动Apache以使更改生效:

sudo service httpd restart

注意:上面的步骤假设您正在使用Linux系统,并且安装了Apache HTTP服务器。如果使用的是其他操作系统或服务器软件,步骤可能有所不同。

如何调整格式字符串?

格式字符串是定义在Apache配置文件的LogFormat指令中的一个字符串,用于指定access.log文件中记录的信息。下面是一些常见的格式字符串:

记录完整请求信息:

LogFormat "%h %l %u %t \"%r\" %>s %b" common

记录客户端IP地址、请求时间、请求方法、请求的URL、HTTP状态码和数据量:

LogFormat "%h %t \"%r\" %>s %b"

记录客户端IP地址、请求时间、请求方法、请求的URL、HTTP状态码、数据量和请求的用户代理:

LogFormat "%h %t \"%r\" %>s %b \"%{User-Agent}i\""

您可以根据您的需求在格式字符串中添加或删除字符,以指定您希望在access.log文件中记录的信息。例如,您可以将格式字符串更改为:

LogFormat "%h %t \"%r\" %>s %b \"%{Referer}i\""

以记录客户端的请求来源。

请注意,您在格式字符串中选择的字符将影响access.log文件中记录的信息的精细度。因此,请谨慎选择您希望记录的信息。

如果只记录IP地址,日期时间,请求方法,http状态,大小。那该怎么设置

您可以在Apache配置文件中使用以下LogFormat指令:

LogFormat "%h %t \"%r\" %>s %b"

该指令将记录客户端的IP地址(%h)、请求时间(%t)、请求方法(%r)、HTTP状态(%>s)和数据量(%b)。

请注意,在Apache配置文件中,您必须将LogFormat指令放在CustomLog指令之前,以指定使用的日志格式。例如:

LogFormat "%h %t \"%r\" %>s %b" custom_format
CustomLog "logs/access.log" custom_format

完成后,您需要重新启动Apache以使新的配置生效。

为什么该配置文件有多个LogFormat

Apache允许多个LogFormat指令,以支持不同的日志格式。您可以为不同的日志目的定义不同的LogFormat,并在CustomLog指令中选择您希望使用的格式。

例如,您可以定义一个LogFormat指令来记录访问日志的详细信息,并定义另一个LogFormat指令来记录更简单的信息,供分析统计使用。

这样,您可以在不同的场景中使用不同的日志格式,以满足您的不同需求。

使用多种LogFormat,会生成多个日志文件吗?

不会。Apache中的每个CustomLog指令仅使用一个LogFormat格式,并生成一个日志文件。

例如,如果您有两个LogFormat指令,并定义了两个CustomLog指令,分别使用这两个LogFormat,则会生成两个日志文件。每个日志文件仅记录使用对应LogFormat格式的日志记录。

因此,如果您希望使用不同的日志格式生成多个日志文件,则需要为每个日志格式定义一个单独的CustomLog指令。

日志基本格式

127.0.0.1 - - [06/Feb/2023:14:35:09 +0800] "GET /pikachu/vul/fileinclude/fi_remote.php HTTP/1.1" 200 34081
127.0.0.1 - - [06/Feb/2023:14:35:14 +0800] "GET /pikachu/vul/csrf/csrf.php HTTP/1.1" 200 37494
127.0.0.1 - - [06/Feb/2023:14:35:20 +0800] "GET /pikachu/vul/xxe/xxe.php HTTP/1.1" 200 34041
127.0.0.1 - - [06/Feb/2023:14:35:21 +0800] "GET /pikachu/vul/xxe/xxe_1.php HTTP/1.1" 200 33519
127.0.0.1 - - [06/Feb/2023:14:35:31 +0800] "GET /pikachu/vul/dir/dir.php HTTP/1.1" 200 35073
127.0.0.1 - - [06/Feb/2023:14:35:33 +0800] "GET /pikachu/vul/dir/dir_list.php HTTP/1.1" 200 33730
127.0.0.1 - - [06/Feb/2023:14:36:31 +0800] "-" 408 -

这是Apache的access.log文件的一个样例,每行记录了一次HTTP请求的信息。

记录的信息包括:

IP地址:127.0.0.1
日期时间:06/Feb/2023:14:35:09 +0800
请求方法:GET
请求的URL:/pikachu/vul/fileinclude/fi_remote.php
HTTP协议版本:HTTP/1.1
HTTP状态:200
数据大小:34081
注意,格式可能因Apache的配置不同而有所不同,但通常会包含上述信息的类似格式。

为什么最后一行不一样?

最后一行的数据不同,因为它表示的是一次HTTP请求的错误。

请求方法是 “-”,这表示客户端没有发送请求方法。
HTTP状态是408,这是一个HTTP请求超时的状态码。
数据大小是 -,这表示没有发送数据。
由于这是一次错误的HTTP请求,因此它不会生成任何响应,并且无法提供关于该请求的详细信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值