사전 구성된 WAF 규칙 설정

이 안내에 따라 Google Cloud Armor 사전 구성된 웹 애플리케이션 방화벽(WAF) 규칙을 설정하고 조정하여 공격으로부터 애플리케이션을 보호하세요. 사전 구성된 WAF 규칙에 대해 잘 모른다면 개요를 참고하세요.

사전 구성된 WAF 규칙 설정

이 섹션에서는 Trusted Cloud 콘솔에 복사하여 사용 사례에 맞게 맞춤설정할 수 있는 템플릿 사전 구성 WAF 규칙을 제공합니다. 각 예시 Google Cloud CLI 명령어에서는 이름이 POLICY_NAME이고 우선순위가 PRIORITY인 보안 정책을 구성합니다.

첫 번째 예시에서는 규칙 이름이 RULE_NAME이고 민감도 수준이 SENSITIVITY인 규칙을 설정합니다. 이 규칙은 민감도가 SENSITIVITY 이하인 모든 서명을 사용 설정합니다. 규칙 민감도에 관한 자세한 내용은 민감도 수준 선택을 참고하세요.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})" \
    --action deny-403

두 번째 예시는 첫 번째 예시와 비슷하지만 규칙 서명 SIGNATURE_1SIGNATURE_2를 선택 해제합니다. 즉, WAF 규칙이 평가될 때 다음 두 서명은 평가되지 않습니다.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \
    --action deny-403

세 번째 예시는 두 번째 예시와 유사하지만 서명 2개를 선택 해제하는 대신 규칙 서명 2개를 선택합니다. 민감도 수준을 0으로 설정할 때만 규칙 서명을 선택할 수 있습니다.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \
    --action deny-403

이전의 모든 예시에서는 규칙당 하나의 표현식만 사용했습니다. 논리 OR(||) 논리 연산자를 사용하여 표현식을 결합할 수 있지만, 최대 표현식 크기를 초과하지 않도록 규칙당 하나의 표현식만 사용하는 것이 좋습니다.

사전 구성된 WAF 규칙의 검사 한도 업데이트

Google Cloud Armor 사전 구성된 WAF 규칙은 요청 본문의 처음 64kB(8kB, 16kB, 32kB, 48kB 또는 64kB)까지만 검사할 수 있습니다. 사전 구성된 WAF 규칙에 이러한 검사 한도 중 하나를 사용하도록 보안 정책을 수동으로 구성할 수 있습니다.

다음 명령어는 --request-body-inspection-size 플래그를 사용하여 POLICY_NAME 정책에서 사용 가능한 모든 사전 구성된 WAF 규칙의 검사 한도를 8kB로 설정합니다. 사전 구성된 WAF 규칙의 검사 한도에 대한 자세한 내용은 POST 및 PATCH 본문 검사 제한사항을 참고하세요.

gcloud compute security-policies update POLICY_NAME \
    --request-body-inspection-size = 8 kB

마찬가지로 --request-body-inspection-size 플래그를 사용하여 POLICY_NAME 정책에서 사용할 수 있는 모든 사전 구성된 WAF 규칙의 검사 한도를 16kB, 32kB, 48kB 또는 64kB로 설정할 수 있습니다.

구성된 검사 한도를 초과하는 요청 본문의 위험 완화

Google Cloud Armor 보안 정책에서 사전 구성된 WAF 규칙을 평가하면 요청 본문의 처음 64kB(8kB, 16kB, 32kB, 48kB 또는 64kB)까지 WAF 규칙에 대한 서명 일치를 검사합니다.

보안 정책에서 규칙을 만들어 검사되지 않은 콘텐츠가 백엔드에 도달하지 않도록 하면 대규모 요청으로 인한 위험을 완화할 수 있습니다. 예를 들어 요청 본문 크기가 구성된 검사 한도인 kB(8,192바이트)를 초과하는 트래픽을 거부하는 규칙을 만듭니다. 다음 명령어는 이 규칙을 만드는 방법을 보여줍니다.

gcloud compute security-policies rules create 10 \
    --security-policy my-policy \
    --expression "int(request.headers['content-length']) > 8192" \
    --action deny-403 \
    --description "Block requests greater than 8 kB"

마찬가지로 요청 본문 크기가 구성된 검사 한도인 16kB, 32kB, 48kB 또는 64kB를 초과하는 트래픽을 거부하는 규칙을 만들 수 있습니다. 예를 들어 다음 명령어는 검사 한도 64kB(65,536바이트)에 대한 이 규칙을 만드는 방법을 보여줍니다.

gcloud compute security-policies rules create 10 \
    --security-policy my-policy \
    --expression "int(request.headers['content-length']) > 65536" \
    --action deny-403 \
    --description "Block requests greater than 64 kB"

예시

이 섹션의 예시에서는 민감도 수준 및 서명 예외를 비롯하여 사전 구성된 WAF 규칙을 만들고 조정하는 데 중요한 측면을 강조 표시합니다. 모든 gcloud 예시 명령어에서 이름이 POLICY_NAME이고 우선순위가 PRIORITY인 보안 정책을 만듭니다.

특정 민감도 수준에서 규칙 만들기

이 예시에서는 민감도 수준이 4보다 낮은 sqli-v33-stable WAF 규칙의 모든 서명을 사용합니다. 따라서 민감도 수준이 3 이하인 모든 서명을 포함하는 민감도 수준 3에서 규칙을 만듭니다.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})" \
    --action deny-403

하나 이상의 서명을 선택 해제하는 규칙 만들기

이 예시에서는 xss-v33-stable WAF 규칙에서 민감도 수준 1 및 2의 거의 모든 서명을 사용하지만 JavaScript 전역 변수를 확인하는 서명 owasp-crs-v030301-id941370-xss는 제외하려고 합니다. 따라서 민감도 수준 2에서 규칙을 만들고 opt_out_rule_ids 인수를 사용하여 owasp-crs-v030301-id941370-xss 서명을 선택 해제합니다.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})" \
    --action deny-403

규칙에서 두 개 이상의 서명을 제외하려면 다음과 같이 opt_out_rule_ids 인수를 사용하여 쉼표로 구분된 서명 목록을 제공합니다.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})" \
    --action deny-403

하나 이상의 서명을 선택하는 규칙 만들기

이 예시에서는 xss-v33-stable WAF 규칙의 서명 owasp-crs-v030001-id941150-xss만 사용합니다. 서명은 허용되지 않는 HTML 속성을 확인하며 민감도 수준 2입니다. 따라서 민감도 수준 0으로 규칙을 만들고 opt_in_rule_ids 인수를 사용하여 owasp-crs-v030001-id941150-xss 서명을 선택합니다. 민감도 수준을 0으로 설정할 때만 규칙 서명을 선택할 수 있습니다.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})" \
    --action deny-403

규칙에서 두 개 이상의 서명을 포함하려면 다음과 같이 opt_in_rule_ids 인수를 사용하여 쉼표로 구분된 서명 목록을 제공합니다.

콘솔

고급 모드를 선택한 다음 일치 필드에 다음 예시 표현식을 사용합니다.

evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})

gcloud

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME  \
    --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})" \
    --action deny-403

다음 단계