Azure WAF(웹 애플리케이션 방화벽)로 웹 애플리케이션 보호

Azure WAF(웹 애플리케이션 방화벽)로 웹 애플리케이션 보호

2025년 1월 14일

이 기술 및 교육 문서의 목적은 보안 분석가, IT 관리자 및 시스템 엔지니어가 일반적인 공격으로부터 웹 애플리케이션을 보호하기 위해 Azure WAF(웹 애플리케이션 방화벽)를 구현하고 구성하는 방법을 안내하는 것입니다. 웹 애플리케이션이 많은 비즈니스의 관문인 디지털 환경에서 웹 애플리케이션은 SQL 주입, XSS(교차 사이트 스크립팅) 및 기타 OWASP 상위 10개 취약점과 같은 다양한 사이버 공격의 빈번한 표적이 되었습니다. Azure WAF는 이러한 위험을 완화하기 위한 필수 보호 계층을 제공하여 데이터 가용성, 무결성 및 기밀성을 보장합니다[1].

소개

웹 애플리케이션은 사실상 모든 조직의 IT 인프라의 중요한 구성 요소입니다. 그러나 인터넷에 노출되면 데이터가 손상되고 서비스가 중단되며 회사의 평판이 손상될 수 있는 공격에 취약해집니다. WAF(웹 애플리케이션 방화벽)는 역방향 프록시 역할을 하여 웹 애플리케이션에 들어오고 나가는 HTTP/HTTPS 트래픽을 검사하고 악의적인 요청이 애플리케이션 서버에 도달하기 전에 이를 식별하고 차단합니다. Azure Application Gateway 또는 Azure Front Door의 기능으로 사용할 수 있는 Azure WAF는 Azure 또는 하이브리드 환경에서도 호스팅되는 웹 애플리케이션에 대한 중앙 집중식 및 확장 가능한 보호를 제공합니다[2].

이 실무 가이드에서는 Azure WAF의 기본 개념, 작동 모드(탐지 및 예방), 관리형 규칙 세트(OWASP 핵심 규칙 세트 - CRS)를 사용한 WAF 정책 구성 및 사용자 지정 규칙을 다룹니다. Azure Application Gateway를 사용하여 WAF를 배포하고, 일반적인 공격에 대한 효율성을 테스트하고, 결과를 검증하고, 모범 사례 및 문제 해결 팁을 논의하기 위한 단계별 지침이 제공됩니다. 목표는 독자가 Azure WAF를 자율적이고 전문적이며 안정적으로 구성 및 관리하여 가장 널리 퍼진 위협으로부터 웹 애플리케이션을 보호할 수 있도록 하는 것입니다.

웹 애플리케이션 보호에 Azure WAF가 중요한 이유는 무엇인가요?

  • 포괄적인 보호: SQL 주입, XSS(교차 사이트 스크립팅), 파일 포함, 봇 공격 및 기타 OWASP 상위 10대 취약점을 포함한 일반적인 웹 공격을 방어합니다[3].
  • 관리형 규칙: Microsoft에서 자동으로 업데이트하는 관리형 규칙 세트(예: OWASP CRS)를 사용하여 수동 개입 없이 최신 위협으로부터 보호합니다.
  • 사용자 지정 규칙: 애플리케이션별 보안 요구 사항을 충족하기 위한 사용자 지정 규칙을 생성하여 특정 트래픽 패턴을 차단하거나 관리형 규칙에서 다루지 않는 취약성으로부터 보호할 수 있습니다.
  • 유연한 운영 모드: '탐지' 모드(공격 모니터링 및 기록만) 또는 '예방'(공격을 적극적으로 차단)으로 작동하여 구현을 점진적으로 제어할 수 있습니다.
  • Azure와의 기본 통합: Azure Application Gateway(내부 애플리케이션용) 및 Azure Front Door(글로벌 애플리케이션용)와 원활하게 통합되어 보안이 내장된 완전한 애플리케이션 제공 솔루션을 제공합니다.
  • 확장성 및 고가용성: Azure 애플리케이션 제공 서비스의 확장성과 고가용성을 활용하여 보호 기능이 항상 활성 상태이고 성능이 뛰어난지 확인하세요.
  • 규정 준수: 조직이 웹 애플리케이션 보호에 필요한 규제 요구 사항 및 보안 표준을 충족하도록 돕습니다.

