WAF 통합된 심플한 NGINX Plus 사용해보셨나요?

이 포스트에서는 WAF (Wallarm Web Application Firewall)를 설치하여 많은 종류의 Layer 7 공격으로부터 NGINX와 설치를 보호하는 방법을 간단하게 알아보겠습니다.

목차

1. 왜 WAF 인가?
2. NGINX Plus로 Wallarm 배포
3. Wallarm WAF 설치
4. 애플리케이션 보호 테스트

1. 왜 WAF 인가?

NGINX Plus와 같은 고성능 애플리케이션 서버를 기반으로 애플리케이션을 개발하는 경우, 특히 웹 애플리케이션이 회사 경계 외부의 요청을 수락하는 경우 보안 영향을 고려해야 합니다.

WAF (웹 애플리케이션 방화벽)는 애플리케이션 자체에 초점을 맞춘 보안 모듈로, 웹 애플리케이션과 기본 데이터를 모두 보호하기 위해 고도로 세분화되고 사용자 정의 가능한 로직을 제공합니다. 예를 들어 WAF 가 보호하는 많은 취약성은 많은 웹 애플리케이션에서 공통적입니다. 이러한 유형의 취약점은 OWASP(Open Web Application Security Project)에 잘 설명되어 있으며 SQL Injection, cross-site scripting, 필드/쿠키 유효성 검사 등을 포함합니다.

Wallarm WAF 와 NGINX Plus는 함께 Layer 3 로드 밸런싱, 공격 차단, SSL 종료, 로드 밸런싱, 동적 확장성, 상태 모니터링 및 keepalive 최적화를 제공합니다.

NGINX Plus와 WAF 를 함께 사용하면:

  • Layer 7 에서 트래픽 검사
  • OWASP 취약점으로부터 웹 애플리케이션 보호
  • 웹 애플리케이션에 특정한 서명 기반 보안 규칙으로 구성 가능

대부분의 레거시 WAF 와 마찬가지로 Wallarm은 Layer 7에서 트래픽을 검사하고 OWASP Top 10으로부터 보호합니다.

레거시 WAF 와 달리 Wallarm은 서명에 의존하지 않고 대신 머신 러닝과 AI를 사용하여 중첩된 애플리케이션 API를 이해하고 애플리케이션 로직을 학습하며 “정상적인” 페이로드를 나타내는 항목에 대한 경계를 설정합니다. 이는 Wallarm 보안 규칙이 추가 수동 구성 없이 자동화되고 각 애플리케이션에 맞게 사용자 지정됨을 의미합니다.

더 나아가 Wallarm 기능에는 사전 위협 검증이 포함됩니다. Wallarm은 애플리케이션에 대한 모든 공격을 테스트하여 애플리케이션 내에 일치하는 취약점이 있기 때문에 익스플로잇이 발생할 수 있는지 확인합니다. 효과적으로 Wallarm은 WAF 와 DAST(Dynamic Application Security Testing) 기능을 결합합니다.

2. NGINX Plus로 Wallarm 배포

WAF 가 작동하는지 확인하려면 보안 모듈이 애플리케이션 트래픽에 대해 인라인 상태여야 합니다. 문제가 되는 경우 비차단 모니터링 모드일 수 있습니다. 최신 웹 애플리케이션과 함께 WAF 를 설치하는 두 가지 방법이 있습니다. 애플리케이션 서버에서 바로 첫 번째 Layer 또는 마지막 마일에 설치하는 것입니다.

첫 번째 Layer는 부하 분산 Layer의 일부로 WAF 가 설치되어 있음을 의미합니다. 이것은 NGINX Plus를 로드 밸런서로 사용하는 경우 잘 작동합니다. 또는 WAF 를 애플리케이션 서버에 직접 설치할 수 있습니다. 이는 개발자가 내부에 사전 설치된 WAF 가 있는 Docker와 같은 컨테이너를 사용하여 앱을 배포하는 환경에서 보안 또는 보호 컨테이너라고도 합니다. 후자의 옵션은 소프트웨어 WAF 에서만 사용할 수 있습니다. 이것은 NGINX Plus가 애플리케이션 서버로 사용될 때 잘 작동할 수 있습니다.

Wallarm은 NGINX에서 인증한 동적 소프트웨어 모듈로 NGINX 또는 NGINX Plus의 인스턴스에 바로 설치되므로 배포 모델 중 하나에 완벽하게 맞습니다.

