데이터 연결의 TLS와 에이전트 보안
Data Connection은 외부 데이터 원천에 외부 방향 TLS 연결을 만듭니다. 사용할 수 있는 암호 스위트(Cipher suite)는 환경에 따라 다르므로, 연결을 구성할 때 대상 시스템과 실행 환경이 공통으로 지원하는 암호 스위트를 확인해야 합니다.
아래 스위트는 기반 Java 버전이 지원하는 경우 사용할 수 있습니다. 실행 환경의 구성과 연결이 시작되는 위치에 따라 추가 스위트를 사용할 수도 있으며, 해당 환경의 지원 범위는 Palantir 지원팀을 통해 확인할 수 있습니다.
TLS 1.3
| IANA 이름 | OpenSSL 이름 |
|---|---|
TLS_AES_256_GCM_SHA384 | TLS_AES_256_GCM_SHA384 |
TLS_AES_128_GCM_SHA256 | TLS_AES_128_GCM_SHA256 |
TLS_CHACHA20_POLY1305_SHA256 | TLS_CHACHA20_POLY1305_SHA256 |
TLS 1.2
| IANA 이름 | OpenSSL 이름 |
|---|---|
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ECDHE-ECDSA-AES256-GCM-SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | ECDHE-ECDSA-AES128-GCM-SHA256 |
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 | ECDHE-ECDSA-CHACHA20-POLY1305 |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ECDHE-RSA-AES256-GCM-SHA384 |
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | ECDHE-RSA-CHACHA20-POLY1305 |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ECDHE-RSA-AES128-GCM-SHA256 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | DHE-RSA-AES256-GCM-SHA384 |
TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | DHE-RSA-CHACHA20-POLY1305 |
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 | DHE-DSS-AES256-GCM-SHA384 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | DHE-RSA-AES128-GCM-SHA256 |
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 | DHE-DSS-AES128-GCM-SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 | ECDHE-ECDSA-AES256-SHA384 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 | ECDHE-RSA-AES256-SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | ECDHE-ECDSA-AES128-SHA256 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ECDHE-RSA-AES128-SHA256 |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 | DHE-RSA-AES256-SHA256 |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 | DHE-DSS-AES256-SHA256 |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 | DHE-RSA-AES128-SHA256 |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 | DHE-DSS-AES128-SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA | ECDHE-ECDSA-AES256-SHA |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | ECDHE-RSA-AES256-SHA |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA | ECDHE-ECDSA-AES128-SHA |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | ECDHE-RSA-AES128-SHA |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA | DHE-RSA-AES256-SHA |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA | DHE-DSS-AES256-SHA |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA | DHE-RSA-AES128-SHA |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA | DHE-DSS-AES128-SHA |
외부 시스템과의 협상 확인
TLS 버전과 암호 스위트를 선택할 수 있는 OpenSSL로 대상 시스템의 수락 여부를 확인할 수 있습니다. 다음은 가상의 source.example.com이 443번 포트에서 서비스를 제공하는 경우의 예시입니다. 실제 호스트와 포트로 바꾸어 사용합니다.
openssl s_client -connect source.example.com:443 -tls1_3 </dev/null
TLS 1.2를 확인하려면 버전 옵션을 바꿉니다.
openssl s_client -connect source.example.com:443 -tls1_2 </dev/null
협상된 암호 스위트는 출력의 Cipher 항목에서 확인합니다. 출력 형식에 따라 SSL-Session 블록 등에 표시됩니다.
특정 스위트 하나를 시험할 때는 TLS 버전에 맞는 옵션과 이름을 사용합니다.
| TLS 버전 | 옵션 | 이름 형식 |
|---|---|---|
| 1.3 | -ciphersuites | IANA 이름 |
| 1.2 | -cipher | OpenSSL 이름 |
openssl s_client -connect source.example.com:443 -tls1_3 \
-ciphersuites 'TLS_AES_256_GCM_SHA384' </dev/null
openssl s_client -connect source.example.com:443 -tls1_2 \
-cipher 'ECDHE-RSA-AES256-GCM-SHA384' </dev/null
SSLHandshakeException에 다음 메시지가 포함되면 TLS 버전과 암호 스위트 설정이 맞는지 확인해야 합니다.
handshake_failureno cipher matchprotocol is disabled or cipher suites are inappropriate
암호 스위트가 맞지 않는 경우 외부 시스템에서 지원 목록 중 적절한 스위트를 활성화하도록 구성합니다. 소스 터미널에서도 OpenSSL을 실행할 수 있으므로, 소스가 실제로 사용하는 네트워크 경로에서 확인하는 방법을 사용할 수 있습니다.
에이전트 호스트의 취약점 검사 결과
에이전트 호스트를 검사하는 도구가 이전 버전의 에이전트나 커넥터 플러그인 파일을 취약한 파일로 보고할 수 있습니다. 이런 파일은 대체로 더 이상 로드하거나 실행하지 않는 비활성 파일입니다. 검출된 파일이 실제로 사용 중인지 현재 구성 요소의 버전과 비교하여 확인해야 합니다.
정상적인 업그레이드 과정에서도 이전 버전의 파일이 남을 수 있습니다. 교체된 버전은 호스트에 최대 30일 동안 유지된 뒤 자동으로 삭제됩니다.
CVE를 포함한 보안 문제의 수정은 새 버전으로 제공됩니다. 에이전트는 설정한 업그레이드 시간대에 사용할 수 있는 최신 버전으로 자동 갱신하므로, 각 에이전트의 업그레이드 시간대를 구성하고 버전과 취약점 검사 결과를 주기적으로 확인해야 합니다.
30일 동안의 자동 정리를 기다리지 않고 검출된 파일을 없애야 한다면, 현재 사용 중인 버전을 확인한 뒤 사용하지 않는 이전 백업, 캐시와 보관된 플러그인 버전을 제거할 수 있습니다.