botprotection draft
¶
웹 크롤러 등의 로봇을 통한 HTTP 요청을 제어한다.
/usr/local/m2/setting.json
다음 영역에 대해 기술한다.
{
"functions": {
"contents": {
"botprotection": {
"meta": {
"enable": true,
"OverridingCmd": false
},
"detect": {
"robotsTxt": {
"enable": true
},
"ip": {
"enable": true
},
"userAgent": {
"enable": true
},
},
"flows": {
"matchingList": [
"name": "basic",
"path": "/",
"action": {
"lv2": {"code": 403},
"lv5": {"location": "/captcha?redirect=$URL"},
"lv7": {"location": "/home"}
}
]
}
}
}
}
}
How to use¶
Important
이 함수는 바이패스 함수이므로, 캐싱엔진을 경유하지 않는다.
명령어 리스트¶
명령어 |
파라미터 |
동작 |
---|---|---|
|
(하위설정) |
detect 실행 |
|
(하위설정) |
flows 실행 |
Important
이 함수는 프로덕션 환경에서 명령어 사용을 금지한다.
클라이언트에서 명령어 사용시, 보안 우회로가 만들어질 수 있으므로 아래 설정토록 한다.
meta.OverridingCmd: false
메트릭¶
metric |
type |
label |
description |
---|---|---|---|
m2_botprotection_wait_queue |
gauge |
vhost |
대기 큐 길이 |
m2_botprotection_requests_total |
counter |
vhost |
요청수 |
m2_botprotection_complete_total |
counter |
vhost |
성공수 |
m2_botprotection_fail_total |
counter |
reason |
Note 실패가 존재할 경우에만 메트릭 제공. |
m2_botprotection_robotstxt_disallow_total |
counter |
vhost |
차단수 |
m2_botprotection_ip_disallow_total |
counter |
vhost |
차단수 |
m2_botprotection_useragent_disallow_total |
counter |
vhost |
차단수 |
m2_botprotection_flows_level_total |
counter |
level |
|
에러 메시지¶
에러코드 |
priority |
응답코드 |
|
설명 |
추가정보 |
---|---|---|---|---|---|
31600001 |
|
원본응답 |
|
원본에서 |
vhost, url, x-ctx-id, response-code, content-length |
31600002 |
|
원본응답 |
|
데이터베이스 획득 실패 |
vhost, url, x-ctx-id, response-code, content-length |
31600003 |
|
원본응답 |
|
|
vhost, url, x-ctx-id, response-code, content-length |
meta¶
"meta" : {
"enable" : false,
"OverridingCmd" : false
}
enable (기본: false)
Bot Protection 활성화
OverridingCmd (기본: false)
명령어에 의한 설정 오버라이딩 활성화
프로덕션 환경에서는 사용하지 않는다.
detect¶
"detect": {
"robotsTxt": {
"enable": true
},
"ip": {
"enable": true,
"disallows": [],
"allows": []
},
"userAgent": {
"enable": true,
"disallows": [],
"allows": []
},
}
robotsTxt¶
enable (기본: false)
robots.txt
에 허가되지 않은 (Disallow 명시된) 요청을 차단한다. 처리 방법은 flows 에 따른다.갱신 주기는 원본의
Cache-Control
에 따른다. (기본값:max-age=86400
)
ip¶
허가되지 않은 IP의 요청을 차단한다.
enable (기본: false)
IP 탐지 기능 활성화
disallows (기본: null)
IP 차단 목록
allows (기본: null)
IP 허용 목록
userAgent¶
허가되지 않은 클라이언트 요청을 차단한다.
enable (기본: false)
User-Agent
를 활용한 bot 탐지 기능 활성화disallows (기본: null)
User-Agent
차단 키워드 목록allows (기본: null)
User-Agent
허용 키워드 목록
Note
설정에 명기한
disallows
또는allows
항목을 DB 보다 우선순위가 높다.disallows
설정은allows
보다 우선순위가 높다.
flows¶
"flows": {
"matchingList": [
"name": "basic",
"path": "/",
"action": {
"lv2": {"code": 403},
"lv5": {"location": "/captcha?redirect=$URL"},
"lv7": {"location": "/home"}
}
]
}
matchingList¶
matchingList (기본: null)
name
패턴의 이름path
매칭할 요청 경로action
lv0
~lv10
code
응답 상태코드location
리디렉션 경로.code
가 명기되지 않았다면302
상태코드를 응답한다.