3. Wallarm WAF 설치

전제 조건

  • 64비트 시스템
  • 지원되는 Linux 배포판 중 하나(다음 설치 지침에서는 Ubuntu를 예로 사용)
  • root 권한 또는 sudo를 통한 동등한 액세스
  • 유효한 Wallarm 라이센스 키
  • 새 노드를 추가할 권한이 있는 Wallarm 계정
  • 시스템에 설치된 NGINX Plus

Wallarm WAF 설치하려면:

1. 저장소를 추가합니다.

설치 패키지가 저장된 위치에 Wallarm 노드 리포지토리를 추가합니다. 다음 명령은 Ubuntu에서 진행하였습니다.

$ apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
$ echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node trusty/' > /etc/apt/sources.list.d/wallarm.list
$ apt-get update

2. 패키지를 설치합니다.

동일한 서버에 다음 두 패키지를 설치하여 기본 처리 및 사후 분석 하위 시스템을 활성화합니다.

  • NGINX 모듈
  • Post‑analytics 모듈
$ apt-get install --no-install-recommends wallarm-node-nginx nginx-plus-module-wallarm

애플리케이션 API 트래픽 양이 많은 경우 별도의 서버에 사후 분석 모듈을 설치하는 것이 더 나을 수 있습니다.

3. Wallarm 라이선스 키를 설치합니다.

Wallarm은 계정에 지정된 이메일 주소로 라이센스 키를 보냅니다. 키 내용을 /etc/wallarm/license.key에 복사하고 파일에 대한 액세스 권한을 설정합니다.

$ chmod 0640 /etc/wallarm/license.key
$ chown root:wallarm /etc/wallarm/license.key

4. 필터 노드를 Wallarm 클라우드에 연결합니다.

필터 노드는 Wallarm 클라우드와 상호 작용하여 보안 규칙을 업데이트하고 다양한 메트릭과 공격 데이터를 보냅니다. 서버와의 통신을 시작하려면 addnode 스크립트를 실행하십시오.

$ /usr/share/wallarm-common/addnode

스크립트가 시작되면 https://my.wallarm.com을 입력하기 위해 사용자 이름과 암호를 묻습니다. 계정에 새 필터 노드를 만들 수 있는 권한이 있어야 하며 그렇지 않은 경우 오류 메시지가 나타납니다.

5. API 액세스를 활성화합니다.

Wallarm 클라우드와 상호 작용하려면 필터 노드에 api.wallarm.com의 포트 444에 대한 액세스 권한이 있어야 합니다. 액세스를 차단하는 방화벽 설정이 없는지 확인하십시오.

6. post-analytics 모듈을 구성합니다.

필요한 경우 사후 분석 모듈의 매개변수를 수정할 수 있습니다.

$ vi /etc/default/wallarm-tarantool

SLAB_ALLOC_ARENA=1

$ systemctl restart wallarm-tarantool

7. 필터링 모드를 설정합니다.

/etc/nginx/conf.d/wallarm.conf 파일에서 wallarm_mode의 주석을 제거하여 이 예와 같이 여과를 설정합니다.

/etc/nginx/conf.d/wallarm.conf
#
# Wallarm module specific parameters
#

wallarm_mode monitoring;
# wallarm_mode_allow_override on;

# ...

필요한 경우 각 가상 서버에 대해 별도로 wallarm_mode를 구성할 수 있습니다.

설정이 완료되었습니다. 이제 웹 애플리케이션이 Wallarm WAF 로 보호됩니다.

4. 애플리케이션 보호 테스트

WAF 를 통해 애플리케이션이 얼마나 잘 보호되는지 테스트하기 위해 보안 테스트를 수동으로 작성하고 일반적인 애플리케이션 악용을 시도할 수 있습니다.

XSS 및 “페이지를 찾을 수 없음” 오류를 포함한 많은 예가 OWASP 웹 사이트에 설명되어 있습니다.

http://my.wallarm.com에서 계정에 로그인하고 취약성 탭에 액세스할 수도 있습니다. 다음 예는 Wallarm DAST 구성 요소의 초기 결과를 보여줍니다. 여기에서 Wallarm은 다른 Wallarm 고객이 본 잘 알려진 취약성에 대해 애플리케이션을 테스트했습니다.

NGINX Plus를 사용해 보려면 지금 무료 30일 평가판을 시작하거나 당사에 연락하여 사용 사례에 대해 논의하십시오.

사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.