Skip to content

Latest commit

 

History

History
203 lines (162 loc) · 8.1 KB

日志配置文档.md

File metadata and controls

203 lines (162 loc) · 8.1 KB

日志配置文档


概述

1、在部署完ATD之后,您需要进行日志配置操作,以便ATD可以解析您的日志,进而进行威胁分析。
2、日志对接分为三步:
 (1)日志格式配置,即添加要接入日志的log_format或进行日志字段映射设置,以便ATD可以成功解析您的日志;
 (2)日志对接配置,即配置TopicName、Zookeeper地址等,以便ATD知道从哪里可以获取到您推送的日志;
 (3)推日志,在完成日志配置后,您需要将日志推送到kafka相应的TopicName中。【注意】请勿将不同格式的域名日志推到同一个TopicName下,否则ATD将无法完成日志解析且不能进行威胁分析。

步骤一:日志格式配置

目前,ATD支持四种日志类型:
1、纯文本
2、JSON(无嵌套)
3、JSON嵌套文本
4、JSON嵌套JSON

请根据您实际的日志类型,添加相应的日志格式,不同日志类型的配置如下:

1、纯文本

(1)日志样例

124.239.189.15 - [2016-07-16T15:56:04+08:00] 2ab80c0cf.yunlian.io "GET /adf/ad.php?abc=select+*+from+information_schema+where+1&testlogintest=test HTTP/1.1" 0.011 401 173 201 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"

(2)log_format字段

对于纯文本类型的日志,只需要填写一条原始日志及相应的log_format即可,ATD规定的log_format字段名称如下表所示:

字段名 解释 默认值
*remote_addr 客户端IP地址 -
*request_uri 请求的uri -
*http_host 请求地址(域名) www.default.com
http_x_forwarded_for 反向客户端IP地址 -
time_local 通用日志格式下的本地时间 -
status 请求返回的状态码 200
hostname 日志来源 unknowh-host
remote_user 客户端用户名称 -
method http请求方法 GET
body_bytes_sent 发送给客户端的字节数,不包括响应头的大小 0
bytes_sent 发送给客户端的总字节数 -
http_referer 记录从哪个页面链接访问过来的

http://www.default.com/default-referer

http_user_agent 记录客户端浏览器相关信息 chrome
request_length 请求的长度(包括请求行,请求头和请求正文) 0
request_time 请求处理时间,单位为秒,精度毫秒 0
upstream_status upstream返回的状态码信息 -
upstream_addr 后端upstream地址,真正提供服务的主机地址 -
upstream_response_time upstream响应时间 0

(3)log_format格式要求

  • 如果您的日志是文本格式,请务必使用ATD指定的字段名称定义log_format,否则ATD将无法完成日志解析;
  • 字段名以$为前缀,例如:$remote_addr
  • 含有“*”字符的字段必须指定的字段;
  • 如果您的日志中没有http_host,您可以在配置页面上设置http_host的默认值;
  • log_format中的字段必须按顺序与原始日志中的字段一一对应,如果您的日志中包含上述字段之外的字段,可自定义名称,如:field1

(4)配置示例

原始日志:

124.239.189.15 - [2016-07-16T15:56:04+08:00] 2ab80c0cf.yunlian.io "GET /adf/ad.php?abc=select+*+from+information_schema+where+1&testlogintest=test HTTP/1.1" 0.011 401 173 201 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"

log_format:

$remote_addr $remote_user [$time_local] $http_host "$method $request_uri $http" $request_time $status $body_bytes_sent $request_length "$http_referer" "$http_user_agent" "$http_x_forwarded_for"

文本格式日志配置

2、 JSON(无嵌套)

(1)日志样例

{
	"remote_addr":"124.239.189.115",
	"time_local":"2017-06-29T15:25:59+08:00",
	"scheme":"http",
	"http_host":"yunlian.io",
	"method":"GET",
	"request_uri":"/adf/logining/ad.php?abc=test",
	"request_time":"1.187",
	"status":"200",
	"upstream_addr":"192.168.11.207",
	"upstream_status":"200",
	"upstream_response_time":"1.187",
	"request_length":"2054",
	"body_bytes_sent":"1181",
	"http_referer":"http://2ab80c0cf.yunlian.io/123456.html",
	"http_user_agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
	"http_x_forwarded_for":"124.239.189.115",
	"hostname":"node001131"
}