전제조건

Azure WAF를 구현하려면 다음 항목이 필요합니다.

  1. 활성 Azure 구독: 리소스를 생성하고 관리하기 위한 Azure 구독입니다.
  2. 관리 액세스: Application Gateway, Front Doors 및 WAF 정책(예: '협력자' 또는 '네트워크 관리자')과 같은 리소스를 생성하고 관리하는 데 필요한 권한이 있는 계정입니다.
  3. 기존 웹 애플리케이션: 보호하려는 웹 애플리케이션(Azure 또는 다른 곳에 호스팅됨)입니다. 이 가이드에서는 Application Gateway를 통해 액세스되는 간단한 웹 애플리케이션을 가정합니다.
  4. VNet(가상 네트워크) 및 서브넷: Application Gateway 및 웹 애플리케이션용으로 구성된 가상 네트워크 및 서브넷입니다.

단계별: Application Gateway를 사용하여 Azure WAF 구현

Azure WAF를 구성하여 보호해 보겠습니다.Azure Application Gateway를 사용하는 웹 애플리케이션.

1. WAF를 사용하여 Azure 애플리케이션 게이트웨이 만들기

  1. 브라우저를 열고 Azure Portal https://portal.azure.com으로 이동합니다.
  2. 필요한 권한이 있는 계정으로 로그인하세요.
  3. 상단 검색 필드에 'Application Gateway'를 입력하고 결과에서 선택합니다.
  4. '+ 생성'을 클릭하세요.

  5. 기본:

    • 구독: 구독을 선택합니다.
    • 리소스 그룹: 새 리소스 그룹(예: rg-waf-appgw)을 생성하거나 기존 리소스 그룹을 선택합니다.
    • 애플리케이션 게이트웨이 이름: 이름을 지정합니다(예: appgw-waf-01).
    • 지역: 지역을 선택합니다.
    • 계층: 'Standard v2'를 선택합니다(WAF는 계층 v2에서만 사용 가능).
    • WAF 활성화: '예'를 선택합니다.
    • WAF 정책 이름: WAF 정책에 이름을 지정합니다(예: wafpolicy-appgw-01).
    • WAF 모드: '탐지'로 시작하여 '예방'으로 이동하기 전에 규칙을 모니터링하고 조정합니다.
  6. '다음: 프런트엔드'를 클릭하세요.

  7. 프런트엔드:

    • 프런트엔드 IP 주소 유형: '공개'를 선택합니다.
    • 공용 IP 주소: +새로 추가를 클릭하고 공용 IP에 이름을 지정합니다(예: pip-appgw-waf).
  8. '다음: 백엔드'를 클릭하세요.

  9. 백엔드:

    • +백엔드 풀 추가를 클릭합니다.
    • 백엔드 풀 이름: 이름을 지정합니다(예: app-backend-pool).
    • 대상 없이 백엔드 풀 추가: '아니요'를 선택합니다.
    • 대상 유형: 'IP 주소 또는 FQDN'을 선택합니다.
    • IP 주소/FQDN: 웹 애플리케이션의 IP 주소 또는 FQDN을 입력합니다(예: VNet의 VM인 경우 '10.0.0.4' 또는 App Service의 FQDN).
    • '추가'를 클릭하세요.
  10. '다음: 구성'을 클릭하세요.

  11. 설정:

    • 라우팅 설정: +라우팅 규칙 추가를 클릭합니다.
    • 규칙 이름: 이름을 지정합니다(예: rule-http).
    • 우선순위: 기본값을 그대로 둡니다.
    • 청취자:
      • 리스너 이름: 이름을 지정합니다(예: listener-http).
      • 프런트엔드 IP 주소: 생성된 공용 IP를 선택합니다.
      • 프로토콜: HTTP를 선택합니다(시작하려면 나중에 HTTPS를 추가할 수 있음).
      • 포트: 80.
    • 백엔드 대상:
      • 대상 유형: '백엔드 풀'을 선택합니다.
      • 백엔드 풀: app-backend-pool을 선택합니다.
      • 백엔드 구성: +새로 추가를 클릭합니다.
        • 백엔드 설정 이름: 이름을 지정합니다(예: http-setting).
        • 백엔드 프로토콜: HTTP.
        • 백엔드 포트: 80(또는 웹 애플리케이션 포트).
        • 사용자 지정 프로브 사용: '아니요'를 선택합니다(이 간단한 예의 경우).
        • '추가'를 클릭하세요.
    • 라우팅 규칙에서 '추가'를 클릭하세요.
  12. '다음: 태그'를 클릭하세요.

  13. '다음: 검토 + 생성'을 클릭하세요.
  14. 설정을 검토하고 '만들기'를 클릭합니다.

    • 설명: 이 프로세스는 연결된 WAF를 사용하여 Application Gateway를 만듭니다. WAF는 '탐지' 모드에서 트래픽 검사를 시작합니다.

