IP intelligence – F5 WAF for NGINX 활용 악성 IP 차단 구성 가이드

최근 웹 애플리케이션 공격은 단순한 취약점 스캐닝을 넘어, 악성 IP 주소를 활용한 자동화된 공격 시도로 발전하고 있습니다. 이러한 위협을 사전에 차단하기 위해 F5 WAF for NGINX는 IP intelligence 기능을 제공합니다.

IP intelligence는 전 세계적으로 수집된 IP 평판 데이터(IP reputation data)를 기반으로 봇, 스팸, 스캐너, 프록시, Tor 네트워크 등과 관련된 트래픽을 자동으로 탐지 및 차단하는 기능입니다.

이 평판 데이터는 BrightCloud Threat Intelligence 서비스에서 주기적으로 갱신되며, F5 WAF for NGINX는 vector.brightcloud.com에 연결하여 최신 IP 평판 정보를 동기화 합니다.

BrightCloud에서 제공하는 IP intelligence 데이터는 IP 주소를 다음과 같은 카테고리로 분류합니다. F5 WAF for NGINX 정책 구성을 통해 각 카테고리별 차단 또는 알림 정책을 선택적으로 적용할 수 있습니다.

  • Anonymous Proxy
  • BotNets
  • Cloud-based Services
  • Denial of Service
  • Infected Sources
  • Mobile Threats
  • Phishing Proxies
  • Scanners
  • Spam Sources
  • Tor Proxies
  • Web Attacks
  • Windows Exploits

목차

1. 환경 및 버전 정보
2. F5 WAF for NGINX IP intelligence 사전 준비
3. IP intelligence 정책 구성 및 적용
4. IP intelligence 정책 적용 확인
5. 결론

1. 환경 및 버전 정보

구성 요소버전
OSUbuntu 24.04.3
NGINX PlusR35
F5 WAF for NGINX5.9.0
NGINX Instance Manager2.20.0

2. F5 WAF for NGINX IP intelligence 사전 준비

F5 WAF for NGINX의 IP intelligence 기능은 기본적으로 비활성화 되어있으며, 사용을 위해 다음과 같은 준비가 필요합니다.

  • NGINX 호스트가 인터넷에 연결되어야 합니다.
  • 호스트는 443 포트를 통해 vector.brightcloud.com에 연결할 수 있어야 합니다.

위 연결을 통해 IP 데이터를 업데이트하며, 매 1분마다 업데이트 됩니다.

IP intelligence 기능을 사용하기 위해 패키지 설치(VM/베어메탈) 혹은 컨테이너 추가(Docker)가 필요합니다.

VM/베어메탈 환경

1. app-protect-ip-intelligence 패키지를 설치합니다.

$ sudo apt install app-protect-ip-intelligence

2. 패키지가 설치되면 클라이언트를 실행합니다.

$ /opt/app_protect/bin/iprepd /etc/app_protect/tools/iprepd.cfg > ipi.log 2>&1 &

3. 로그를 확인하여 데이터를 다운받는 것을 확인할 수 있습니다.

$ tail -f iprepd.log

2025-10-15 00:20:47 INFO: Initializing SDK 5.37.1
2025-10-15 00:20:47 INFO: Proxy server disabled in configuration
2025-10-15 00:20:47 INFO: Auto-detected IPv4 for TCP connections
2025-10-15 00:20:47 INFO: Auto-detected IPv4 for TCP connections
2025-10-15 00:20:48 INFO: Downloading local database wr_ip_All_1_6639.txt
2025-10-15 00:20:48 INFO: Downloading local database wr_ipv6_All_1_5129.txt
Docker 환경

1. 신규 디렉터리를 생성합니다.

$ sudo mkdir -p /var/IpRep

2. 생성한 디렉터리의 소유권을 변경합니다.

$ sudo chown -R 101:101 /var/IpRep

3. docker-compose.yaml 파일에 신규 컨테이너와 관련 설정을 추가합니다.
waf-enforcer 컨테이너에도 생성한 디렉터리의 마운트 설정을 추가합니다.

services:
  waf-enforcer:
    container_name: waf-enforcer
    image: waf-enforcer:5.9.0
    environment:
      - ENFORCER_PORT=50000
    ports:
      - "50000:50000"
    volumes:
      - /opt/app_protect/bd_config:/opt/app_protect/bd_config
      - /var/IpRep:/var/IpRep
    networks:
      - waf_network
    restart: always
    depends_on:
      - waf-ip-intelligence

  waf-config-mgr:
    container_name: waf-config-mgr
    image: waf-config-mgr:5.9.0
    volumes:
      - /opt/app_protect/bd_config:/opt/app_protect/bd_config
      - /opt/app_protect/config:/opt/app_protect/config
      - /etc/app_protect/conf:/etc/app_protect/conf
    restart: always
    network_mode: none
    depends_on:
      waf-enforcer:
        condition: service_started

  waf-ip-intelligence:
    container_name: waf-ip-intelligence
    image: waf-ip-intelligence:5.9.0
    volumes:
      - /var/IpRep:/var/IpRep
    networks:
      - waf_network
    restart: always

networks:
  waf_network:
    driver: bridge

3. IP intelligence 정책 구성 및 적용

