Cloudflare WAF는 도메인에 대한 웹 요청을 모니터링하고 사용자가 지정하는 규칙 세트를 기반으로 원하지 않는 트래픽을 필터링합니다.
개요
Cloudflare 웹 애플리케이션 방화벽(WAF) 은 HTTP GET 및 POST 요청에서의 의심스러운 활동을 식별하고 삭제합니다.
WAF가 파악하는 악의적 콘텐츠 의 예는 다음과 같습니다.
- 댓글 스팸에 많이 쓰이는 키워드(XX, Rolex, Viagra 등),
- XSS(교차 사이트 스크립팅) 공격
- SQL 삽입(SQi).
WAF는 Pro, Business, Enterprise 요금제에서 Cloudflare로 프록시되는 하위 도메인에 제공됩니다. Cloudflare 방화벽 앱의 관리 규칙 탭에서 통해 WAF 설정을 제어합니다. Cloudflare WAF에는 3가지 패키지가 포함됩니다.
- Cloudflare 관리 규칙 세트
- 패키지: OWASP ModSecurity 핵심 규칙 집합
- 고객 요청 규칙
Cloudflare 방화벽 앱의 개요 탭에서 제공되는 방화벽 분석 활동 로그를 통해 차단된 위협을 검토할 수 있습니다.
중요한 고려사항
- Cloudflare WAF에 의해 제한된 대기 시간(약 100마이크로초)가 발생합니다.
- WAF 변경 사항이 전세계적으로 업데이트되는 데는 약 30초가 걸립니다.
- Cloudflare는 고유의 규칙을 사용하여 트래픽을 필터링합니다.
- 확립된 WebSockets은 후속 요청에 대해 WAF를 트리거하지 않는다.
- Cloudflare WAF는 JSON 응답을 구문 분석하여 API를 대상으로 하는 취약점을 식별합니다. WAF는 JSON 페이로드 구문 분석을 128KB로 제한합니다.
- 전체 Web Application Firewall 이 해제되더라도 Cloudflare가 비활성화하지 않는 WAF 규칙이 몇 가지 있으며 (예: 규칙 ID WP0025B, 100043A및 100030 등이 그 예입니다.
WAF 긍정 오류 및 부정 오류에 대한 참고
기본적으로 Cloudflare 웹 애플리케이션 방화벽(WAF)은 Cloudflare 대시보드를 통해 완전히 관리되며, 대부분의 웹 사이트 및 웹 응용 프로그램과 호환됩니다. 하지만 인터텟의 엄청난 규모를 고려하면 긍정 오류와 부정 오류가 가능합니다.
- 긍정 오류: 합법적인 요청을 감지하고 악의적인 것으로 필터링하는 경우.
- 부정 오류: 악의적 요청이 필터링되지 않은 경우.
WAF 긍정 오류의 문제점 해결
의심스러운 콘텐츠의 정의는 웹사이트에 따라 주관적으로 정해집니다. 예를 들어 웹 사이트에 게시된 PHP 코드는 의심스럽지만, 웹 사이트가 방문자에게 코딩 방법을 가르치고 방문자에게 PHP 코드를 제출하라고 한다면 예외입니다. 따라서 이러한 웹 사이트는 정상 작업을 방해하는 관련 WAF 규칙을 사용하지 않도록 설정해야 합니다.
긍정 오류를 테스트하려면 WAF를 시뮬레이션 모드로 설정하여, 인증 질문 또는 차단 없이 가능한 공격에 대한 대응을 기록하게 합니다. 또한, 방화벽 분석 활동 로그를 사용하여 긍정 오류를 발생시킨 WAF 규칙을 판별합니다.
긍정 오류가 발견된 경우, 몇 가지 해결 방법이 있습니다.
- IP Access 규칙 허용 목록에 클라이언트의 IP 주소를 추가: 해당 브라우저 또는 클라이언트가 동일한 IP 주소에서 방문하는 경우 이를 허용하는 것이 좋습니다.
- 해당 WAF 규칙 비활성화: 긍정 오류를 차단하거나, 이에 대해 질문을 제기하지는 않지만, 전반적인 사이트 보안은 약화됩니다. WAF 규칙 ID 981176가 차단한 요청이 OWASP 규칙을 참조합니다. 이 문제를 해결하려면, OWASP 민감도를 낮추세요.
- 방화벽 규칙을 사용하여 WAF를 우회: 매개변수의 특정 조합에 대해 bypass 조치가 포함된 방화벽 규칙을 작성하여 WAF를 비활성화합니다. 예를 들어, 특정 URL및 특정 IP 주소 또는 사용자 에이전트에 대해서는 bypass the WAF를 적용합니다.
- (권장하지 않음) 특정 URL로의 트래픽에 WAF 비활성화: 특정 URL 엔드포인트의 보안을 낮춥니다. Page Rules를 통해 구성됩니다.
참고: 예상대로 WAF 규칙이 트리거되는지 여부를 확인하기 위해 Cloudflare 지원팀에 문의하실 때는, 해당 특정 요청을 보낼 때 캡처한 HAR 파일을 보내시기 바랍니다.
다음 추가 지침도 참고하세요.
- 하나의 특정 규칙이 긍정 오류를 야기하는 경우에는, 전체 규칙 그룹을 해제 하지 말고 해당 규칙의 모드 를 비활성화로 설정하세요.
- 웹 사이트에 관리자 컨텐츠에서 긍정 오류가 발생하는 경우에는, 관리 섹션(yoursite.com/admin)에 대해 페이지 규칙 을 보안 비활성화로 설정하세요.
WAF 부정 오류의 문제점 해결
부정 오류를 식별하려면 원본 웹 서버의 HTTP 로그를 검토합니다. 부정 오류를 줄이려면 다음 체크리스트를 점검합니다.
- 방화벽 앱의 관리 규칙에 웹 애플리케이션 방화벽이 켜짐 상태인가요?
- 페이지 규칙에서 웹 애플리케이션 방화벽이 꺼짐 상태인가요?
- 모든 WAF 규칙이 기본적으로 활성화되지 않으므로 개별 WAF 규칙의 기본 작동을 검토하세요. 예를 들어 Cloudflare는 기본적으로 사용자 에이전트가 비어 있는 요청을 허용합니다. 사용자 에이전트가 비어 있는 모든 요청을 차단하려면 WAF 규칙 모드를 차단으로 변경하세요.
- HTTP 트래픽을 처리하는 DNS 레코드가 Cloudflare를 통해 프록시되고 있나요?
- 방화벽 규칙이 Cloudflare 관리 규칙을 우회하고 있나요?
- IP 액세스 규칙 또는 방화벽 규칙의 허용된 국가, ASN, IP 범위, IP 등이 공격 트래픽과 일치하나요?
- 원본 IP 주소를 향하는 악성 트래픽이 Cloudflare의 보호를 우회하고 있나요? 원본 웹 서버에서 Cloudflare의 IP 주소를 제외한 모든 트래픽을 차단하세요.
Cloudflare 관리 규칙 세트
Cloudflare 관리 규칙 집합에는 Cloudflare가 작성하고 준비한 보안 규칙이 포함되어 있습니다. 그룹 아래에서 규칙 집합 이름을 클릭하면, 해당 규칙의 설명을 표시됩니다.
Cloudflare Specials는 많이 쓰이는 공격에 대해 핵심 WAF 보안을 제공하는 그룹입니다.
특정 규칙 집합가 표시될 때 각 규칙에 대한 기본 조치가 기본 모드 아래에 나열됩니다. 특정 Cloudflare 관리 규칙 집합의 개별 규칙에 사용 가능한 모드는 다음과 같습니다.
- 기본값 - 특정 규칙을 표시할 때 기본 모드 아래에 나열된 기본 조치를 취합니다.
- 비활성화 - 그룹 내의 특정 규칙을 끕니다.
- 차단 - 요청을 버립니다.
- 인증 질문 -방문자에게 캡차 챌린지 페이지가 발송됩니다.
- 시뮬레이션 - 요청을 허용하지만, 활동 로그에 로깅합니다.
Cloudflare의 WAF 변경 로그를 통해 Cloudflare 관리 규칙 집합에 진행 중인 변경 사항을 모니터링할 수 있습니다.
패키지: OWASP ModSecurity 핵심 규칙 집합
Cloudflare OWASP 패키지의 이해
패키지: OWASP ModSecurity 핵심 규칙 집합는 OWASP 규칙이 트리거된 수에 따라 각 요청에 점수를 부여합니다. 일부 OWASP 규칙은 다른 규칙보다 민감도 점수가 높습니다. OWASP가 요청을 평가하고 나면 Cloudflare는 도메인에 대해 구성된 민감도와 이 점수를 비교합니다. 점수가 민감도보다 크면 해당 요청에 대해 패키지: OWASP ModSecurity 핵심 규칙 집합에 구성된 조치가 적용됩니다.
- 차단 - 요청을 버립니다.
- 인증 질문 -방문자에게 캡차 챌린지 페이지가 발송됩니다.
- 시뮬레이션 - 요청을 허용하지만, 활동 로그에 로깅합니다.
특정 민감도에 대해 다음 점수가 되면 WAF가 트리거됩니다.
- 낮음 - 60점 이상
- 중간 - 40점 이상
- 높음 - 25점 이상
Ajax 요청의 경우, 다음의 기준이 적용됩니다.
- 낮음 - 120점 이상
- 중간 - 80점 이상
- 높음 - 65점 이상
활동 로그를 검토하면, 최종 점수 및 트리거된 개별 규칙을 확인할 수 있습니다.
Cloudflare의 OWASP 패키지 제어
패키지: OWASP ModSecurity 핵심 규칙 집합에는 OWASP 프로젝트의 여러 규칙이 포함되어 있습니다. Cloudflare는 OWASP 규칙을 작성하거나 큐레이트하지 않습니다. 그룹 아래에 있는 규칙 집합 이름을 클릭하면 해당 규칙의 설명이 표시됩니다. Cloudflare 관리 규칙 집합와 달리 특정 OWASP 규칙은 켜짐 또는 꺼짐으로 설정되어 있습니다.
OWASP 임계값을 관리하려면, 패키지: OWASP ModSecurity 코어 규칙 집합에서 민감도를 낮음, 중간, 높음 중에서 선택하세요. 민감도를 꺼짐으로 설정하면, 전체 OWASP 패키지(규칙 전체 포함)가 비활성화됩니다. 적절한 민감도는 업종과 운영 형태에 따라 다릅니다. 예를 들어, 낮음은 다음의 경우에 적절합니다.
- 특정 비즈니스 업계에서는 WAF를 트리거하고
- 대형 파일 업로드를 허용할 가능성이 큽니다.
Cloudflare는 처음에 WAF 민감도를 낮음으로 설정하고, 긍정 오류를 검토한 후 민감도를 높일 것을 권장합니다.