NGINX One 으로 시작하는 F5 WAF for NGINX Policy 구성 가이드

이번 글에서는 NGINX One 을 활용하여 F5 WAF for NGINX Policy를 보다 쉽고 효율적으로 구성하는 방법을 소개합니다. 기존 방식과 비교해 어떤 점이 간소화되는지 살펴보고, 실제 환경에서 활용할 수 있는 정책 구성 및 적용 방법을 단계별로 알아보겠습니다.

최근 애플리케이션 보안의 중요성이 점점 커지면서 WAF(Web Application Firewall)는 필수적인 보안 구성 요소로 자리잡고 있습니다. 특히 NGINX 기반 환경에서는 F5 WAF for NGINX를 활용해 다양한 웹 공격으로부터 애플리케이션을 보호할 수 있습니다.

하지만 실제 운영 환경에서는 WAF Policy를 구성하고 관리하는 과정이 다소 복잡하게 느껴질 수 있습니다. 보안 정책을 정의하고 적용하는 과정에서 여러 설정 파일을 관리해야 하거나, 정책 변경 시 운영 환경에 반영하는 과정이 번거롭게 느껴질 수도 있습니다.

이러한 부분을 보다 효율적으로 관리할 수 있도록 돕는 것이 바로 NGINX One입니다. NGINX One은 여러 NGINX 인스턴스를 통합적으로 관리하고 다양한 설정을 중앙에서 제어할 수 있도록 지원하는 플랫폼으로, F5 WAF for NGINX Policy 구성 또한 더욱 간편하게 수행할 수 있도록 도와줍니다.

목차

1. NGINX One이란 무엇인가
2. NGINX One에서 WAF 관리가 중요한 이유
3. NGINX One과 F5 WAF for NGINX 개요
4. NGINX One을 활용한 F5 WAF for NGINX Policy 구성 구조
5. NGINX One에서 Policy 생성하기
6. NGINX One을 통한 WAF Policy 적용 및 관리 방법
7. 결론

1. NGINX One 이란 무엇인가

F5 NGINX One 콘솔을 사용하면 여러 위치와 환경에 분산된 NGINX 인스턴스를 손쉽게 관리할 수 있습니다. 이 콘솔을 통해 NGINX 인스턴스를 한 곳에서 모니터링하고 제어할 수 있습니다. 구성 확인, 성능 지표 추적, 보안 취약점 식별, SSL 인증서 관리 등 다양한 작업을 수행할 수 있습니다. NGINX One 콘솔은 NGINX One 구성 요소를 포함하는 NGINX One 패키지의 일부입니다.

2. NGINX One 에서 WAF 관리가 중요한 이유

이제 F5 NGINX One 콘솔에서 F5 WAF for NGINX v4 및 v5의 기능을 통합할 수 있습니다. F5 WAF for NGINX는 고급 웹 애플리케이션 방화벽(WAF) 기능을 제공합니다. NGINX One 콘솔 UI를 통해 F5 WAF for NGINX 방화벽을 설정할 수 있습니다. 이 솔루션은 강력한 보안과 확장성을 제공합니다.

웹 애플리케이션은 지속적으로 다양한 보안 위협에 노출되어 있으며, 이를 방어하기 위해 WAF(Web Application Firewall)는 필수적인 보안 계층으로 자리 잡고 있습니다. 특히 NGINX One 환경에서는 여러 NGINX 인스턴스를 동시에 운영하는 경우가 많기 때문에, WAF 정책을 일관되게 관리하는 것이 매우 중요합니다.

3. NGINX One과 F5 WAF for NGINX 개요

현대 애플리케이션 환경에서는 트래픽 관리와 보안 기능을 함께 고려한 운영이 중요합니다. 이러한 요구를 충족하기 위해 NGINX One과 F5 WAF for NGINX를 함께 활용하면 NGINX 기반 애플리케이션 환경을 보다 효율적으로 운영하고 보호할 수 있습니다.

이 두 솔루션을 함께 사용하면 애플리케이션 트래픽 관리와 보안 정책 운영을 하나의 관리 환경에서 수행할 수 있다는 장점이 있습니다. 특히 NGINX One을 활용하면 F5 WAF for NGINX Policy의 생성, 수정, 배포 과정이 보다 단순해지고 운영 효율성이 향상됩니다. 이를 통해 운영자는 복잡한 설정 관리 부담을 줄이면서도 안정적인 보안 환경을 유지할 수 있습니다.