F5 WAF for NGINX의 IP intelligence 기능을 정책 파일에서 활성화 하려면 아래 설정을 추가합니다.

  • violation 리스트에 "name": "VIOL_MALICIOUS_IP" 설정 추가.
  • ip-intelligence 섹션에 "enabled": true 설정 추가.

아래 예제 정책 파일은 IP intelligence의 모든 카테고리에 대해 차단 및 알림 구성을 활성화 한 정책입니다.

ip_policy.json
{
    "policy": {
        "name": "ip_intelligence_policy",
        "template": {
            "name": "POLICY_TEMPLATE_NGINX_BASE"
        },
        "applicationLanguage": "utf-8",
        "caseInsensitive": false,
        "enforcementMode": "blocking",  # 차단 모드 동작
        "blocking-settings": {
            "violations": [
                {
                    "name": "VIOL_MALICIOUS_IP",
                    "alarm": true,
                    "block": true
                }
            ]
        },
        "ip-intelligence": {
            "enabled": true,
            "ipIntelligenceCategories": [
                {
                    "category": "Anonymous Proxy",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "BotNets",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Cloud-based Services",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Denial of Service",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Infected Sources",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Mobile Threats",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Phishing Proxies",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Scanners",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Spam Sources",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Tor Proxies",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Web Attacks",
                    "alarm": true,
                    "block": true
                },
                {
                    "category": "Windows Exploits",
                    "alarm": true,
                    "block": true
                }
            ]
        }
    }
}

필요에 따라 카테고리별 알림, 차단 동작 방식을 변경하여 적용합니다.

앞서 구성한 정책을 F5 WAF for NGINX를 통해 적용하기 위해 NGINX의 설정 파일에 다음과 같이 정책 파일을 참조하는 설정을 추가합니다.
필요에 따라 F5 WAF for NGINX의 보안 로그 설정을 추가할 수 있습니다.

upstream juiceshop {
    server 192.168.40.220:3000;

    keepalive 16;
}

server {
    listen 443 ssl;
    server_name devopssong.nginxstore.kr;

...

    # F5 WAF for NGINX 활성화
    app_protect_enable on; 
    app_protect_policy_file /etc/app_protect/conf/ip_policy.json; # 적용할 정책 파일 지정

    # 보안 로그 활성화
    app_protect_security_log_enable on;
    app_protect_security_log /etc/app_protect/conf/log_default.json /var/log/nginx/waf.log;
    app_protect_security_log /etc/app_protect/conf/log_sm.json syslog:server=192.168.40.225:514;

    location / {
        proxy_pass  http://juiceshop;
    }

}

4. IP intelligence 정책 적용 확인

정책 적용 확인을 위해 크롬 브라우저와 Tor 브라우저를 사용하여 웹 페이지에 연결하고, Tor 브라우저로 접속 시 차단되는 것을 NGINX Instance Manager의 Security Monitoring 대시보드를 통해 확인하겠습니다.

크롬 브라우저에서 앞서 구성한 정책이 적용된 도메인으로 접속합니다.

정상적으로 접속되는 것을 확인할 수 있습니다.

Tor 브라우저에서 동일한 도메인으로 접속합니다.

IP intelligence 정책으로 인한 단

Tor 브라우저를 통한 연결이 차단됨을 확인할 수 있습니다.


URL 입력란 좌측의 선 모양 아이콘을 클릭하여 Tor 브라우저에서 연결 정보를 확인했습니다.

NGINX Instance Manager에서 화면에 표시된 support ID로 요청 정보를 확인합니다.

IP intelligence 정책으로 인한 차단 요청 정보
IP intelligence 정책으로 인한 차단 요청 정보
IP intelligence 정책으로 인한 차단 요청 정보

Tor 회로에서 확인된 오스트리아 IP(109.70.100.70)가 앞서 구성한 정책으로 인해 malicious IP로 차단된 것을 확인할 수 있습니다.
화면 하단의 Additional Details 항목을 통해 Security Log로 기록되는 차단된 요청의 세부 내용을 확인할 수도 있습니다.

5. 결론

이번 포스트에서는 F5 WAF for NGINX의 IP intelligence 기능을 활용하여 악성 IP 기반의 접근을 자동으로 차단하도록 정책을 구성하는 방법과, 실제로 Tor 브라우저로 접속하여 요청이 차단되는 것을 살펴보았습니다.

IP intelligence는 BrightCloud Threat Intelligence 데이터(vector.brightcloud.com)를 통해 전 세계적으로 수집된 IP 평판 정보를 실시간으로 업데이트하며, 이를 기반으로 봇넷, 스캐너, 프록시, Tor 네트워크, 스팸 소스 등 다양한 유형의 악성 트래픽을 정책 수준에서 자동 차단할 수 있습니다.

F5 WAF for NGINX를 통해 수동으로 IP를 관리할 필요 없이, 지속적으로 악성 IP를 업데이트 하고, 정책을 통해 차단 및 알림 구성을 할 수 있습니다.

운영 중인 서비스에 악성 클라이언트로부터의 요청 차단과 같은 WAF 기능이 필요하신가요? NGINX STORE를 통해 문의하여 무료로 NGINX One trial을 통해 F5 WAF for NGINX를 체험해 보세요.

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

* indicates required