OKD 에서 TLS 버전 제한하기

유진세·2022년 2월 22일
0

현재 사용하고 있는 OKD 4.7 에서 TLS 버전 취약점이 확인되었다.
쿠버네티스를 잘 모르다보니...ㅠㅠ....
까먹지 않기 위해 써둔다.

우선 2가지를 확인해야함.

  1. Ingress Controller
  2. Control Plane

관리하는 클러스터에서는 희안하게 내부에서 접근은 TLS 1.2 이상만 접근되는데
외부에서 접근하는 경우에는 1.0 / 1.1 도 접근이 되고 있었다.

# 확인 방법 참고
openssl s_client domain:port -tls1_1

멘탈이 나갈 때쯤 내부하고 외부하고 접근하는 곳이 다르다는 걸 알 수 있었다.
외부에서는 Ingress Controller 통해서 접근하고 있고
내부에서는 Api Server (Control Plane) 으로 접근 하는 것이었다.

먼저 Ingress Controller 의 설정을 보자
특별히 분리하지 않았다면 default 란 이름으로 있을 것이다.

$ oc edit IngressController default -n openshift-ingress-operator
apiVersion: operator.openshift.io/v1
kind: IngressController
 ...
spec:
  tlsSecurityProfile:
    type: Custom 
    custom: 
      ciphers: 
      - ECDHE-ECDSA-CHACHA20-POLY1305
      - ECDHE-RSA-CHACHA20-POLY1305
      - ECDHE-RSA-AES128-GCM-SHA256
      - ECDHE-ECDSA-AES128-GCM-SHA256
      minTLSVersion: VersionTLS11

여기서 type 은 3가지가 있는데 이걸 미주알 고주알 쓰는건 솔직히
Redhat 더 잘 나와있음;;; 링크로 대신 하겠다.
레드햇 고객 포털 링크

우리 사이트 같은 경우에는 minTLSVersion을 TLS12 라고 써뒀는데 이상하게 안먹었다.
그런데 ciphers: 에 1.0 ~ 1.1 이 가지고 있는 cipher 를 모두 넣어둔게 문제인듯 했다.
그러니 Version 만 믿지말고 cipher 종류를 꼭 확인하자.

귀찮아 지기 시작했다....나만 볼려고 써두는건데.....라고 생각하지만 조금 더 써보겠다.

두번째인 api server 같은 경우에는 아무것도 입력되어 있지 않았다.
이러한 경우에는 위에서 언급했던 type 중 intermediate 에 해당한다고 한다.
이건 1.2 버전 부터 지원하도록 기본 셋팅 되어 있는 값이다.

따라서 우리 사이트는 외부 접근은 ingress controller 를 통해 들어와서
1.0 부터 허용되었고
내부 접근은 api server 통한 접근이어서 1.2 부터 허용된 것이었다.

공부를 해야하니 너무 힘들다...다음 생에는 건물주로 태어나고 싶다.
그럼 이만.....

아...덤으로 4.7 에서는 api server 가 tls 1.3 을 지원하지 않는다고 한다.
제발 1.2 는 오래 가자....ㅠ ㅠ...

0개의 댓글