Vault TCP listener용 TLS 구성

Vault TCP listener용 TLS 구성

TCP listener가 특정 TLS 버전과 특정 ciphersuite를 사용하도록 구성할 수 있습니다.

출처: 문서

본문

가정

  • Vault 인스턴스가 현재 실행 중이지 않습니다. Vault 클러스터가 실행 중이라면 TCP listener에 변경 사항을 적용하려면 클러스터를 정상적으로 다시 시작해야 합니다. SIGHUP은 TLS 구성을 리로드하지 않습니다.
  • 유효한 TLS 인증서 파일이 있습니다.
  • 유효한 TLS 키 파일이 있습니다.
  • 유효한 CA 파일이 있습니다(필요한 경우).

TLS 1.3 구성 예시

상당히 현대적인 클라이언트 집합이 Vault 인스턴스에 연결한다면 tls_min_version 파라미터로 tcp listener 스탠자를 TLS 1.3만 허용하도록 구성할 수 있습니다:

listener "tcp" {
  address = "127.0.0.1:8200"
  tls_cert_file = "cert.pem"
  tls_key_file  = "key.pem"
  tls_min_version = "tls13"
}

Vault는 TLS 1.3에 대한 명시적 ciphersuite 구성을 허용하지 않습니다. Go 팀이 현대 TLS 구성을 위한 널리 수용되는 Mozilla Security/Server Side TLS 지침에 부합하는 선택된 암호 집합을 이미 지정했기 때문입니다.

TLS 1.2 구성 예시

비기본 ciphersuite 집합으로 TLS 1.2를 사용하려면 최소 및 최대 허용 TLS 버전으로 1.2를 설정하고 tls_ciper_suites와 ciphersuite 구성 파서의 하나 이상의 ciphersuite 상수로 선호하는 ciphersuite를 명시적으로 정의할 수 있습니다. 예를 들어:

listener "tcp" {
  address = "127.0.0.1:8200"
  tls_cert_file = "cert.pem"
  tls_key_file  = "key.pem"
  tls_min_version = "tls12"
  tls_max_version = "tls12"
  tls_cipher_suites = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"
}

명시적 암호 선택을 지원하지 않는 TLS 1.3을 비활성화하려면 최소 및 최대 TLS 버전을 설정해야 합니다. tls_cipher_suites에서 ciphersuite의 우선순위 순서는 tls Go 패키지가 결정합니다.

참고 TLS 1.2 구성 예시는 Sweet32 공격(CVE-2016-2183)에 잠재적으로 노출되는 것을 피하기 위해 3DES ciphers를 제외합니다. 환경별 보안 요구 사항을 충족하도록 필요에 따라 ciphersuite 목록을 사용자 지정해야 합니다.

TLS 구성 확인

sslscan 같은 SSL 스캐너로 TLS 구성을 확인할 수 있습니다.

$ sslscan 127.0.0.1:8200
Version: 2.1.3
OpenSSL 3.2.1 30 Jan 2024

Connected to 127.0.0.1

Testing SSL server 127.0.0.1 on port 8200 using SNI name 127.0.0.1

  SSL/TLS Protocols:
SSLv2     disabled
SSLv3     disabled
TLSv1.0   disabled
TLSv1.1   disabled
TLSv1.2   enabled
TLSv1.3   enabled

  TLS Fallback SCSV:
Server supports TLS Fallback SCSV

  TLS renegotiation:
Session renegotiation not supported

  TLS Compression:
Compression disabled

  Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.3  128 bits  TLS_AES_128_GCM_SHA256        Curve 25519 DHE 253
Accepted  TLSv1.3  256 bits  TLS_AES_256_GCM_SHA384        Curve 25519 DHE 253
Accepted  TLSv1.3  256 bits  TLS_CHACHA20_POLY1305_SHA256  Curve 25519 DHE 253
Preferred TLSv1.2  128 bits  ECDHE-ECDSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-ECDSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-ECDSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-ECDSA-AES128-SHA        Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-ECDSA-AES256-SHA        Curve 25519 DHE 253

  Server Key Exchange Group(s):
TLSv1.3  128 bits  secp256r1 (NIST P-256)
TLSv1.3  192 bits  secp384r1 (NIST P-384)
TLSv1.3  260 bits  secp521r1 (NIST P-521)
TLSv1.3  128 bits  x25519
TLSv1.2  128 bits  secp256r1 (NIST P-256)
TLSv1.2  192 bits  secp384r1 (NIST P-384)
TLSv1.2  260 bits  secp521r1 (NIST P-521)
TLSv1.2  128 bits  x25519

  SSL Certificate:
Signature Algorithm: ecdsa-with-SHA256
ECC Curve Name:      prime256v1
ECC Key Strength:    128

Subject:  localhost
Issuer:   localhost

Not valid before: May 17 17:27:29 2024 GMT
Not valid after:  Jun 16 17:27:29 2024 GMT
sslscan 127.0.0.1:8200
Testing SSL server 127.0.0.1 on port 8200 using SNI name 127.0.0.1

  SSL/TLS Protocols:
SSLv2     disabled
SSLv3     disabled
TLSv1.0   disabled
TLSv1.1   disabled
TLSv1.2   enabled
TLSv1.3   enabled

  Supported Server Cipher(s):
Preferred TLSv1.3  128 bits  TLS_AES_128_GCM_SHA256        Curve 25519 DHE 253
Accepted  TLSv1.3  256 bits  TLS_AES_256_GCM_SHA384        Curve 25519 DHE 253
Accepted  TLSv1.3  256 bits  TLS_CHACHA20_POLY1305_SHA256  Curve 25519 DHE 253
Preferred TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-CHACHA20-POLY1305   Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA          Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  AES128-GCM-SHA256
Accepted  TLSv1.2  256 bits  AES256-GCM-SHA384
Accepted  TLSv1.2  128 bits  AES128-SHA
Accepted  TLSv1.2  256 bits  AES256-SHA
Accepted  TLSv1.2  112 bits  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Accepted  TLSv1.2  112 bits  TLS_RSA_WITH_3DES_EDE_CBC_SHA

  Server Key Exchange Group(s):
TLSv1.3  128 bits  secp256r1 (NIST P-256)
TLSv1.3  192 bits  secp384r1 (NIST P-384)
TLSv1.3  260 bits  secp521r1 (NIST P-521)
TLSv1.3  128 bits  x25519
TLSv1.2  128 bits  secp256r1 (NIST P-256)
TLSv1.2  192 bits  secp384r1 (NIST P-384)
TLSv1.2  260 bits  secp521r1 (NIST P-521)
TLSv1.2  128 bits  x25519

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    4096

더 알아보기