Grafana, Keycloak

Grafana 보안 취약점 TLS 알고리즘 조치(AWS EKS)

yechan93 2023. 9. 29. 16:20

Grafana 사용중 보안에 취약한 TLS 알고리즘을 사용으로인한 조치 권고가 있어, 해당 내용을 공유 하고자 한다

 

TLS 알고리즘 조치방법에는 크게 두가지가 있다.

1. Grafana 인입을 NLB로 하고 있고, NLB의 ACM 을 사용 하고 있기에 NLB 의 TLS 알고리즘을 변경하여 조치가 가능하다

2. Nginx Ingress 등을 사용하여 TLS 알고리즘 조치 가능하다(사용해본 적은 없음)

 


 

AWS 에서는 아래와 같이 보안 정책에 따라 허용되는 알고리즘을 명시해 놓았다

위 항목이 정확하게 적용이 되어 있는지 확인을 해보자

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/create-https-listener.html#tls13-security-policies

 

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 문서에 기재된 알고리즘과 동일하다는 것을 알 수 있다.

다른 알고리즘으로 변경하여 동일한 명령어 기재하면 다양한 알고리즘이 나오게 된다.