4. NGINX One 을 활용한 F5 WAF for NGINX Policy 구성 구조

NGINX One을 활용하여 F5 WAF for NGINX Policy를 구성하기 위해서는 F5 WAF for NGINX가 설치된 NGINX 인스턴스가 NGINX One에 등록되어야 합니다.

이 블로그 포스트에서는 NGINX 인스턴스를 NGINX One에 등록하는 과정은 포함하지 않습니다. 자세한 내용은 아래 포스트를 확인하세요.

NGINX 인스턴스 내에 F5 WAF for NGINX가 정상적으로 설치되었다면 아래와 같이 Instance의 Detail에서 확인할 수 있습니다.

F5 WAF for NGINX가 설치되지 않거나 인식되지 않았다면 아래와 같이 표시됩니다.

NGINX One에서 F5 WAF for NGINX의 정책을 적용시키는 구조는 아래와 같이 WAF > Policies에서 정책을 생성하고, 인스턴스에 배포하는 형태로 적용됩니다.

5. NGINX One에서 Policy 생성하기

WAF > Policies 탭에서 상단에 Add Policy 버튼을 클릭하여 정책을 생성합니다.

생성할 Policy의 이름을 지정한 뒤, 선택적으로 해당 정책의 설명을 추가합니다. 그 다음 해당 정책의 모드를 선택하고 Application Language를 선택합니다.

Policy Presets에서 NGINX Strict를 Apply하면 F5 WAF for NGINX에서 제공하는 기본 Strict 정책이 구성됩니다.

Attack Signature Set 단위로 Alarm & Block을 활성화/비활성화하여 사용할 수 있습니다.

Additional Signature Sets에서 기본 Signature Sets가 아닌 attack signatures를 추가할 수 있습니다.

Attack Signature Exceptions에서 Add Item 버튼을 클릭하여 예외를 추가할 수 있습니다.

Cookie에 대한 정책도 간단히 설정할 수 있습니다.

기본적으로 Cookie의 만료 시간, 쿠키 길이 위반, RFC 준수 여부, 수정된 도메인 쿠키에 대해 violations를 설정할 수 있습니다.

각 Cookie별 적용할 수 있는 정책은 아래와 같습니다. Attack Signature Overrides에서 signature를 예외를 추가할 수 있습니다.

Parameter 별로 정책을 구성할 수 있습니다.

기본적으로 Parameter에 대해 violations를 설정할 수 있습니다.

자세한 내용은 아래 이미지와 Violation docs를 확인하세요.

각 Parameter 별 적용할 수 있는 정책은 아래와 같습니다. Attack Signature Overrides에서 signature를 예외를 추가할 수 있습니다.

  • Parameter Location
    • Any – 쿼리 문자열, POST 데이터(body) 또는 URL path
    • Cookie – Cookie 헤더의 value 문자열
    • Form Data – POST 데이터(body)
    • Header – 요청 헤더
    • Path – URL path
    • Query String – 쿼리 문자열
  • Value Type
    • Array – 매개변수의 값은 기본 데이터 유형 배열입니다.
    • Auto Detect Ignore – 매개변수의 값은 사용자 입력, XML 데이터 또는 JSON 데이터일 수 있습니다. 시스템은 자동으로 값의 유형을 분류합니다.
    • JSON – 매개변수의 값은 JSON 데이터입니다.
    • Object – 매개변수의 값은 JSON 스키마에 의해 정의된 복소수 객체입니다.
    • OpenAPI array – 매개변수의 값은 JSON 스키마에 의해 정의된 복소수 배열입니다.
    • Static Content – 매개변수는 정적이거나 미리 정의된 값을 갖습니다.
    • User input – 매개변수의 값은 사용자 입력에 의해 제공됩니다.
    • XML – 매개변수의 값은 XML 데이터입니다.

URLs 별로 정책을 구성할 수 있습니다.

기본적으로 URL에 대해 violations를 설정할 수 있습니다.

자세한 내용은 아래 이미지와 Violation docs를 확인하세요.

각 URL 별 적용할 수 있는 정책은 아래와 같습니다. Method(GET, POST, DELETE 등)와 Protocol(HTTP, HTTPS) 그리고 Attack Signature Overrides에서 signature를 예외를 추가할 수 있습니다.

