NGINX App Protect DoS Live Activity 모니터링

이 포스트에서는 NGINX App Protect DoS Live Activity 모니터링에 대해 알아볼 수 있습니다.

NGINX App Protect DoS

목차

1. NGINX App Protect DoS 개요
2. 필수 조건
3. API 구성 단계
4. NGINX App Protect DoS 대시보드 사용
 4-1. NGINX App Protect DoS 대시보드에 접근하기
 4-2. DoS 개요
 4-3. 그래프 표현
 4-4. NGINX App Protect DoS 상태의 색깔 표시
 4-5. 대시보드 옵션 구성
5. REST API 사용
 5-1. API 개요

1. NGINX App Protect DoS 개요

NGINX App Protect DoS는 다양한 애플리케이션 모니터링 도구를 제공하고 있습니다.

App Protect DoS Dashboard Page : 이 동적 인터페이스는 보호된 앱에 대한 실시간 모니터링을 제공하고 세부 정보를 제공합니다.
NGINX App Protect DoS REST API : 이 인터페이스는 보호된 앱에 대한 포괄적인 메트릭을 제공합니다.

2. 필수 조건

NGINX Protect DoS REST API 및 DoS Dashboard에 접근 하려면 NGINX Plus R26 이상의 버전이 필요합니다.

3. API 구성 단계

API를 활성화 하는 방법

  • API를 처리할 server 설정을 http 블록 안에 정의합니다.
http {
    server {
        # API 설정을 넣습니다.
    }
}
  • API 요청 location 블록을 만든 후 app_protect_dos_api 문장을 추가합니다.
http {
    # ...
    server {
        listen 192.168.1.23;
        # ...
        location /api {
            app_protect_dos_api;
            # ...
        }
    }
}
  • API Access를 제한하려면 허용 및 거부 지침을 사용하여 로컬 네트워크 엑세스만 허용합니다.
http {
    # ...
    server {
        listen 192.168.1.23;
        # ...
        location /api {
            app_protect_dos_api;
            allow 192.168.1.0/24;
            deny all;
        }
    }
}
  • HTTP 기본 인증을 구현하여 특정 사용자에 대한 PATCH, POST 및 DELETE 메소드에 대한 엑세스를 제한합니다.
http {
    # ...
    server {
        listen 192.168.1.23;
        # ...
        location /api {
            limit_except GET {
                auth_basic "NGINX Plus API";
                auth_basic_user_file /path/to/passwd/file;
            }
            app_protect_dos_api;
            allow 192.168.1.0/24;
            deny  all;
        }
    }
}
  • root 디렉토리에 있는 /dashboard-dos.html 위치를 정의하여 DoS 대시보드를 활성화합니다.
http {
    # ...
    server {
        listen 192.168.1.23;
        # ...
        location /api {
            limit_except GET {
                auth_basic "NGINX Plus API";
                auth_basic_user_file /path/to/passwd/file;
            }
            app_protect_dos_api;
            allow 192.168.1.0/24;
            deny  all;
        }
        location = /dashboard-dos.html {
            root   /usr/share/nginx/html;
        }
    }
}

4. NGINX App Protect DoS 대시보드 사용

4-1. NGINX App Protect DoS 대시보드에 접근하기

대시보드를 보려면 브라우저의 주소 입력란의 해당 주소를 입력합니다.
예를 들어서 “http://192.168.1.23/dashboard-dos.html”는 루트 지침에 표시된 대로 /usr/share/nginx/html에 있는 대시보드 페이지를 보여줍니다.

4-2. DoS 개요

DoS 목록에는 각 App 보호에 대한 실시간 통계, 설정 및 트래픽 그래프가 표시됩니다.
다중 인스턴스 환경에서는 통계가 결합됩니다.

메트릭 이름설명
Nameapp_protect_dos_name에 의해 정의된 보호된 앱의 이름(존재하지 않는 경우 자동생성)
Health[good|bed]app_protect_dos_monitor 지시문의 uri 인수로 정의된 백엔드 서버의 상태
Under Attack[yes|no]보호된 앱가 공격을 받고 있는지 여부
Req/s초당 수신 요청의 수
Mitigations/s초당 완화된 요청의 수
Requests전체 수신 요청의 수
Mitigations전체 완화된 요청의 수
Learning[ready|ba only|not ready]NGINX App Protect DoS가 보호된 앱을 보호하기에 충분한 데이터를 수집하였는지 여부
Protocol[http1|http2|grpc]app_protect_dos_monitor 지시문의 프로토콜 인수에 정의됨
Mitigation Mode[standard|conservative|none]App_protect_dos_policy_file 디렉티브의 JSON 정책 파일의 mitigation_mode 개체에 의해 정의됨
Signatures[on|off]app_protect_dos_policy_file directional에서 JSON 정책 파일의 signature 개체에 의해 정의됨. 값 – on/off
Bad Actors[on|off]app_protect_dos_policy_file Directive에서 JSON 정책 파일의 bad_actors 개체에 의해 정의
Automation Tools Detection[on|off]app_protect_dos_policy_file directional의 JSON 정책 파일의 automation_tools_detection 개체에 의해 정의됨
TLS Fingerprint[on|off]app_protect_dos_policy_file directional에서 JSON 정책 파일의 tls_fingerprint 개체에 의해 정의됨

