관리형 WAF 룰 운영Cloudflare 가 고치는 룰을 우리는 어떻게 다루나
한눈에 보기
관리형 룰셋?은 Cloudflare 가 만들고 고치는 WAF? 룰입니다. 우리는 켤지, 어디에, 어떤 액션으로 걸지만 정하고, 오탐?은 룰셋을 끄지 않고 그 요청만 뺍니다.
관리형 룰은 누가, 언제 고치나요?
Cloudflare 만 고칩니다. 정기 릴리스는 7일 주기(보통 월·화요일)이고, 긴급 릴리스도 있습니다.
릴리스 주기
| 시기 | 새 룰·고친 룰 |
|---|---|
| 1주차 | Log 로 기록만 함. 새 룰은 대부분 beta·new 태그?가 붙음 |
| 2주차 | 기본 액션으로 바뀌고 태그를 뗌 |
1주차에 우리 존 이벤트를 보면 새 룰의 오탐을 미리 압니다.

- 기존 룰 수정은 «BETA» 별도 룰로 먼저 나오고, 다음 주기에 원래 룰에 반영됩니다.
- 꺼진 채 추가되는 룰도 있습니다.
- beta 태그가 7일보다 오래 남기도 하니 바뀐 시점은 changelog 의
last_updated로 봅니다(RSS 제공).
어떤 룰셋을 켜나요?
기본은 Cloudflare Managed Ruleset? 입니다. OWASP Core Ruleset? 은 오탐이 잦아 켜면 꾸준히 조정해야 합니다.
두 룰셋 비교
| 항목 | Cloudflare Managed Ruleset | OWASP Core Ruleset |
|---|---|---|
| 만든 곳 | Cloudflare 보안팀 | 공개 OWASP CRS 3.3.0 을 Cloudflare 가 구현 |
| 판정 | 시그니처마다 액션 | 걸린 룰 점수의 합이 기준을 넘으면 액션 |
| 새 CVE? | 빠르게 룰 추가 | 비교적 고정 |
| 오탐 | 줄이도록 자주 조정 | 잦은 편, 직접 조정 필요 |
| 플랜 | Pro 이상 | Pro 이상 |
Free 플랜은 Free Managed Ruleset 을 쓰며, 위 룰셋을 켰다면 따로 필요 없습니다.
Managed Ruleset 과 공격 점수? 위에 OWASP 를 더한 이득은 크지 않다고 문서는 봅니다.
어디서 켜고, 범위는 어떻게 정하나요?
Security › Settings 에서 켭니다. 켜면 실행(Execute) 룰?이 생기고, 범위(scope)를 좁힐 수 있습니다.
배포 화면
도메인 › Security › Settings › (필터) Web application exploits › Cloudflare managed ruleset 켜기 › Save

