Grafana 보안 취약점 TLS 알고리즘 조치(AWS EKS)
Grafana 사용중 보안에 취약한 TLS 알고리즘을 사용으로인한 조치 권고가 있어, 해당 내용을 공유 하고자 한다
TLS 알고리즘 조치방법에는 크게 두가지가 있다.
1. Grafana 인입을 NLB로 하고 있고, NLB의 ACM 을 사용 하고 있기에 NLB 의 TLS 알고리즘을 변경하여 조치가 가능하다
2. Nginx Ingress 등을 사용하여 TLS 알고리즘 조치 가능하다(사용해본 적은 없음)
AWS 에서는 아래와 같이 보안 정책에 따라 허용되는 알고리즘을 명시해 놓았다
위 항목이 정확하게 적용이 되어 있는지 확인을 해보자
Application Load Balancer용 HTTPS 리스너 생성 - Elastic Load Balancing
Application Load Balancer에 대한 TLS 1.3 정책은 새로운 EC2 환경에서만 지원됩니다. 이전 EC2 환경을 사용하는 경우 TLS 1.3 정책을 선택할 수 없습니다.
docs.aws.amazon.com
순서 요약
1. 그라파나 repo pull
2. 그라파나 옵션 수정
3. 그라파나 설치
4. TLS 알고리즘 조회
※테스트 환경에는 LB Controller 가 설치되어 있습니다. LB 생성 전에 설치 후 진행 하시는것을 권고 드립니다
https://tistory-cloud.tistory.com/57
상세 설명
1. 그라파나 repo pull
- 아래 명령어를 사용하여 그라파나를 다운로드
helm repo add grafana https://grafana.github.io/helm-charts
helm pull https://grafana.github.io/helm-charts
2. 그라파나 옵션 수정
- 1번에서 다운로드한 repo 압축을 풀고 폴더에 들어가면, values.yaml 파일이 존재
- 해당 파일 아래와 같이 수정
##value.yaml 파일의 185번째 줄 부터 아래와 같이 수정
##194 : LB 생성될 서브넷
##196 : acm 의 arn
##197 : SSL policy
185 service:
186 enabled: true
187 type: LoadBalancer
188 port: 443
189 targetPort: 3000
190 # targetPort: 4181 To be used with a proxy extraContainer
191 ## Service annotations. Can be templated.
192 annotations:
193 service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
194 service.beta.kubernetes.io/aws-load-balancer-subnets: subnet-XXXXXX, subnet-XXXXXX
195 service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
196 service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:ap-northeast-2:XXXXXX:certificate/XXXXXX
197 service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: "ELBSecurityPolicy-TLS13-1-2-2021-06"
3. 그라파나 설치
#그라파나 설치
helm install grafana -f values.yaml ./
4. TLS 알고리즘 조회
- NLB 생성 후 DNS로 접근가능 여부 확인 후 아래 명령어 수행
nmap --script ssl-enum-ciphers [LB DNS] -p443 -unprivileged
위 결과 내용을 확인해 보면, AWS 문서에 기재된 알고리즘과 동일하다는 것을 알 수 있다.
다른 알고리즘으로 변경하여 동일한 명령어 기재하면 다양한 알고리즘이 나오게 된다.