NGINX App Protect DDoS 에서 eBPF로 DDoS 방어 향상

DDoS 공격과의 전쟁은 계속해서 변화하고 있습니다. 2023 DDoS 공격 동향 보고서에서 분산 서비스 거부(DDoS) 공격에 대한 최근 3년간의 데이터를 분석한 결과, 공격자들이 여전히 복잡한 Multi-Vector DDoS 공격을 사용하고 있지만, 애플리케이션 계층(Layer 7) 공격으로 전환하고 있다는 사실을 발견했습니다. 2022년에만 애플리케이션 계층(Layer 7) 공격의 확산율이 165% 증가했습니다.

Diagram showing counts of DDoS attack types (volumetric, protocol, application, and multi-vector) for 2020 through 2022

애플리케이션 공격의 수가 크게 증가하고 반면에 Volumetric 및 Multi-Vector 공격은 감소한 것을 보여주는 2020-2022년 DDoS 공격 유형 집계입니다.

일반적으로 공격자는 웹사이트의 운영을 방해하거나 표적의 금전을 갈취하는 등 목표를 달성하기 위해 가장 쉬운 방안을 모색합니다. 애플리케이션 계층(Layer 7) 공격의 증가는 Volumetric 또는 프로토콜 전략만으로는 DDoS 공격을 시작하기가 점점 더 어려워지고 있으며 애플리케이션 계층(Layer 7) 공격이 더 효과적이라는 것이 입증되고 있음을 나타내는 것일 수 있습니다.

목차

1. eBF 및 XDP로 최신 앱 보호
1-1. eBPF
1-2. XDP
2. NGINX App Protect DDoS는 eBPF를 어떻게 활용할까요?
2-1. 이상 징후 감지
2-2. 동적 규칙 생성 및 적응형 학습
2-3. 규칙 시행
3. NGINX App Protect DDoS에서 eBPF 가속 완화 활성화
4. NGINX App Protect DDoS 요약

1. eBF 및 XDP로 최신 앱 보호

DDoS 공격으로부터 애플리케이션을 방어할 때는 가능한 한 발전된 기술을 활용하여 애플리케이션의 가용성과 사용자 만족도를 극대화하는 것이 중요합니다. eXpress Data Path(XDP) 기술이 적용된 extended Berkeley Packet Filter(eBPF)는 2014년부터 사용되어 왔지만, Microservices와 클라우드 네이티브 아키텍처의 채택이 증가함에 따라 개발자, SRE, 운영 커뮤니티에서 그 인기가 급증하고 있습니다.

1-1. eBPF

eBPF는 사용자가 프로그램을 안전하고 효율적으로 실행할 수 있도록 해주는 Linux 커널의 데이터 링크 Layer 가상 머신(VM)입니다. 또한 커널 Source 코드를 변경하거나 커널 모듈을 추가하지 않고도 런타임에 커널의 기능을 확장할 수 있으며, 이벤트 트리거 방식으로 Linux 호스트에서 특정 활동을 감지하여 특정 조치를 수행합니다. 이 기술은 Microservices와 최종 사용자 간의 연결 및 트랜잭션을 추적할 수 있는 기능을 통해 애플리케이션과 애플리케이션 서비스에 대한 전체 스택 가시성을 제공합니다. 사용 가능한 데이터의 범위는 매우 광범위합니다. 이 기술은 심각한 가시성 문제를 해결하고, 네트워크 트래픽 관리 및 런타임 보안 요구 사항을 분석하며, 근본적으로 효율적인 설계를 통해 컴퓨팅 비용을 절감할 수 있습니다.

1-2. XDP

XDP는 고성능 네트워킹의 이점을 제공합니다. 이를 통해 User Space 프로그램은 네트워크 패킷 데이터를 직접 읽고 쓸 수 있으며 커널 레벨에 도달하기 전에 패킷을 처리할 방법을 결정할 수 있습니다. 이 기술을 통해 개발자는 Linux 커널 내의 네트워크 장치 드라이버가 구현하는 Low‑Level Hook에 eBPF 프로그램을 연결할 수 있습니다.

2. NGINX App Protect DDoS 는 eBPF를 어떻게 활용할까요?

