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

목차
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 보호에 대한 실시간 통계, 설정 및 트래픽 그래프가 표시됩니다.
다중 인스턴스 환경에서는 통계가 결합됩니다.
| 메트릭 이름 | 값 | 설명 |
| Name | – | app_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에 연락하여 논의하십시오.
댓글을 달려면 로그인해야 합니다.