WAF 규칙이 포함된 트래픽 필터 규칙 traffic-filter-rules-including-waf-rules
트래픽 필터 규칙을 사용하여 CDN 계층에서 요청을 차단하거나 허용할 수 있으므로 이는 다음과 같은 시나리오에 유용할 수 있습니다.
- 새 사이트가 라이브로 전환되기 전 회사 내부 트래픽으로 특정 도메인에 대한 액세스 제한
- 대규모 DoS 공격에 대한 취약성을 줄이기 위해 속도 제한 설정
- 악성으로 알려진 IP 주소가 사용자 페이지를 타겟팅하지 않도록 함
대부분의 트래픽 필터 규칙은 모든 AEM as a Cloud Service Sites 및 Forms 고객이 사용할 수 있습니다. 이 규칙은 IP, 호스트 이름, 경로 및 사용자 에이전트를 포함하여 요청 속성과 요청 헤더에서 주로 작동합니다.
트래픽 필터 규칙의 하위 범주는 향상된 보안 라이선스와 WAF-DDoS 보호 라이선스 중 하나가 필요합니다. 이러한 강력한 규칙은 WAF(웹 애플리케이션 방화벽) 트래픽 필터 규칙(이하 WAF 규칙)이라고 하며 이 문서 후반부에 설명된 WAF 플래그에 액세스할 수 있습니다.
Cloud Manager 구성 파이프라인을 통해 트래픽 필터 규칙을 프로덕션(비샌드박스) 프로그램의 개발, 스테이징 및 프로덕션 환경 유형에 배포할 수 있습니다. 명령줄 도구를 사용하여 RDE(Rapid Development Environment)에 구성 파일을 배포할 수 있습니다.
튜토리얼을 참고하면 이 기능에 대한 전문 지식을 빠르게 습득할 수 있습니다.
이 문서를 구성하는 방식 how-organized
이 문서는 다음 섹션으로 구성되어 있습니다.
- 트래픽 보호 개요: 악성 트래픽으로부터 사용자를 보호하는 방법에 대해 알아보십시오.
- 규칙을 구성하는 프로세스 제안: 웹 사이트 보호를 위한 높은 수준의 방법론을 읽어 보십시오.
- 설정: 고급 WAF 규칙을 포함하여 트래픽 필터 규칙을 설정, 구성 및 배포하는 방법에 대해 알아보십시오.
- 규칙 구문:
cdn.yaml
구성 파일에서 트래픽 필터 규칙을 선언하는 방법에 대해 알아보십시오. 여기에는 모든 Sites 및 Forms 고객이 사용할 수 있는 트래픽 필터 규칙과 함께 해당 기능에 라이선스를 부여하는 고객을 위한 WAF 규칙의 하위 범주가 모두 포함되어 있습니다. - 규칙 예: 진행 과정을 알아보려면 선언된 규칙의 예를 참조하십시오.
- 속도 제한 규칙: 대규모 공격으로부터 사이트를 보호하려면 속도 제한 규칙을 사용하는 방법에 대해 알아보십시오
- 트래픽 필터 규칙 경고 규칙이 실행될 때 알림을 받도록 경고를 구성합니다.
- 원본 기본 트래픽 스파이크 경고 DDoS 공격을 암시하는 원본 트래픽 급증이 있을 때 알림을 받습니다.
- CDN 로그: 선언된 규칙과 WAF 플래그가 트래픽과 일치하는지 확인하십시오.
- 대시보드 도구: CDN 로그를 분석하여 새로운 트래픽 필터 규칙을 구상해 보십시오.
- 권장 스타터 규칙: 규칙 집합을 시작하는 데 필요한 규칙입니다.
- 튜토리얼: 대시보드 도구로 올바른 규칙을 선언하는 방법을 비롯해 기능에 대한 실질적인 지식입니다.
aemcs-waf-adopter@adobe.com 으로 메일을 보내어 트래픽 필터 규칙에 대한 피드백을 제공하거나 질문을 보내 주시기 바랍니다.
트래픽 보호 개요 traffic-protection-overview
오늘날 디지털 환경에서 악성 트래픽은 항상 우리를 위협하는 존재입니다. Adobe는 위험의 심각성을 인지하고 고객 애플리케이션을 보호하고 공격 시 이를 완화하기 위한 여러 가지 방법을 제공합니다.
Edge에서 Adobe Managed CDN은 대규모 및 반사/증폭 공격(레이어 3 및 4)을 포함하여 네트워크 레이어의 DoS 공격을 흡수합니다.
기본적으로 Adobe는 특정 임계값을 초과하는 높은 수준의 트래픽 버스트로 인해 발생하는 성능 저하를 방지하기 위한 조치를 취합니다. DoS 공격이 사이트 가용성에 영향을 미치는 경우 Adobe 운영 팀에 경고하여 완화 조치를 취하도록 합니다.
고객은 콘텐츠 게재 흐름의 다양한 레이어에서 규칙을 구성하여 애플리케이션 레이어 공격(레이어 7)을 완화하기 위한 사전 조치를 취할 수 있습니다.
예를 들어 Apache 계층에서 고객은 Dispatcher 모듈과 ModSecurity 중 하나를 구성하여 특정 콘텐츠에 대한 액세스를 제한할 수 있습니다.
이 문서의 설명에 따라 Cloud Manager의 구성 파이프라인을 사용하여 트래픽 필터 규칙을 Adobe Managed CDN에 배포할 수 있습니다. IP 주소, 경로 및 헤더 등 속성 기반의 트래픽 필터 규칙 또는 속도 제한 설정 기반의 규칙 외에도 고객은 WAF 규칙이라는 트래픽 필터 규칙의 강력한 하위 범주에 라이선스를 부여할 수도 있습니다.
권장 프로세스 suggested-process
다음 프로세스는 올바른 트래픽 필터 규칙을 권장하는 높은 수준의 엔드 투 엔드 프로세스입니다.
- 설정 섹션의 설명에 따라 비프로덕션 및 프로덕션 구성 파이프라인을 구성하십시오.
- WAF 트래픽 필터 규칙의 하위 범주에 라이선스를 부여한 고객은 Cloud Manager에서 해당 규칙을 활성화해야 합니다.
- 라이선스가 부여된 경우, WAF 규칙 등 트래픽 필터 규칙을 사용하는 방법을 구체적으로 이해하려면 튜토리얼을 읽고 테스트해 보십시오. 튜토리얼은 개발 환경에 규칙을 배포하고, 악성 트래픽을 시뮬레이션하고, CDN 로그를 다운로드하고, 대시보드 도구로 로그를 분석하는 과정에 대해 소개합니다.
- 권장 스타터 규칙을
cdn.yaml
에 복사하고 로그 모드에서 구성을 프로덕션 환경에 배포하십시오. - 일부 트래픽을 수집한 후 일치 항목이 있는지 확인하려면 대시보드 도구를 사용하여 결과를 분석하십시오. 긍정 오류를 파악하고 필요한 사항을 조정하여 최종적으로 차단 모드에서 스타터 규칙을 활성화할 수 있습니다.
- CDN 로그 분석 기반의 사용자 정의 규칙을 추가하여 먼저 개발 환경에서 시뮬레이션된 트래픽으로 테스트한 후 로그 모드에서 스테이지 및 프로덕션 환경에 배포한 다음 차단 모드에서 배포하십시오.
- 트래픽을 지속적으로 모니터링하면서 위협 환경이 변함에 따라 규칙을 변경하십시오.
설정 setup
-
WAF 규칙을 포함한 트래픽 필터 규칙 세트로
cdn.yaml
파일을 만듭니다.code language-none kind: "CDN" version: "1" metadata: envTypes: ["dev"] data: trafficFilters: rules: # Block simple path - name: block-path when: allOf: - reqProperty: tier matches: "author|publish" - reqProperty: path equals: '/block/me' action: block
data
노드 위의 속성에 대한 설명은 구성 파이프라인 사용하기를 참조하십시오.kind
속성 값은 콘텐츠 전송 네트워크 로 설정하고 버전은1
로 설정해야 합니다. -
WAF 규칙에 라이선스가 부여된 경우, 신규 및 기존 프로그램 시나리오 모두에 대해 아래에 설명된 대로 Cloud Manager에서 기능을 활성화해야 합니다.
-
새 프로그램에서 WAF를 구성하려면 프로덕션 프로그램 추가 시 보안 탭 의 WAF-DDOS 보호 확인란을 선택하십시오.
-
기존 프로그램에서 WAF를 구성하려면 보안 탭에서 프로그램을 편집하여 언제든지 WAF-DDOS 옵션을 선택 취소하거나 선택하십시오.
-
-
구성 파이프라인 문서에 설명된 대로 Cloud Manager에서 구성 파이프라인을 만듭니다. 파이프라인은 구성 파이프라인 사용하기에 설명된 대로 아래 어딘가에
cdn.yaml
파일이 있는 최상위config
폴더를 참조합니다.
트래픽 필터 규칙 구문 rules-syntax
IPS, 사용자 에이전트, 요청 헤더, 호스트 이름, 지역 및 URL과 같은 패턴을 일치하도록 트래픽 필터 규칙 을 구성할 수 있습니다.
향상된 보안 또는 WAF-DDoS 보호 보안 제품에 라이선스를 부여한 고객은 하나 이상의 WAF 플래그를 참조하는 WAF 트래픽 필터 규칙(이하 WAF 규칙)의 특수 범주를 구성할 수도 있습니다.
다음은 WAF 규칙도 포함하는 트래픽 필터 규칙 세트의 예입니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: "path-rule"
when:
allOf:
- { reqProperty: path, equals: /block-me }
- { reqProperty: tier, equals: publish }
action:
type: block
- name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
when: { reqProperty: path, like: "*" }
action:
type: block
wafFlags: [ SQLI, XSS]
cdn.yaml
파일의 트래픽 필터 규칙 형식은 아래에서 설명합니다. 이후 섹션 및 속도 제한 규칙에 대한 별도의 섹션에서 기타 예를 참조하십시오.
string
Condition
{ <getter>: <value>, <predicate>: <value> }
getter, 조건자 및 여러 조건을 결합하는 방법을 설명하는 아래의 조건 구조 구문을 참조하십시오.
Action
RateLimit
예제와 함께 rateLimit 구문을 설명하는 별도의 섹션이 아래에 추가로 있습니다.
조건 구조 condition-structure
조건은 단순 조건이거나 조건 그룹일 수 있습니다.
단순 조건
단순 조건은 getter와 조건자로 구성됩니다.
{ <getter>: <value>, <predicate>: <value> }
그룹 조건
조건 그룹은 여러 단순 조건 및/또는 그룹 조건으로 구성됩니다.
<allOf|anyOf>:
- { <getter>: <value>, <predicate>: <value> }
- { <getter>: <value>, <predicate>: <value> }
- <allOf|anyOf>:
- { <getter>: <value>, <predicate>: <value> }
array[Condition]
array[Condition]
getter
string
요청 속성입니다.
다음 중 하나:
path
: 쿼리 매개변수 없이 URL의 전체 경로를 반환합니다.queryString
: URL의 쿼리 부분을 반환합니다.method
: 요청에 사용된 HTTP 메서드를 반환합니다.tier
:author
,preview
또는publish
중 하나를 반환합니다.domain
: (Host
헤더에 정의된) 도메인 속성을 소문자로 반환합니다.clientIp
: 클라이언트 IP를 반환합니다.clientCountry
: 두 자리 코드를 반환합니다(클라이언트가 위치한 국가를 식별하는 지역 표시기 기호).
string
string
string
string
application/x-www-form-urlencoded
인 경우에만 적용조건자
string
string
string
string
string
string
array[string]
array[string]
boolean
메모
- 요청 속성
clientIp
은 다음 조건자equals
,doesNotEqual
,in
,notIn
에만 사용할 수 있습니다.in
및notIn
조건자 사용 시clientIp
은 IP 범위와 비교될 수도 있습니다. 다음 예에서 조건을 구현하여 IP 클라이언트가 192.168.0.0/24의 IP 범위(즉 192.168.0.0에서 192.168.0.255까지)에 있는지 평가할 수 있습니다.
when:
reqProperty: clientIp
in: [ "192.168.0.0/24" ]
- 정규 표현식을 사용하여 작업할 때 regex101 및 Fastly Fiddle을 사용하는 것이 좋습니다. fastly 설명서 - Fastly VCL의 정규 표현식에서 Fastly가 정규 표현식을 처리하는 방법에 대한 자세한 내용을 알아볼 수 있습니다.
액션 구조 action-structure
action
은 작업(허용, 차단 또는 로그)을 지정하는 문자열이거나 작업 유형(허용, 차단 또는 로그)과 wafFlags 및/또는 상태와 같은 옵션으로 구성된 오브젝트일 수 있습니다.
액션 유형
액션의 실행 순서를 반영하도록 정렬되어 있는 다음 표의 액션 유형에 따라 액션의 우선순위를 지정합니다.
wafFlags
(선택 사항), alert
(선택 사항)경고가 지정된 경우 규칙이 5분 동안 10번 트리거되면 액션 센터 알림이 전송됩니다. 특정 규칙에 대해 경고가 트리거되면 다음 날(UTC)이 되기 전까지 다시 실행되지 않습니다.
status, wafFlags
(선택 사항이며 상호 배타적), alert
(선택 사항)경고가 지정된 경우 규칙이 5분 동안 10번 트리거되면 액션 센터 알림이 전송됩니다. 특정 규칙에 대해 경고가 트리거되면 다음 날(UTC)이 되기 전까지 다시 실행되지 않습니다.
wafFlags
(선택 사항), alert
(선택 사항)경고가 지정된 경우 규칙이 5분 동안 10번 트리거되면 액션 센터 알림이 전송됩니다. 특정 규칙에 대해 경고가 트리거되면 다음 날(UTC)이 되기 전까지 다시 실행되지 않습니다.
WAF 플래그 목록 waf-flags-list
라이선스가 부여될 수 있는 WAF 트래픽 필터 규칙에 사용할 수 있는 wafFlags
속성에 대해서는 다음을 참조하십시오.
/bin/
을 제외한 명령 실행/bin
긍정 오류(false positive)를 비활성화하는 동안 CMDEXE
와 동일한 수준의 보호를 제공합니다./foo/./bar
는 /foo/bar
로 정규화됨)..htaccess
파일 또는 구성 파일 등으로서, 본질적으로 기밀입니다.고려 사항 considerations
-
충돌하는 두 규칙이 만들어졌을 때는 항상 허용 규칙이 차단 규칙보다 우선합니다. 예를 들어 특정 경로를 차단하는 규칙과 하나의 특정 IP 주소를 허용하는 규칙을 만들면 차단된 경로에서 해당 IP 주소의 요청이 허용됩니다.
-
규칙이 일치하여 차단되면 CDN은
406
반환 코드로 응답합니다. -
git 저장소에 액세스할 수 있는 모든 사용자가 암호를 읽을 수 있으므로 구성 파일은 비밀을 포함해서는 안 됩니다.
-
Cloud Manager에 정의된 IP 허용 목록은 트래픽 필터 규칙보다 우선합니다.
-
WAF 규칙 일치는 히트가 아닌 CDN 실패 및 통과에 대한 CDN 로그에만 나타납니다.
규칙 예 examples
몇 가지 규칙 예는 다음과 같습니다. 속도 제한 규칙의 예는 아래쪽의 속도 제한 섹션을 참조하십시오.
예 1
다음 규칙은 IP 192.168.1.1 에서 오는 요청을 차단합니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: "block-request-from-ip"
when: { reqProperty: clientIp, equals: "192.168.1.1" }
action:
type: block
예 2
다음 규칙은 Chrome이 포함된 User-Agent로 게시할 때 /helloworld
경로에 대한 요청을 차단합니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: "block-request-from-chrome-on-path-helloworld-for-publish-tier"
when:
allOf:
- { reqProperty: path, equals: /helloworld }
- { reqProperty: tier, equals: publish }
- { reqHeader: user-agent, matches: '.*Chrome.*' }
action:
type: block
예 3
다음 규칙은 쿼리 매개변수 foo
가 포함된 게시 중인 요청을 차단하지만, IP 192.168.1.1에서 오는 모든 요청은 허용합니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: "block-request-that-contains-query-parameter-foo"
when:
allOf:
- { queryParam: url-param, equals: foo }
- { reqProperty: tier, equals: publish }
action:
type: block
- name: "allow-all-requests-from-ip"
when: { reqProperty: clientIp, equals: 192.168.1.1 }
action:
type: allow
예 4
다음 규칙은 게시 중인 /block-me
경로에 대한 요청을 차단하고 SQLI
또는 XSS
패턴과 일치하는 모든 요청을 차단합니다. 이 예에는 SQLI
및 XSS
WAF 플래그를 참조하고 별도의 라이선스가 필요한 WAF 트래픽 필터 규칙이 포함되어 있습니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: "path-rule"
when:
allOf:
- { reqProperty: path, equals: /block-me }
- { reqProperty: tier, equals: publish }
action:
type: block
- name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
when: { reqProperty: path, like: "*" }
action:
type: block
wafFlags: [ SQLI, XSS]
예 5
이 규칙은 OFAC 국가에 대한 액세스를 차단합니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: block-ofac-countries
when:
allOf:
- reqProperty: tier
matches: "author|publish"
- reqProperty: clientCountry
in:
- SY
- BY
- MM
- KP
- IQ
- CD
- SD
- IR
- LR
- ZW
- CU
- CI
action: block
속도 제한 규칙
특정 조건에 따라 트래픽이 수신 요청의 특정 속도를 초과하는 경우 트래픽을 차단하는 것이 바람직한 경우가 있습니다. rateLimit
속성의 값을 설정하면 규칙 조건과 일치하는 요청의 속도가 제한됩니다.
속도 제한 규칙은 WAF 플래그를 참조할 수 없습니다. 해당 플래그는 모든 Sites 및 Forms 고객이 사용할 수 있습니다.
속도 제한은 CDN POP당 계산됩니다. 예를 들어 몬트리올, 마이애미, 더블린의 POP에서 각각 초당 요청 80, 90, 120건의 트래픽 속도를 경험한다고 가정해 보겠습니다. 속도 제한 규칙은 100으로 제한되어 있습니다. 이 경우 더블린으로 보내는 트래픽만 속도가 제한됩니다.
속도 제한은 에지에 도달하는 트래픽, 원본에 도달하는 트래픽 또는 오류 수를 기준으로 평가됩니다.
rateLimit 구조 ratelimit-structure
예 ratelimiting-examples
예 1
이 규칙은 지난 10초 동안 평균 60req/sec(CDN POP당)를 초과하면 5밀리초간 클라이언트를 차단합니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: limit-requests-client-ip
when:
reqProperty: tier
matches: "author|publish"
rateLimit:
limit: 60
window: 10
penalty: 300
count: all
groupBy:
- reqProperty: clientIp
action: block
예 2
10초 기간에서 초당 원본에 대한 요청(CDN POP 기준)이 평균 100개를 초과하는 경우, 60초 동안 경로/중요/리소스에 대한 요청을 차단합니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: rate-limit-example
when:
allOf:
- { reqProperty: path, equals: /critical/resource }
- { reqProperty: tier, equals: publish }
action:
type: block
rateLimit: { limit: 100, window: 10, penalty: 60, count: fetches }
CVE 규칙 cve-rules
WAF에 라이선스가 있으면 알려진 많은 CVE(일반적인 취약점 및 노출)로부터 보호하기 위해 Adobe에서 차단 규칙이 자동으로 적용되며, 새로운 CVE가 발견되는 즉시 추가될 수 있습니다. 고객은 CVE 규칙을 직접 구성해서는 안 되며, 구성할 필요가 없습니다.
트래픽 요청이 CVE와 일치하면 해당 CDN 로그 항목에 표시됩니다.
특정 CVE에 대한 질문이 있거나 조직에서 비활성화하고자 하는 특정 CVE 규칙이 있는 경우 Adobe 지원 센터에 문의하십시오.
트래픽 필터 규칙 경고 traffic-filter-rules-alerts
5분 내에 10번 트리거되면 Actions Center 알림을 보내도록 규칙을 구성할 수 있습니다. 이러한 규칙은 특정 트래픽 패턴이 발생할 때 경고를 보내므로 필요한 조치를 취할 수 있습니다. 특정 규칙에 대해 경고가 트리거되면 다음 날(UTC)이 되기 전까지 다시 실행되지 않습니다.
이메일 수신에 필요한 알림 프로필을 설정하는 방법을 포함하여 액션 센터에 대해 자세히 알아보십시오.
모든 작업 유형(허용, 차단, 로그)에 대한 작업 노드에 경고 속성을 적용할 수 있습니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: "path-rule"
when:
allOf:
- { reqProperty: path, equals: /block-me }
- { reqProperty: tier, equals: publish }
action:
type: block
alert: true
원본 기본 트래픽 스파이크 경고 traffic-spike-at-origin-alert
원본으로 상당한 양의 트래픽이 전송되며 임계값이 높은 요청이 동일한 IP 주소에서 들어와 DDoS 공격이 의심되는 경우 액션 센터 이메일 알림이 전송됩니다.
이 임계값이 충족되면 Adobe에서 해당 IP 주소의 트래픽을 차단하지만, 더 낮은 임계값에서 트래픽 스파이크를 차단하도록 속도 제한 트래픽 필터 규칙을 구성하는 등 원본을 보호하기 위한 추가 조치를 취하는 것이 좋습니다. 단계별 안내는 트래픽 규칙을 사용하여 DoS 및 DDoS 공격 차단 튜토리얼을 참조하십시오.
이 경고는 기본적으로 활성화되어 있지만 defaultTrafficAlerts 속성을 사용, false로 설정하여 비활성화할 수 있습니다. 경고가 트리거되면 다음 날(UTC)이 되기 전까지 다시 실행되지 않습니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
defaultTrafficAlerts: false
CDN 로그 cdn-logs
AEM as a Cloud Service에서 제공하는 CDN 로그 액세스는 캐시 적중률 최적화, 트래픽 필터 규칙 구성을 포함한 사용 사례에 유용합니다. CDN 로그는 Cloud Manager에서 작성자 또는 게시 서비스를 선택할 때 로그 다운로드 대화 상자에 나타납니다.
CDN 로그는 최대 5분까지 지연될 수 있습니다.
rules
속성은 일치되는 트래픽 필터 규칙에 대해 설명하고 패턴은 다음과 같습니다.
"rules": "match=<matching-customer-named-rules-that-are-matched>,waf=<matching-WAF-rules>,action=<action_type>"
예:
"rules": "match=Block-Traffic-under-private-folder,Enable-SQL-injection-everywhere,waf="SQLI,SANS",action=block"
규칙은 다음의 방식으로 진행됩니다.
- 고객이 선언한 일치하는 모든 규칙의 이름이
match
속성에 나열됩니다. action
속성은 규칙의 차단, 허용 또는 로깅 여부를 결정합니다.- WAF에 라이선스가 부여되어 WAF가 활성화되면
waf
속성은 감지된 모든 WAF 플래그(예: SQLI)를 나열합니다. 이는 규칙에서의 WAF 플래그 나열 여부에 관계없이 적용됩니다. 이는 선언할 수 있는 새로운 규칙에 대한 인사이트를 제공하기 위함입니다. - 일치하는 고객이 선언한 규칙과 WAF 규칙이 없는 경우
rules
속성이 비어 있습니다.
앞서 설명한 것처럼 WAF 규칙 일치는 히트가 아닌 CDN 실패 및 통과에 대한 CDN 로그에만 나타납니다.
아래 예에서는 샘플 cdn.yaml
과 로그 항목 두 개를 보여 줍니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
trafficFilters:
rules:
- name: "path-rule"
when: { reqProperty: path, equals: /block-me }
action: block
- name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
when: { reqProperty: path, like: "*" }
action:
type: block
wafFlags: [ SQLI, XSS ]
{
"timestamp": "2023-05-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"rid": "974e67f6",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"host": "example.com",
"url": "/block-me",
"method": "GET",
"res_ctype": "",
"cache": "PASS",
"status": 406,
"res_age": 0,
"pop": "PAR",
"rules": "match=path-rule,action=blocked"
}
{
"timestamp": "2023-05-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"rid": "974e67f6",
"host": "example.com",
"url": "/?sqli=%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20fAPK",
"method": "GET",
"res_ctype": "image/png",
"cache": "PASS",
"status": 406,
"res_age": 0,
"pop": "PAR",
"rules": "match=Enable-SQL-Injection-and-XSS-waf-rules-globally,waf=SQLI,action=blocked"
}
로그 형식 cdn-log-format
다음은 CDN 로그에 사용되는 필드 이름 목록과 간단한 설명입니다.
또한 일치에 따라 차단되었는지 여부도 나타냅니다.
예: “
match=Enable-SQL-Injection-and-XSS-waf-rules-globally,waf=SQLI,action=blocked
”일치하는 규칙이 없으면 비어 있습니다.
대시보드 도구 dashboard-tooling
Adobe는 Cloud Manager를 통해 다운로드한 CDN 로그를 수집하기 위해 대시보드 도구를 컴퓨터에 다운로드하는 메커니즘을 제공합니다. 이 도구를 사용하여 트래픽을 분석하면 WAF 규칙을 포함하여 선언할 적절한 트래픽 필터 규칙을 구상할 수 있습니다.
AEMCS-CDN-Log-Analysis-Tooling GitHub 저장소에서 바로 대시보드 도구를 복제할 수 있습니다.
튜토리얼에서는 대시보드 도구 사용법에 대한 구체적인 지침을 확인할 수 있습니다.
권장 스타터 규칙 recommended-starter-rules
아래 권장 규칙을 시작하려는 cdn.yaml
에 복사할 수 있습니다. 로그 모드에서 시작하여 트래픽을 분석한 다음 결과에 만족하면 차단 모드로 변경하십시오. 웹 사이트 라이브 트래픽의 고유 특성에 따라 규칙을 수정할 수 있습니다.
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev", "stage", "prod"]
data:
trafficFilters:
rules:
# Block client for 5m when it exceeds an average of 100 req/sec to origin on a time window of 10sec
- name: limit-origin-requests-client-ip
when:
reqProperty: tier
equals: 'publish'
rateLimit:
limit: 100
window: 10
count: fetches
penalty: 300
groupBy:
- reqProperty: clientIp
action: log
# Block client for 5m when it exceeds an average of 500 req/sec on a time window of 10sec
- name: limit-requests-client-ip
when:
reqProperty: tier
equals: 'publish'
rateLimit:
limit: 500
window: 10
count: all
penalty: 300
groupBy:
- reqProperty: clientIp
action: log
# Block requests coming from OFAC countries
- name: block-ofac-countries
when:
allOf:
- { reqProperty: tier, in: ["author", "publish"] }
- reqProperty: clientCountry
in:
- SY
- BY
- MM
- KP
- IQ
- CD
- SD
- IR
- LR
- ZW
- CU
- CI
action: log
# Enable recommended WAF protections (only works if WAF is licensed enabled for your environment)
- name: block-waf-flags-globally
when:
reqProperty: tier
in: ["author", "publish"]
action:
type: log
wafFlags:
- TRAVERSAL
- CMDEXE-NO-BIN
- XSS
- LOG4J-JNDI
- BACKDOOR
- USERAGENT
- SQLI
- SANS
- TORNODE
- NOUA
- SCANNER
- PRIVATEFILE
- NULLBYTE
튜토리얼 tutorial
사용 가능한 두 가지 튜토리얼은 다음과 같습니다.
트래픽 필터 규칙(WAF 규칙 포함)으로 웹 사이트 보호 tutorial-protecting-websites
튜토리얼 살펴보기로 WAF 규칙 등 트래픽 필터 규칙에 대한 일반적이며 실질적인 지식과 경험을 얻습니다.
튜토리얼은 다음 과정에 대해 소개합니다.
- Cloud Manager 구성 파이프라인 설정
- 도구를 사용하여 악성 트래픽 시뮬레이션
- WAF 규칙이 포함된 트래픽 필터 규칙 선언
- 대시보드 도구를 사용하여 결과 분석
- 모범 사례
트래픽 필터 규칙을 사용하여 DoS 및 DDoS 공격 차단 tutorial-blocking-DDoS-with-rules
속도 제한 트래픽 필터 규칙 및 기타 전략을 사용하여 서비스 거부(DoS) 및 분산 서비스 거부(DDoS) 공격을 차단하는 방법에 대해 자세히 알아보십시오.
튜토리얼은 다음 과정에 대해 소개합니다.
- 보호 이해
- 속도 제한이 초과되면 알림 수신
- 속도 제한 트래픽 필터 규칙에 대한 임계값을 구성하기 위해 대시보드 도구로 트래픽 패턴 분석