NGINX App Protect DoS는 고급 행동 기반 Layer 7 DDoS 방어 솔루션으로, NGINX Plus 및 NGINX Ingress Controller에서 실행되어 SlowlorisHTTP Flood와 같은 공격으로부터 HTTP 및 HTTP/2 애플리케이션을 방어합니다. 간단히 말해, NGINX App Protect DoS는 단순한 네트워크 DDoS 솔루션이 탐지할 수 없는 애플리케이션 계층 공격으로부터 애플리케이션을 보호합니다.

Diagram showing types of attacks NGINX App Protect DoS defends against

NGINX App Protect DoS는 Load Balancer 또는 API Gateway에서 NGINX Plus에 배포할 수 있으며, NGINX Ingress Controller 또는 클러스터 내부에서 Pod 별 또는 Service 별 Proxy로 배포할 수 있습니다. 또한 민첩한 DevOps를 위해 CI/CD Pipline에 “코드형 보안”으로 쉽게 통합할 수 있습니다.

NGINX App Protect DoS와 함께 사용할 경우, eBPF는 DDoS 공격 차단 성능을 크게 향상시킬 수 있습니다. 또한, NGINX App Protect DoS는 Source IP 주소로 식별되는 악의적인 공격자의 트래픽을 단독으로 또는 TLS Fingerprinting과 함께 차단하여 방어 성능을 가속화하는 Multi-Layer 솔루션의 일부로 eBPF(NGINX Ingress Controller 자체에서는 사용할 수 없습니다)를 사용합니다.

다음으로 이상 징후 감지, 동적 규칙 생성 및 적응형 학습, 그리고 규칙 시행의 세 단계에 걸쳐 NGINX App Protect DoS가 작동하는 기본 메커니즘을 살펴보겠습니다.

2-1. 이상 징후 감지

NGINX App Protect DoS는 보호되는 애플리케이션을 지속적으로 모니터링하고 머신 러닝을 사용하여 애플리케이션 및 클라이언트 동작에 대한 통계 사이트 모델을 구축합니다. 실시간으로 트래픽을 관찰하고 300개 이상의 HTTP 요청 지표를 추적하여 Activity 및 성능에 대한 지속적으로 업데이트되는 종합적인 기준을 만듭니다. 수동적으로 애플리케이션 트래픽을 모니터링하는 것 외에도 NGINX App Protect DoS는 능동적으로 애플리케이션 상태를 Health Check하고 응답 시간 및 중단된 요청과 같은 지표를 모니터링합니다.

애플리케이션이 Layer 7 DDoS 공격을 받으면 애플리케이션 응답 시간(또는 장애 발생률)이 학습된 모델에서 벗어나고 애플리케이션 보호 시스템이 트리거됩니다.

2-2. 동적 규칙 생성 및 적응형 학습

이상 징후가 감지되면 NGINX App Protect DoS는 악성 트래픽을 식별하고 차단하는 규칙을 동적으로 생성합니다. 악의적인 공격자는 차단하면서 합법적인 사용자는 애플리케이션에 액세스할 수 있도록 하기 위해 클라이언트 행동에 대한 통계적 데이터를 생성하여 공격에 기여하는지 아닌지를 식별합니다.

공격을 차단하기 위해 동적 시그니처를 배포하는 것 외에도 NGINX App Protect DoS는 지속적으로 방어 효과를 측정하고 적응형 학습을 적용하여 강력한 애플리케이션 보안을 지속적으로 제공하고 Zero‑Day 공격을 차단합니다. 공격을 유발하는 클라이언트와 요청이 식별되면 해당 트래픽을 거부하는 규칙을 생성합니다.

NGINX App Protect DoS는 다음과 같은 Multi-Layer 방어 전략을 구현합니다.

  • IP 주소 또는 TLS 지문을 기반으로 악의적인 행위자 차단
  • 공격 시그니처로 악의적 요청 차단
  • 글로벌 속도 제한 적용