2. 관리형 및 사용자 지정 WAF 규칙 구성

배포 후 WAF 정책을 조정할 수 있습니다.

  1. Azure Portal에서 Application Gateway(appgw-waf-01)로 이동합니다.
  2. 왼쪽 탐색 창의 '설정'에서 웹 애플리케이션 방화벽을 선택합니다.
  3. WAF 정책 이름(wafpolicy-appgw-01)을 클릭합니다.

  4. 정책 모드: 규칙이 합법적인 트래픽을 차단하지 않는다고 확신하는 경우 '개요' 섹션에서 '모드'를 '탐지'에서 '방지'로 변경할 수 있습니다.

  5. 관리형 규칙:

    • WAF 정책 왼쪽 탐색 창에서 관리형 규칙을 선택합니다.
    • OWASP 기본 규칙 세트(예: OWASP_CRS/3.2)가 활성화되어 있는지 확인하세요.
    • 잘못된 긍정을 유발하는 경우 관리 세트 내의 특정 규칙을 비활성화할 수 있지만 주의 깊게 고려한 후에만 비활성화하십시오.
  6. 맞춤 규칙:

    • WAF 정책 왼쪽 탐색 창에서 사용자 지정 규칙을 선택합니다.
    • +맞춤 규칙 추가를 클릭하세요.
    • 규칙 이름: 이름을 지정합니다(예: BloquearIPMalicioso).
    • 우선순위: 우선순위를 설정합니다(숫자가 작을수록 우선순위가 높음).
    • 유형규칙: '일치'.
    • 조건:
      • 변수 유형: RemoteAddress.
      • 연산자: IPMatch.
      • : 차단하려는 IP 주소 또는 CIDR 범위를 입력하세요(예: 192.168.1.10/32).
    • 작업: '차단'을 선택합니다.

    • 설명: 맞춤 규칙을 사용하면 IP 주소, HTTP 헤더, 쿼리 문자열 등과 같은 특정 기준에 따라 차단 논리를 정의할 수 있습니다.

  7. 추가를 클릭한 다음 WAF 정책에 저장을 클릭합니다.

3. WAF 모니터링 및 로그 검토

WAF 효율성을 이해하고 정책을 조정하려면 모니터링이 필수적입니다.

  1. Azure Portal에서 Application Gateway(appgw-waf-01)로 이동합니다.
  2. 왼쪽 탐색 창의 '모니터링'에서 진단 로그를 선택합니다.
  3. '+진단 구성 추가'를 클릭하세요.
  4. 진단 구성 이름: 이름을 지정합니다(예: diag-waf).
  5. 로그 카테고리: 'ApplicationGatewayAccessLog' 및 'ApplicationGatewayFirewallLog'를 확인하세요.
  6. 대상 세부 정보: Log Analytics 작업 영역으로 보내기를 선택하고 작업 영역을 선택합니다.
  7. 저장을 클릭합니다.

  8. 몇 분 후에 Log Analytics 작업 영역으로 이동합니다.

  9. 왼쪽 탐색 창에서 로그를 선택합니다.
  10. KQL(Kusto Query Language) 쿼리를 사용하여 WAF 로그를 분석합니다.
    • 모든 WAF 이벤트를 보려면: ``쿠스토 Azure 진단 | 여기서 ResourceProvider == "MICROSOFT.NETWORK" | 여기서 카테고리 == "ApplicationGatewayFirewallLog" | 프로젝트 TimeGenerated, 호스트 이름_s, requestUri_s, 메시지, action_s, 정책_s | TimeGenerated 설명으로 주문 ````
    • 차단된 공격을 보려면(WAF가 '예방' 모드인 경우): ``쿠스토 Azure 진단 | 여기서 ResourceProvider == "MICROSOFT.NETWORK" | 여기서 카테고리 == "ApplicationGatewayFirewallLog" | 여기서 action_s == "차단됨" | 프로젝트 TimeGenerated, 호스트 이름_s, requestUri_s, 메시지, ruleId_s | TimeGenerated 설명으로 주문 ````