(2)配置示例

如果您的日志如上样例所示,您只需上传一条原始日志,并在界面中设置映射关系即可。

JSON格式

3、JSON嵌套文本

(1)日志样例

{
	"message":"124.239.189.115 [2016-07-16T15:56:04+08:00] 2ab80c0cf.yunlian.io \"GET \/adf\/logining\/ad.php?abc=test HTTP\/1.1\" 0.011 401 173 201 \"-\" \"curl\/7.19.7 (x86_64-redhat-linux-gnu)libcurl\/7.19.7 NSS\/3.15.3 zlib\/1.2.3 libidn\/1.18 libssh2\/1.4.2\" \"124.239.189.16\"",
	"time_local":"2016-07-16T15:56:04+08:00"
}

(2)配置示例

如果您的日志如上样例所示,您需要上传一条原始日志,并选择日志所在的Key,然后按照2.1中log_format的格式要求填写相应的log_format即可。

JSON嵌套文本

4、JSON嵌套JSON

(1)日志样例

{
  "message": {
	   "remote_addr": "192.168.11.86",
	   "time_local": "2017-11-16T19:39:19+08:00",
	   "scheme": "https",
	   "http_host": "yunlian.io",
	   "method": "GET",
	   "request_uri": "\/adf\/logining\/ad.php?abc=test",
	   "uri": "\/adf\/logining\/ad.php",
	   "request_time": "1.763",
	   "status": "200",
	   "upstream_addr": "192.168.11.112",
	   "upstream_status": "200",
	   "upstream_response_time": "1.763",
	   "request_length": "1743",
	   "body_bytes_sent": "4612",
	   "http_referer": "-",
	   "http_user_agent": "Dalvik\/2.1.0 (Linux; U; Android 7.0; SM-G9500 Build\/NRD90M)",
	   "http_x_forwarded_for": "120.188.38.168",
	   "hostname": "node001083"
		 },
  "time_local": "2016-07-16T15:56:04+08:00"
}
 

 
{
	"message":"{
		\"remote_addr\":\"192.168.11.86\",
		\"time_local\":\"2017-11-16T19:39:19+08:00\",
		\"scheme\":\"https\",
		\"http_host\":\"yunlian.io\",
		\"method\":\"GET\",
		\"request_uri\":\"\/adf\/logining\/ad.php?abc=test\",
		\"uri\":\"\/adf\/logining\/ad.php\",
		\"request_time\":\"1.763\",
		\"status\":\"200\",
		\"upstream_addr\":\"192.168.1.112:889\",
		\"upstream_status\":\"200\",
		\"upstream_response_time\":\"1.763\",
		\"request_length\":\"1743\",
		\"body_bytes_sent\":\"4612\",
		\"http_referer\":\"-\",
		\"http_user_agent\":\"Dalvik\/2.1.0 (Linux; U; Android 7.0; SM-G9500Build\/NRD90M)",
		\"http_x_forwarded_for\":\"120.188.38.168\",
		\"hostname\":\"node001083\"
	}",
	"time_local":"2016-07-16T15:56:04+08:00"
}

(2)配置示例

如果您的日志如上样例所示,您需要上传一条原始日志,并选择日志坐在的Key,然后进行日志字段映射设置即可。

步骤二:日志对接配置

在成功完成日志格式配置后,您可以对某个日志格式进行对接配置,选择使用ATD的kafka或是您私有的kafka,在选择了您私有的kafka后,您需要设置TopicName、Zookeeper地址或kafka地址。

日志接入方式配置

步骤三:推日志

1、在完成日志配置后,您需要将日志推送到kafka相应的TopicName中。
【注意】请勿将不同格式的域名日志推到同一个TopicName下,否则ATD将无法完成日志解析且不能进行威胁分析。
2、在进行推日志操作时,您可以根据每个日志格式后对应的《ATD安装说明-对接操作文档》来进行推日志操作。

日志对接文档