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의 최신 정보들을 빠르게 전달 받아보세요.
댓글을 달려면 로그인해야 합니다.