4-3. 그래프 표현

표시된 그래프는 두 가지 특정 메트릭(Pass-Through 요청 및 완화)을 포함하는 구성으로, 두 메트릭 모두 초당 측정됩니다.

  • Pass-Through 요청은 성공적으로 전달된 요청의 수를 나타냅니다.
  • 완화는 완화된 요청의 양을 나타냅니다. 이 Metrics의 합은 수신 요청의 집계 수를 제공합니다.

4-4. NGINX App Protect DoS 상태의 색깔 표시

  • 초록 : 서버에 대한 공격이 없고 서버 상태가 정상상태를 나타냅니다.
  • 노랑 : 서버에 대한 공격이 있고 서버 상태가 저하되었음을 나타냅니다.
  • 빨강 : 서버에 대한 공격을 받고있고 서버의 상태가 좋지 않음을 나타냅니다.

4-5. 대시보드 옵션 구성

탭 메뉴에서 설정 버튼을 클릭하여 대시보드를 구성할 수 있습니다.

Update every N sec : 지정한 시간(초)에 대시보드 데이터를 업데이트합니다. 기본값은 1초입니다.

5. REST API 사용

서버 인프라의 통계는 REST API 인터페이스로 관리할 수 있습니다. API는 HTTP 요청을 기반으로 합니다. 통계는 HTTP GET 요청을 통해 얻을 수 있습니다.

요청은 JSON을 지원하는 모니터링 도구나 대시보드에 통계를 연결할 수 있는 JSON 형식으로 나타냅니다.

모든 요소의 상태 정보는 path로 구분된 URL을 통해 액세스할 수 있습니다.
URL은 다음과 같습니다. http://192.168.1.23/api/dos/1/protected_objects

위의 URL 해석입니다.

  • “/api”는 API 액세스를 위해 NGINX 설정에 구성된 엔드포인트를 뜻합니다.
  • “/dos”는 App Protect DoS API를 다른 NGINX Plus API와 차별화 합니다.
  • “/1″은 사용중인 API 버전을 나타냅니다. 현재 버전은 1입니다.
  • “/protected_objects”는 액세스하려는 특정 리소스 또는 데이터를 가리킵니다.

API의 응답은 쉽게 구문 분석 및 분석 할 수 있도록 JSON 형식입니다.

  • 모든 기본 엔드포인트를 보려면 터미널의 curl을 통해 GET 요청을 사용합니다.
curl -s 'http://192.168.1.23/api/dos/1/' | json_pp
  • 이 명령문은 다음과 같이 주요엑세스 포인트를 나열하는 JSON 배열을 반환합니다.
["protected_objects"]
  • 특정 엔드포인트에 대한 자세한 통계를 얻으려면 유사한 GET 요청을 실행합니다.
curl -s 'http://192.168.1.23/api/dos/1/protected_objects' | json_pp

5-1. API 개요

엔드포인트

Path설명
/루트의 엔드포인트의 리스트를 반환합니다.
/protected_objects/모든 보호된 앱에 통계를 반환합니다.
/protected_objects/{protectedObjectName}protectedObjectName에 들어간 개체에 대한 통계를 반환합니다.

/protected_objects 엔드포인트의 응답의 예시는 다음과 같습니다.

{
    "po_1": {
        "attack": false,
        "health": 0.50,
        "rps": 12,
        "mps": 0,
        "requests": 500123,
        "passthrough": 260023,
        "mitigations": 240100,
        "learning": "ready",
        "protocol": "http1",
        "mode": "standard",
        "sig": true,
        "ba": true,
        "auto_tools": true,
        "tls_fp": true
    },
    "po_http2": {
        "attack": false,
        "health": 0.50,
        "rps": 20,
        "mps": 0,
        "requests": 500123,
        "passthrough": 260023,
        "mitigations": 240100,
        "learning": "not_ready",
        "protocol": "http2",
        "mode": "conservative",
        "sig": true,
        "ba": true,
        "auto_tools": true,
        "tls_fp": true
    },
    "po_grpc": {
        "attack": false,
        "health": 0.50,
        "rps": 25,
        "mps": 0,
        "requests": 6000123,
        "passthrough": 2599123,
        "mitigations": 3401000,
        "learning": "ready",
        "protocol": "grpc",
        "mode": "standard",
        "sig": true,
        "ba": true,
        "auto_tools": true,
        "tls_fp": true
    }
}

NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.

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

* indicates required