이 세 가지 완화 조치는 합법적인 사용자에게 영향을 주지 않으면서 공격자를 최대한 차단할 수 있도록 점진적으로 적용됩니다. 그러나 대부분의 차단 활동은 IP 주소와 TLS Fingerprint 차단을 조합하거나 IP 주소만 차단하는 초기 단계에서 발생하는 경우가 많습니다. 다행히도 이러한 규칙 유형은 eBPF 프로그램에서 효과적으로 적용할 수 있는 정확한 규칙 유형입니다.

2-3. 규칙 시행

NGINX App Protect DoS는 생성된 규칙을 사용하여 들어오는 애플리케이션 트래픽에 적용하여 악성 요청을 차단합니다. 모든 애플리케이션 트래픽은 NGINX Plus Proxy에 의해 Backend(또는 Upstream) 애플리케이션으로 Proxy되므로 차단 규칙과 일치하는 모든 요청은 Backend 애플리케이션으로 전달되지 않고 간단히 삭제됩니다.

NGINX Plus는 고성능 Proxy이지만 공격 및 완화 규칙으로 인해 생성되는 추가 Workload가 NGINX가 실행 중인 플랫폼의 가용 리소스를 압도할 수 있습니다. 이것이 바로 eBPF가 필요한 이유입니다. IP 주소 전용 차단을 적용하거나 커널에서 IP 주소 및 TLS Fingerprint 차단과 결합하여 전송 계층( Layer 4)에서 악의적인 트래픽을 초기에 평가하고 차단할 수 있습니다. 이는 User Space에서 실행하는 NGINX가 처리하는 것보다 훨씬 효율이 높습니다.

지원되는 플랫폼에서 NGINX App Protect DoS가 Source IP 주소 또는 TLS Fingerprint를 기반으로 공격자를 차단하는 규칙을 생성하면 규칙은 네트워크 이벤트(Hook이라고 함)가 발생할 때 커널에 의해 실행되는 eBPF Bytecode 프로그램으로 컴파일됩니다. 특정 네트워크 이벤트가 규칙을 트리거하면 트래픽이 Layer 4에서 초기에 차단됩니다. 이렇게 하면 Layer 7에 도달하기 전에 DDoS 방어 성능을 향상시킬 수 있습니다. 이 Activity은 모두 커널에서 이루어지므로 매우 효율적이며 사용자 공간에서 규칙을 구현할 때보다 더 많은 트래픽을 (리소스를 소진하기 전에) 필터링할 수 있습니다.

Diagram showing how NGINX App Protect DoS invokes an eBPF-encoded rule in the kernel to repel an attacker

NGINX App Protect DoS 와 eBPF는 User Space에 도달하기 전에 커널에서 악성 트래픽을 차단하여 DDoS 방어 성능을 향상시키고 컴퓨팅 비용을 절감합니다.

3. NGINX App Protect DDoS 에서 eBPF 가속 완화 활성화

NGINX App Protect DoS 가속 완화는 다음 Linux 배포판에서 사용할 수 있습니다.

  • Alpine 3.15+
  • Debian 11+
  • RHEL 8+
  • Ubuntu 20.04+

DDoS 방어 가속화를 사용하려면 다음 단계를 따르세요.

1. eBPF가 활성화된 NGINX App Protect DoS 패키지를 설치하고 추가 작업을 수행합니다.

2. 평소와 같이 NGINX App Protect DoS를 구성합니다.

3. NGINX Plus 구성의 http{ } 블록에 다음 지시문을 추가합니다.

protect_dos_accelerated_mitigation on;

4. NGINX 구성을 Reload합니다.

$ sudo nginx -t && nginx -s reload

4. NGINX App Protect DDoS 요약

NGINX App Protect DoS의 적응형 학습 기능과 eBPF 커널 실행의 고성능 트래픽 처리 기능을 결합하면 오늘날의 Multi-Vector 및 애플리케이션 중심 DDoS 공격에 대한 향상된 기능을 갖춘 Multi-Layer의 향상된 Layer 7 DDoS 방어 전략을 제공할 수 있습니다. 또한 특정 DDoS 공격을 방어하는 데 필요한 리소스를 줄임으로써 인프라 및 컴퓨팅 비용을 절감할 수 있습니다.

NGINX Plus를 직접 사용해 보거나 테스트해 보려면 지금 30일 무료 평가판을 신청하거나 사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.