그렇게 위에서 구성한 General Settings, Attack Signature Sets, Attack Signature Exceptions, Cookies, Parameter, URLs를 기반으로 작성된 Policy JSON파일이 미리보기로 생성됩니다.

Policy JSON 우측의 Edit 버튼을 클릭하여 정책을 수정할 수도 있습니다. 직접 수정시에도 문법에러나 잘못된 부분을 알려주므로 구성에 용이합니다.

구성을 마친 뒤 우측 하단의 Add Policy 버튼을 클릭하면 Policy가 생성됩니다.

6. NGINX One을 통한 WAF Policy 적용 및 관리 방법

위에서 생성한 Policy를 클릭하면 Policy의 Detail, Json, Versions 메뉴를 각각 활용할 수 있습니다.

먼저 Details 탭에서는 Policy의 전반적인 내용에 대해 간단히 보여주며, 등록된 Instance에 배포할 수 있습니다. Add Deployment를 클릭하여 정책을 Instance에 배포합니다.

Policy에서 정책을 선택할 수 있으며 Version은 선택한 Policy의 최종 업데이트 시점으로 기록됩니다. Instance 별로 배포 또는 Config Sync Group 별로 배포할 수 있으며, Policy 정책을 압축파일로 변환 후 저장할 Instance 내부 Path를 지정합니다.

지정이 완료되었으면 우측 하단의 Next 버튼을 클릭합니다.

이제 Policy를 적용할 config 파일 또는 위치 (http | server | location)에 활성화 지시문을 추가합니다.

명령어를 복사한 뒤, 적용할 파일을 선택하여 적용할 위치에 붙여넣기 한 뒤 우측 하단의 Next 버튼을 클릭합니다.

아래와 같이 Policy Details 메뉴에서 Deployments에 정책을 배포한 인스턴스가 생기며 Deployment Status가 Deploying으로 배포되고 있는 중입니다.

배포가 정상적으로 완료되면 Deployment Status가 Deployed로 변경됩니다.

배포한 Instance에 접속하여 배포할 때 설정한 경로에 접근하여 확인해보면 정상적으로 추가되고, 복사 붙여넣기한 지시문도 작성된 것을 확인할 수 있습니다.

이제 curl을 사용하여 간단히 WAF 정책이 잘 적용되었는지 확인합니다. 이번 포스트에서는 blocking 모드로 모든 signature를 활성화 했으므로 간단한 script 공격을 시도합니다.

$ curl "http://localhost:801/<script><alert></alert></script>"
<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 3410550690596882151<br><br><a href='javascript:history.back();'>[Go Back]</a></body></html>

F5 WAF for NGINX의 Policy에 의해 요청이 차단되는 것을 확인할 수 있습니다.

7. 결론

지금까지 NGINX One을 활용하여 F5 WAF for NGINX Policy를 구성하고 배포하는 방법을 살펴보았습니다.

NGINX One을 활용하면 복잡도를 크게 줄일 수 있습니다. 중앙 관리 환경에서 WAF Policy를 생성하고 수정할 수 있으며, 정책 변경 사항을 여러 NGINX 인스턴스에 일관되게 배포할 수 있어 운영 효율성을 높일 수 있습니다. 또한 정책 적용 상태를 한눈에 확인할 수 있어 보안 운영의 가시성 또한 향상됩니다.

특히 보안 정책은 한 번 설정으로 끝나는 것이 아니라 지속적인 업데이트와 관리가 필요한 영역입니다. NGINX One 기반의 정책 관리 방식은 이러한 지속적인 보안 운영을 보다 체계적으로 수행할 수 있도록 도와주며, DevOps 및 클라우드 환경에서도 유연하게 대응할 수 있는 기반을 제공합니다.

앞으로 NGINX 기반 환경에서 F5 WAF for NGINX를 운영하거나 확장할 계획이 있다면, NGINX One을 통한 중앙화된 정책 관리 방식은 보안성과 운영 효율성을 동시에 확보할 수 있는 좋은 선택이 될 수 있습니다. 이번 글이 NGINX One을 활용한 WAF 정책 관리 방식을 이해하고 실제 환경에 적용하는 데 도움이 되기를 바랍니다.

이에 대해 궁금한 사항이 있으시다면 NGINX STORE로 문의하시길 바랍니다.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required