NGINX Plus Ingress Controller 에 App Protect WAF 및 DoS 배포

NGINX Plus Ingress Controller 는 NGINX App Protect WAF 및 DoS가 포함된 이미지를 빌드할 수 있는 Makefile을 제공합니다.

이를 통해 NGINX Plus Ingress Controller의 이미지를 기반으로 NGINX App Protect WAF 및 DoS를 이미지화 할 수 있으며, 해당 이미지를 통해 NGINX Plus에 NGINX App Protect가 포함된 Ingress Controller를 구현할 수 있습니다.

목차

1. NGINX App Protect WAF 및 DoS 이미지 빌드
2. NGINX Plus Ingress Controller 에 WAF 및 DoS 배포
3. NGINX Plus Ingress Controller WAF 및 DoS 테스트

1. NGINX App Protect WAF 및 DoS 이미지 빌드

NGINX Plus Ingress Controller용 인증서를 Manifest 배포 시 Clone 했던 Git Repository의 디렉토리에 복사합니다.

make 명령어를 통해 개인 Private Registry에 있는 NGINX Plus Ingress Controller 이미지를 기반으로 NGINX App Protect WAF 및 DoS가 포함된 이미지를 Build 합니다.

make debian-image-nap-dos-plus PREFIX=264d****-kr1-registry.container.********.com/nginx-ic/nginx-plus-ingress TARGET=download 

docker images 명령어를 통해 NGINX Plus Ingress Controller의 version-SNAPSHOT 으로 Tag가 지정되어 Build 된 것을 확인할 수 있습니다.

해당 이미지를 개인 Private Registry로 Push합니다.

2. NGINX Plus Ingress Controller 에 WAF 및 DoS 배포

Kubernetes Cluster는 Private 이미지를 받아올 때, Container Registry에 인증하기 위해 kubernetes.io/dockerconfigjson 타입의 시크릿을 사용합니다.

docker login 을 수행하였다면, 이 때 생성된 자격 증명을 쿠버네티스 클러스터로 복사할 수 있습니다. 

docker config를 확인하여 docker 자격 증명을 확인합니다.

cat ~/.docker/config.json 

개인 Private Registry와 F5 Private Registry가 docker login 자격 증명에 등록되어 있는 것을 확인할 수 있습니다.

아래 명령어를 통해 nginx-ingress 네임스페이스에 K8s가 개인 Private Registry에서 이미지를 불러올 수 있도록 regcred 라는 자격증명 시크릿을 생성합니다.

kubectl create secret generic regcred \ 
    --from-file=.dockerconfigjson=/root/.docker/config.json \ 
    --type=kubernetes.io/dockerconfigjson -n nginx-ingress 

방금 생성한 regcred 시크릿의 내용을 확인하기 위하여, YAML 형식으로 시크릿을 확인할 수 있습니다. 

docker 자격 증명의 결과가 base64 형식으로 인코딩되어 Secret 형태로 저장된 것을 확인할 수 있습니다. 

해당 Secret을 통해 Private Registry에서 NGINX Plus Ingress Controller WAF 및 DoS의 이미지를 불러오고, 해당 이미지를 기반으로 NGINX Plus Ingress Controller를 WAF로 배포할 수 있습니다. 

NGINX App Protect WAF 및 DoS를 배포하기 전, 모듈을 위한 Custom Resource를 생성합니다. 

kubectl apply -f https://raw.githubusercontent.com/nginxinc/kubernetes-ingress/v3.4.0/deploy/crds-nap-waf.yaml

kubectl apply -f https://raw.githubusercontent.com/nginxinc/kubernetes-ingress/v3.4.0/deploy/crds-nap-dos.yaml 

App Protect WAF와 DoS의 ClusterRole도 함께 생성합니다. 

WAF와 DoS가 포함된 NPIC yaml을 배포합니다. 

3. NGINX Plus Ingress Controller WAF 및 DoS 테스트

커피와 차 목록을 리스트업 하는 간단한 웹 애플리케이션이 있습니다. 

App Protect WAF가 NPIC에 정상적으로 배포되었는지 확인하기 위해 사용자 정의 정책을 생성합니다. 

WAF 차단 로그를 확인하기 위해 APLogConf 유형의 로그 파일을 작성하고 배포합니다. 

웹 애플리케이션을 배포하는 Ingress yaml을 수정하여 annotation을 통해 WAF 및 WAF 정책을 적용하고, 로그 도착지를 syslog 파드로 설정합니다. 

yaml 배포 후 curl 테스트를 진행합니다  

Request 구문에 “apple” 이란 content가 들어가 있다면 Brute Force Attack으로 간주하고 차단하게 됩니다. 

kubectl exec 명령어로 syslog 파드에 전달된 App Protect WAF 차단 로그를 확인할 수 있습니다. 

App Protect DoS 보안 및 액세스 로그에 대한 syslog 서비스 및 Pod를 생성합니다. 

Security & Syslog

Access Log

App Protect DoS Protected 리소스를 생성합니다.

App Protect DoS 정책 및 로그 구성을 생성합니다.

테스트용 웹 애플리케이션에 대한 Ingress 리소스를 생성합니다. 

웹 애플리케이션에 대한 부하 테스트를 진행합니다. 

보안 로그 및 액세스 로그를 확인합니다. 

또한 NPIC App Protect DoS에 포함되어 있는 대시보드를 통해서 트래픽에 대한 시각화가 가능합니다. 

NPIC에 대한 NGINX App Protect DoS 보호가 활성화 된 것을 알 수 있습니다. 

위와 같이 NGINX Plus Ingress Controller와 모듈 형식으로 배포되는 NGINX App Protect WAF 및 DoS를 사용하면 L7 애플리케이션에 대한 보안을 확보할 수 있습니다.

NGINX Plus Ingress Controller 에 대해 자세히 알아보고 싶으신가요? 지금 NGINX STORE에 문의하여 다양한 사용 사례와 성공 사례에 대해 상담 받아보세요.

아래 뉴스레터를 구독하고 NGINX와 NGINX STORE의 최신 정보들을 빠르게 전달 받아보세요.

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

* indicates required