검증 및 테스트

WAF를 테스트하는 것은 예상되는 공격을 차단하고 합법적인 트래픽(오탐)을 차단하지 않는지 확인하는 데 중요합니다.

1. 일반적인 공격 테스트(SQL 주입, XSS)

  1. 시나리오: Application Gateway(공용 IP 또는 FQDN 사용)를 통해 웹 애플리케이션에 액세스하고 URL 또는 양식 매개 변수에 대한 SQL 주입 공격을 시뮬레이션합니다.

    • SQL 주입 시도가 포함된 예제 URL(인증 없이 프로덕션에서 실행하지 않음): http://<seu_ip_publico_appgw>/index.php?id=1' OR '1'='1
    • XSS 시도가 포함된 예제 URL: http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
  2. 예상 조치(탐지 모드): WAF가 '탐지' 모드인 경우 요청을 허용해야 하지만 Log Analytics의 WAF 로그에는 공격과 이를 감지한 규칙이 기록되어야 합니다.

  3. 예상 조치(방지 모드): WAF가 '방지' 모드인 경우 요청이 차단되어야 하며 브라우저는 WAF 오류 페이지(일반적으로 HTTP 403 금지 오류)를 표시해야 합니다.

  4. 확인: Log Analytics의 WAF 로그를 확인하여 공격이 감지되었는지(탐지 모드에서) 또는 차단되었는지(방지 모드에서) 확인합니다.

2. 사용자 지정 규칙 테스트(IP 차단)

  1. 시나리오: IP 차단 사용자 지정 규칙에 구성한 IP 주소에서 웹 애플리케이션에 액세스해 보세요.
  2. 예상 조치: 액세스가 차단되고 브라우저에 WAF 오류 페이지가 표시되어야 합니다.
  3. 확인: Log Analytics의 WAF 로그를 확인하여 해당 IP가 사용자 지정 규칙에 의해 차단되었는지 확인합니다.

보안 팁 및 모범 사례

  • 탐지 모드에서 시작: 처음에는 항상 '감지' 모드에서 WAF를 배포합니다. '예방' 모드로 전환하기 전에 로그를 주의 깊게 모니터링하여 오탐지를 식별하고 규칙을 조정하세요.
  • WAF 튜닝: 미세 조정이 중요합니다. 거짓 긍정(합법적인 트래픽 차단)을 생성하는 특정 규칙을 비활성화하거나 특정 매개변수에 대한 제외 규칙을 추가합니다. 전체 규칙 세트를 비활성화하지 마십시오.
  • 사용자 정의 규칙: 사용자 정의 규칙을 사용하여 애플리케이션의 특정 보안 요구 사항을 처리합니다.o 관리형 규칙이 업데이트되기 전에 새로 발견된 취약점을 완화하기 위해.
  • CRS 업데이트: 관리형 규칙 세트(OWASP CRS)를 최신 상태로 유지하여 최신 위협으로부터 보호하세요. Azure WAF는 일반적으로 자동으로 업데이트되지만 버전을 확인하세요.
  • Azure Front Door와의 통합: 글로벌 웹 애플리케이션이나 성능 최적화 및 고급 라우팅이 필요한 애플리케이션의 경우 Azure Front Door에 WAF를 배포하는 것이 좋습니다. 이는 Microsoft의 글로벌 네트워크 가장자리에서 보호를 제공합니다.
  • 모니터링 및 경고: 차단된 공격이나 변칙과 같은 WAF 보안 이벤트에 대해 Azure Monitor에서 경고를 구성합니다. 중앙 집중식 보기를 위해 WAF 로그를 SIEM(예: Microsoft Sentinel)과 통합하세요.
  • 정기적인 보안 테스트: 웹 애플리케이션에 대한 침투 테스트와 취약성 스캔을 정기적으로 수행하여 새로운 취약성을 식별하고 WAF의 효율성을 검증합니다.
  • 최소 권한의 원칙: 승인된 사용자에게만 WAF 정책을 구성하고 관리할 수 있는 권한이 있는지 확인합니다.

