NGINX Management Suite - Security Monitoring (SM) 을 통해,
NGINX App Protect 에 대해 GUI 모니터링 및 로그 확인이 가능하다.
해당 사항을 활용하기 위해서는 아래와 같은 작업이 필요하다
1. 필요 라이센스
- NGINX Plus License ( with NAP )
- NGINX Instance Manager License
2. 설정 구성
- 하단의 설정에 대해 구성이 가능하며, code 인 관계로 커스터마이징 또한 자유롭게 가능하다
NMS - SM 모니터링간 필요 항목
- 설정 변경 대상
- 모니터링 대상에 설치된 nginx-agent.conf
- 모니터링 대상의 NGINX Config (API Access / status_zone )
- 모니터링 대상의 WAF Logging
NGINX Agent 구성 - NGINX Agent 변경
/etc/nginx-agent/nginx-agent.conf 에 내용 추가
# NGINX App Protect Monitoring config nap_monitoring: # Buffer size for collector. Will contain log lines and parsed log lines collector_buffer_size: 50000 # Buffer size for processor. Will contain log lines and parsed log lines processor_buffer_size: 50000 # Syslog server IP address the collector will be listening to syslog_ip: "127.0.0.1" # Syslog server port the collector will be listening to syslog_port: 514
NGINX 설정 변경
NGINX.conf 변경
API Access Allow 설정
http { server { listen 127.0.0.1:8080; location /api { api write=on; allow 127.0.0.1; deny all; } } }
NGINX Config 설정
status_zone 명시 필요
waf log PATH : nginx-agent.conf 와 동일해야 함
location / { status_zone default_server; ## ADD app_protect_enable on; app_protect_policy_file "/etc/app_protect/conf/NginxDefaultPolicy.json"; app_protect_security_log_enable on; app_protect_security_log "/etc/app_protect/conf/log_sm.json" syslog:server=127.0.0.1:514; root /usr/share/nginx/html; index index.html index.htm; }
NGINX App Protect Log Profile 변경
NAP Logging format 생성
vi /etc/app_protect/conf/log_sm.json
{ "filter": { "request_type": "illegal" }, "content": { "format": "user-defined", "format_string": "%blocking_exception_reason%,%dest_port%,%ip_client%,%is_truncated_bool%,%method%,%policy_name%,%protocol%,%request_status%,%response_code%,%severity%,%sig_cves%,%sig_set_names%,%src_port%,%sub_violations%,%support_id%,%threat_campaign_names%,%violation_rating%,%vs_name%,%x_forwarded_for_header_value%,%outcome%,%outcome_reason%,%violations%,%violation_details%,%bot_signature_name%,%bot_category%,%bot_anomalies%,%enforced_bot_anomalies%,%client_class%,%client_application%,%client_application_version%,%transport_protocol%,%uri%,%request%", "max_request_size": "2048", "max_message_size": "5k", "list_delimiter": "::" } }
NGINX 설정 적용
Code
nginx -s reload systemctl restart nginx-agent