- 기본 범위는 모든 요청이고, Edit scope 로 호스트나 경로를 좁힙니다.
- 토글로 잠시 꺼도 설정은 남습니다.
- 존에서는 한 룰셋을 한 번만 배포합니다(여러 설정은 Enterprise 계정 단위 배포).
정상 요청이 걸리면 어떻게 하나요?
룰셋은 끄지 않습니다. 걸린 룰 ID?를 찾아, 그 조건의 요청만 그 룰을 건너뛰는 예외?를 만듭니다.
오탐 처리 세 단계
- Security Events? 에서 Service 를 관리형 룰로 걸러 룰 ID 와 룰셋 이름을 적습니다.
- 걸린 정상 요청의 공통점(같은 경로 등)을 찾습니다.
- Security rules › Create › Managed rules 에서 그 경로만 그 룰을 건너뛰는 예외를 만듭니다.
재정의로 룰을 끄면(Off) 모든 요청에서 보호가 빠집니다.
함정: 가장 흔한 실수: 룰셋 통째로 끄기
오탐 하나 때문에 룰셋 전체를 끄면 그 존의 관리형 보호가 통째로 사라집니다.
급하다고 룰셋을 끄거나 «Skip all remaining rules» 예외를 넓게 걸면 막던 공격도 들어옵니다.
- 걸린 룰 하나만, 그 경로에서만 건너뛰는 예외가 기본입니다.
Events 탭에서 건너뛴(Skip) 요청을 주기적으로 찾아 공격이 섞였는지 봅니다.
한눈에 보기
재정의?는 모든 요청에 대해 액션과 켜짐을 바꾸고, 예외?는 조건에 맞는 요청만 룰을 건너뛰게 합니다. 둘이 겹치면 예외가 이깁니다.
재정의는 어느 단위로 거나요?
룰셋, 태그?, 룰의 세 단위입니다. 겹치면 좁은 쪽(룰 > 태그 > 룰셋)이 이깁니다.
재정의 화면과 범위
도메인 › Security › Security rules › (필터) Managed rules › 실행(Execute) 룰 이름 › 룰셋 설정 또는 Browse rules
| 단계 | 바꿀 수 있는 것 | 적용 범위 |
|---|---|---|
| 룰셋 | 액션, 켜짐, 범위, 페이로드 로깅 | 지금 룰과 앞으로 추가될 룰 |
| 태그 | 액션, 켜짐 | 그 태그의 지금 룰과 앞으로 추가될 룰 |
| 룰 | 액션, 켜짐 | 그 룰만 |
- 룰셋 액션을 Default 로 두면 재정의가 풀려 룰마다 기본 액션으로 돌아갑니다.
- 새 룰은 빼고 지금 룰만 바꾸려면 룰 재정의를 씁니다.
- 태그로 고르면 새 룰 포함 여부(Include new rules, Only selected rules)를 묻습니다.
OWASP 룰셋은 태그와 룰 단위로 켜짐만 바꿉니다. 액션은 룰셋의 OWASP action 에서 정합니다.
예외는 무엇을 건너뛰나요?
관리형 룰만 건너뜁니다. 조건에 맞는 요청만 건너뛰어 재정의보다 범위가 좁습니다.
예외 만들기
도메인 › Security › Security rules › Create › Managed rules
| 종류 | 건너뛰는 것 | 우선순위 |
|---|---|---|
| Skip all remaining rules | 남은 관리형 룰 전부 | 가장 높음 |
| 특정 룰셋 | 고른 관리형 룰셋 | 중간 |
| 특정 룰 | 고른 룰(룰 ID, 설명, 태그로 검색) | 가장 낮음 |
관리자 화면 오탐이라면 그 경로만 뺍니다.
http.host eq "www.example.com" and starts_with(http.request.uri.path, "/admin")- 예외는 건너뛸 실행(Execute) 룰보다 목록 위에 둡니다.
- 예외에 맞은 요청은 기본으로 기록됩니다(Log matching requests).
- Browser Integrity Check 같은 다른 기능은 커스텀 룰의 Skip 으로 뺍니다.