일반적인 문제 해결

  • WAF는 예상되는 공격을 차단하지 않습니다:
    • WAF가 '탐지' 모드가 아닌 '예방' 모드인지 확인하세요.
    • 관리형 규칙 세트(OWASP CRS)가 활성화되어 있는지 확인하세요.
    • Log Analytics에서 WAF 로그를 검토하여 공격이 감지되었는지, 어떤 규칙이 트리거되었는지 확인하세요. CRS 민감도를 조정하거나 사용자 정의 규칙을 추가해야 할 수도 있습니다.
    • 악성 트래픽을 허용하는 제외 규칙이나 화이트리스트가 없는지 확인하세요.
  • WAF는 합법적인 트래픽을 차단하고 있습니다(오탐지):
    • Log Analytics에서 WAF 로그를 분석하여 합법적인 트래픽을 차단하는 규칙을 식별하는 것부터 시작하세요.
    • 식별된 규칙에 대해 다음을 수행할 수 있습니다.
      • 특정 규칙을 비활성화합니다(최후의 수단).
      • 오탐지의 원인이 되는 특정 매개변수나 헤더에 대한 제외 규칙을 추가합니다.
      • 이상 점수 매기기 임계값을 조정합니다(이상 점수 모드에서 CRS를 사용하는 경우).
    • 규칙을 조정하려면 일시적으로 '탐지' 모드로 돌아가는 것이 좋습니다.
  • WAF를 활성화한 후 애플리케이션 성능이 저하됨:
    • WAF는 트래픽 검사로 인해 약간의 지연 시간이 추가됩니다. Application Gateway 또는 전면 도어의 크기가 적절한지 확인하세요.
    • Azure Monitor에서 Application Gateway 성능 로그를 확인하세요.
  • WAF는 올바른 애플리케이션과 연결되어 있지 않습니다:
    • WAF 정책이 올바른 Application Gateway 또는 Front Door와 연결되어 있는지 확인하세요.
    • 웹 애플리케이션에 대한 트래픽이 실제로 WAF가 활성화된 Application Gateway/Front Door를 통과하는지 확인하세요.

결론

Azure WAF(웹 애플리케이션 방화벽)는 수많은 사이버 공격으로부터 웹 애플리케이션을 보호하기 위한 필수 방어입니다. WAF는 네트워크 에지에서 트래픽 검사 및 필터링 계층을 제공함으로써 알려진 취약점과 제로 데이 위협으로부터 보호하는 방패 역할을 합니다. Azure 애플리케이션 제공 서비스와의 기본 통합과 함께 관리형 및 사용자 지정 규칙 세트를 사용할 수 있는 유연성을 통해 Azure WAF는 모든 조직을 위한 강력하고 확장 가능한 솔루션이 됩니다. 신중한 구현, 정책 미세 조정 및 지속적인 모니터링을 통해 보안 전문가는 웹 애플리케이션의 보안, 가용성 및 규정 준수를 보장하여 끊임없이 진화하는 위협 환경에 맞서 조직의 전반적인 보안 태세를 강화할 수 있습니다.


참고자료:

[1] 마이크로소프트 런. Azure 웹 애플리케이션 방화벽이란 무엇입니까?. 사용 가능: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2] 마이크로소프트 런. Azure Application Gateway의 WAF(웹 애플리케이션 방화벽). 사용 가능: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] OWASP 재단. OWASP 상위 10개. 이용 가능: https://owasp.org/www-project-top-ten/ [4] 마이크로소프트 런. 방화벽 정책 만들기l Azure Application Gateway용 WAF(웹 애플리케이션 게이트웨이). 사용 가능: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] 마이크로소프트 런. WAF CRS 규칙 및 규칙 그룹. 사용 가능: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] 마이크로소프트 런. WAF 모니터링 및 로깅. 사용 가능: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics