NGINX App Protect WAF의 Access Log
웹 애플리케이션 방화벽(WAF)은 사이버 공격으로부터 애플리케이션을 보호하는 중요한 역할을 합니다. NGINX App Protect는 실시간으로 트래픽을 분석하고, 의심스러운 행동을 차단하여 보안을 강화합니다. 이러한 과정에서 생성되는 Access Log는 WAF가 처리한 요청에 대한 중요한 정보를 담고 있습니다. 본 포스트에서는 NGINX App Protect WAF의 Access Log에 대한 내용을 알아보겠습니다.
목차
1. NGINX App Protect WAF Access Logs
1-1. log_format
1-2. access_log
2. NGINX App Protect 변수
3. 예시
1. NGINX App Protect WAF Access Logs
NGINX App Protect의 Access log는 NGINX의 요청 로그 메커니즘입니다. 두 가지 지시어로 제어됩니다.
1-1. log_format
이 지시문은 미리 정의된 변수를 사용하여 로그 메시지의 형식을 결정합니다. NGINX App Protect는 log_format에 포함될 수 있는 여러 보안 로그 속성으로 이 변수 세트를 풍부하게 합니다. log_format이 지정되지 않으면 기본 제공 형식이 결합되어 사용되지만 해당 형식에는 확장된 App Protect 변수가 포함되지 않으므로 사용자가 로그에 App Protect 정보를 추가하려면 이 지시문을 사용해야 합니다.
1-2. access_log
이 지시문은 access_log의 대상과 포맷의 이름을 결정합니다. 기본값은 결합된 포맷을 사용하는 /etc/nginx/log/access.log 파일입니다. NGINX App Protect 변수를 포함하는 사용자 지정 포맷을 사용하려면 이 지시문을 원하는 포맷의 이름과 함께 사용합니다.
2. NGINX App Protect 변수
여기에 있는 변수들은 Access Log에 추가된 변수입니다. 이들은 Security log 속성의 하위 집합입니다. Security log 이름은 $app_protect로 접두사가 붙습니다.
| Name | Meaning |
$app_protect_support_id | App Protect가 요청에 할당한 고유 ID |
$app_protect_outcome | 다음 중 하나: ● PASSED: 요청이 원본 서버로 전송되었습니다. ● REJECTED: 요청이 차단되었습니다. |
$app_protect_outcome_reason | 다음 중 하나: ● SECURITY_WAF_OK: 위반 사항 없이 허용됨(합법적 요청). ● SECURITY_WAF_VIOLATION: 보안 위반으로 인해 차단됨. ● SECURITY_WAF_FLAGGED: 위반 사항이 있지만 허용됨(불법). ● SECURITY_WAF_BYPASS: WAF가 요청을 검사해야 했지만 검사하지 않음(사용 불가능 또는 리소스 부족으로 인해). 사용자가 결정한 실패 모드 동작에 따라 요청이 통과 또는 거부됨. ● SECURITY_WAF_REQUEST_IN_FILE_BYPASS: WAF가 요청을 검사해야 했지만 검사하지 않음(요청 버퍼가 가득차서 요청이 파일에 기록됨). 사용자가 결정한 실패 모드 동작에 따라 요청이 통과 또는 거부됨. ● SECURITY_WAF_COMPRESSED_REQUEST_BYPASS: WAF가 요청을 검사해야 했지만 검사하지 않음(요청이 압축됨으로 인해). 사용자가 결정한 실패 모드 동작에 따라 요청은 통과 또는 거부됨. |
$app_protect_policy_name | 요청을 시행한 정책의 이름입니다. |
$app_protect_version | App Protect 버전 문자열:major.minor.build 형식 |
여기에 포함되지 않은 다른 보안 로그 속성 중 다수는 access log에 사용할 수 있는 NGINX 변수와 정확히 동일하거나 유사한 유사점을 가지고 있습니다. 예를 들어, $request는 request 보안 로그 속성과 유사합니다. NGINX 변수의 전체 목록을 참조하세요.
3. 예시
http {
log_format security_waf 'request_time=$request_time client_ip=$remote_addr,'
'request="$request", status=$status,'
'waf_policy=$app_protect_policy_name, waf_request_id=$app_protect_support_id'
'waf_action=$app_protect_outcome, waf_action_reason=$app_protect_outcome_reason';
server {
location / {
access_log /etc/app_protect/logs/nginx-access.log security_waf;
...
}
}
}
NGINX App Protect를 직접 사용해보시려면 NGINX STORE에 연락하여 논의하십시오.