관리형 룰에 걸린 요청만 어떻게 보나요?
Security Events? 에서 Service 를 관리형 룰로 거릅니다. 찾은 룰 ID 는 예외와 재정의에 씁니다.
이벤트 화면
도메인 › Security › Analytics › Events 탭 › Add filter › Service equals Managed rules
- Sampled logs 한 줄을 펼치면 룰 ID 와 룰셋 이름이 보입니다.
- OWASP 내역은 Additional logs 에 따로 나오고 JSON 내보내기엔 빠집니다.
- 요청 하나가 여러 기능에 걸리면 이벤트도 여러 건입니다.
목록은 표본 추출? 결과일 수 있어, 기간을 짧게 잡을수록 더 많은 건이 보입니다.
그래프가 최근 며칠을 비워 보이면 기간을 바꾸거나 표, API 로 다시 셉니다. 2026-10-15 랩 존도 그래프는 10-10 이후 비었지만 GraphQL 에는 매일 이벤트가 있었습니다.
Log 로 둔 존은 어떻게 Block 으로 바꾸나요?
세 단계입니다. 룰셋 액션을 Log? 로 재정의해 둔 존은 아래 순서로 막습니다.
단계적으로 되돌리기
- 걸린 요청을 보고 오탐은 예외로 뺍니다.
- 먼저 막을 태그에 Block 재정의를 겁니다. 좁은 재정의가 룰셋의 Log 보다 우선합니다.
- 룰셋 액션을 Default 로 바꿔 룰마다 Cloudflare 기본 액션으로 돌립니다.
룰셋 액션을 Block 으로 재정의하면 새 룰도 1주차 Log 없이 바로 막습니다. Log 는 Enterprise 전용입니다.
함정: 직접 바꾼 룰은 Cloudflare 갱신을 못 받습니다
룰 하나의 액션을 직접 바꿔 두면 Cloudflare 가 그 룰의 기본 액션을 바꿔도 우리 존에는 닿지 않습니다.
릴리스 때 Cloudflare 가 바꾸는 기본 액션(1주차 Log 에서 2주차 기본으로)은 우리가 액션을 지정한 룰에 닿지 않습니다.
- 액션 재정의는 꼭 필요한 룰에만 두고 이유와 날짜를 기록합니다.
- 필요 없어진 재정의는 주기적으로 기본값으로 되돌립니다.
한눈에 보기
관리형 룰은 DDoS? 방어, 커스텀 룰, 요청 수 제한 다음 차례입니다. 재정의는 진입점 룰셋? 실행 룰의 overrides 에, 예외는 실행 룰 앞의 skip 룰로 둡니다.
API 로 재정의는 어떻게 넣나요?
실행 룰?의 action_parameters.overrides 에 넣습니다.
overrides 구조
PUT /zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint
"action": "execute", "action_parameters": {"id": "(룰셋 ID)", "overrides": {…}}| 단계 | overrides 안의 자리 | 예 |
|---|---|---|
| 룰셋 | action | "action": "log" |
| 태그 | categories[] | {"category": "wordpress", "action": "block"} |
| 룰 | rules[] | {"id": "(룰 ID)", "enabled": false} |
- 기본 속성은
action과enabled이고, 룰셋에 따라 더 받기도 합니다. - 한 룰에 재정의 태그가 여럿이면 목록의 마지막 태그를 따릅니다.
- 관리형 룰셋 ID 는 Managed Rules 문서에 있습니다.
PUT 은 룰 목록 전체를 바꾸니 skip 룰과 다른 실행 룰도 함께 넣습니다.
배포 안 된 존은 어떻게 찾나요?
존마다 관리형 진입점 룰셋을 조회해 execute 룰이 있고 켜졌는지 봅니다.
존별 배포 확인
GET /zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint| 응답 | 뜻 |
|---|---|
| 404 | 존 단계 진입점이 없음, 존에서 배포한 관리형 룰셋 없음 |
| 200 + execute 룰 | 배포됨. action_parameters.id 로 어느 룰셋인지 확인 |
execute 룰의 enabled 가 false | 배포는 돼 있지만 꺼져 있음 |
- 대시보드는 Security › Settings 의 Web application exploits 에서 봅니다.
- 프록시하지 않는(DNS only) 레코드의 트래픽은 관리형 룰이 못 봅니다.
- Enterprise 는 계정 단위 배포도 봅니다. 같은 단계에서 계정 단위가 먼저 평가됩니다.
같은 룰셋을 계정과 존 양쪽에 배포하지 않습니다. 두 번 평가되고, 존 예외가 계정 쪽 일치를 못 막습니다.
무엇에 걸렸는지 어떻게 보나요?
페이로드 로깅?을 켭니다. 걸린 문자열과 앞뒤를 우리 공개키로 암호화해 남깁니다.
Payload logging
- Enterprise 전용이며 설정은 Super Administrator 만 합니다.
- 관리형 룰셋마다 켜고, 켠 뒤 걸린 요청부터 남습니다.
- Cloudflare 는 공개키만 저장하니 개인키를 잃으면 새 키로 다시 설정합니다.
- 같은 필드에 여러 룰이 걸리면 마지막 룰 기준으로 남습니다.
푸는 방법은 셋입니다.
- Security Events 에서 개인키를 넣어 브라우저 안에서
- 명령줄 도구
matched-data-cli로 - Logpush 로그를 SIEM? 에 넣기 전 Worker 에서
공격 점수는 관리형 룰과 어떻게 함께 쓰나요?
관리형 룰은 알려진 시그니처를, 공격 점수?는 그 변형을 잡습니다. Cloudflare 는 둘을 함께 쓰라고 권합니다.
WAF attack score
| 필드 | 뜻 | 플랜 |
|---|---|---|
cf.waf.score | 종합 점수 1~99 | Enterprise |
cf.waf.score.sqli, .xss, .rce | 공격 종류별 점수 | Enterprise |
cf.waf.score.class | attack, likely_attack, likely_clean, clean | Business 이상 |
- 1에 가까울수록 공격이고, 100 은 점수를 매기지 않은 요청입니다.
- 커스텀 룰과 요청 수 제한 룰의 조건식에 쓰며, 둘 다 관리형 룰보다 먼저 평가됩니다.
- 시작 기준은
cf.waf.score le 20, Business 는cf.waf.score.class eq "attack"입니다. - 21~50(likely_attack)엔 정상 요청이 섞여 50 미만 전부 차단은 권하지 않습니다.
- Enterprise 는 Log 로 시작해 Managed Challenge 나 Block 으로 올립니다.

봇 점수와는 다릅니다. 공격 점수는 «공격의 변형인가», 봇 점수는 «자동화인가»를 봅니다.
함정: 예외는 실행 룰보다 위에 둡니다
예외를 실행 룰 아래에 두면 아무것도 건너뛰지 않습니다.
진입점 룰셋은 목록 순서로 평가하고, skip 룰은 자기 뒤의 execute 룰만 건너뜁니다.
- PUT 할 때 예외(skip)를 실행 룰보다 앞에 둡니다.
- 존 단위 예외는 계정 단위 룰을 못 건너뛰니 계정 단위 예외를 씁니다.
이 문서의 용어
- 공격 점수
- WAF attack score(공격 점수) · 머신러닝으로 요청마다 매기는 1~99 점수. 1에 가까울수록 공격일 가능성이 높습니다.
- 관리형 룰셋
- Managed ruleset(관리형 룰셋) · Cloudflare 가 만들고 고치는 룰 묶음. 우리는 켜고 끄며 범위와 액션만 바꿉니다.
- 룰 ID
- Rule ID(룰 식별자) · 룰마다 붙는 고유 값. 이벤트에서 찾아 예외와 재정의에 씁니다.
- 실행 룰
- Execute rule(실행 룰) · 관리형 룰셋을 배포하면 생기는 룰. 배포 범위(scope)와 재정의(overrides)가 이 룰에 들어갑니다.
- 예외
- Exception(예외) · 조건에 맞는 요청이 관리형 룰을 건너뛰게 하는 Skip 룰. 전부, 특정 룰셋, 특정 룰 가운데 고릅니다.
- 오탐
- False positive(오탐) · 정상 요청을 공격으로 잘못 보고 막는 일.
- 재정의
- Override(재정의) · 관리형 룰의 기본 액션이나 켜짐 여부를 우리 존에서만 바꾸는 설정. 룰셋·태그·룰 단위로 겁니다.
- 진입점 룰셋
- Entry point ruleset(진입점 룰셋) · 단계(phase)마다 존에 하나씩 있는 시작 룰셋. 관리형 룰셋은 여기에 실행(execute) 룰로 배포합니다.
- 태그
- Tag(태그) · 관리형 룰에 붙은 분류 이름(예: wordpress). 같은 태그의 룰을 한꺼번에 설정합니다.
- 페이로드 로깅
- Payload logging(일치 내용 기록) · 관리형 룰에 걸린 문자열과 그 앞뒤를 우리 공개키로 암호화해 남기는 Enterprise 기능.
- 표본 추출
- Sampling(표본 추출) · 데이터가 많을 때 일부만 골라 빠르게 보여 주는 방식. 그래서 모든 이벤트가 보이지 않을 수 있습니다.
- Cloudflare Managed Ruleset
- Cloudflare Managed Ruleset(Cloudflare 관리형 룰셋) · Cloudflare 보안팀이 만든 시그니처 룰 묶음. 새 취약점에 맞춰 자주 갱신하며 Pro 플랜부터 씁니다.
- CVE
- Common Vulnerabilities and Exposures(공개 취약점 식별 번호) · 공개된 보안 취약점마다 붙는 번호.
- DDoS
- Distributed Denial of Service(분산 서비스 거부) · 많은 곳에서 트래픽을 한꺼번에 쏟아 서버나 서비스를 마비시키려는 공격.
- Log
- Log(기록) 액션 · 요청을 막지 않고 기록만 합니다. Enterprise 플랜에서 고를 수 있습니다.
- OWASP Core Ruleset
- Cloudflare OWASP Core Ruleset(OWASP 핵심 룰셋) · OWASP(Open Web Application Security Project)의 공개 ModSecurity Core Rule Set 3.3.0 을 Cloudflare 가 구현한 것. 걸린 룰의 점수를 더해 기준을 넘으면 액션을 냅니다.
- Security Events
- Security Events(보안 이벤트) · Cloudflare 보안 기능이 막거나 기록한 요청을 모아 보는 화면. Security › Analytics 의 Events 탭에 있습니다.
- SIEM
- Security Information and Event Management(보안 정보·이벤트 관리) · 여러 시스템의 보안 로그를 한곳에 모아 분석하는 도구.
- WAF
- Web Application Firewall(웹 애플리케이션 방화벽) · 웹 요청을 룰로 검사해 공격을 막거나 기록하는 Cloudflare 기능.