server

TLS / SSL 지원버전 변경 전 확인사항

먀체도 2023. 6. 3. 20:56
반응형

보안 문제로 프로토콜 버전을 변경해야 하는 경우가 있다. 보안 등급이 낮다고 해서 무턱대고 버전을 변경했다가는 클라이언트 측에서 갑작스럽게 서비스 사용이 불가하여 장애 상황이 발생할 수 있다. 현재 지원되는 버전, 서비스 종류, 요청 유형 등을 파악해서 변경 계획을 세우도록 하자.

 

1. 서비스의 지원 프로토콜 버전과 암호방식이 무엇인지 확인한다.

1.1. 웹사이트에서 확인 

https://www.ssllabs.com/ssltest/index.html

공개된 도메인이라면 위 사이트에서 조회할 수 있다.

 

테스트 삼아 tistory.com의 지원 버전을 조회해 봤다.

프로토콜과 지원 알고리즘 정보들이 표시가 된다. 대충 TLS1.0~ 1.2까지 지원을 하고 있구나, 정도만 이해하면 된다. TLS1.0,1.1등은 최신 브라우저에서는 지원하지 않는 경우가 대부분일 것이기 때문에 TLS1.2 버전 지원은 필수다. 

 

1.2 Prompt로 확인하기 - nmap사용

네트워크가 차단된 환경에서는 위에서 알려준 웹사이트로 확인할 수 없다.

대신 nmap 사용하면 마찬가지로 프로토콜 버전/ 알고리즘 등을 확인할 수 있다.

커멘드는 아래와 같다.

nmap --script ssl-enum-ciphers -p[port] [domain]
nmap --script ssl-enum-ciphers -p443 tistory.com​

 

조회 결과

Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-03 20:33 대한민국 표준시
Nmap scan report for tistory.com (211.249.221.185)
Host is up (0.0030s latency).
Other addresses for tistory.com (not scanned): 121.53.105.234

PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers: 
|   TLSv1.0: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
....
|     compressors: 
|       NULL
|     cipher preference: server
|   TLSv1.1: 
|     ciphers:
...
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: server
|   TLSv1.2: 
|     ciphers: 
...
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: server
|_  least strength: A

Nmap done: 1 IP address (1 host up) scanned in 2.20 seconds

가시성은 떨어지지만 정보확인이 가능하다.

1.2. 부록 1. namp - port open 여부까지만 나오는 경우

아래처럼 제대로 조회가 안 경우도 있는데

Starting Nmap 6.40 ( http://nmap.org ) at 2023-06-02 18:12 KST
Nmap scan report for domain(IP)
Host is up (0.000027s latency).
PORT     STATE SERVICE
9999 /tcp open  tungsten-https

ssl-enum-ciphers 앞에 (플러스) + 를 추가하거나 -sV를 추가해 보자

 NSE (Nmap Script Engine)는 불필요한 트래픽을 많이 발생시킬 수 있어, 기본적 옵션으로는 수행되는 포트가 제한적이다. 최적의 포트를  추측하여 요청하는데, 전통적으로 SSL/TLS에서 사용하는 약 15개의 포트(예를 들어, 443 992~995 포트 등이 있음)가 기준이 되는 듯하다.

nmap --script +ssl-enum-ciphers -p443 tistory.com
nmap -sV --script ssl-enum-ciphers -p443 tistory.com

1.2. 부록 2. 도움말 보기

기본적인 매뉴얼은 help command로 확인할 수 있다.

nmap --script-help "*ssl-enum-ciphers*"

 

2.  액세스 로그를 확인하여 보안 레벨을 조정해도 문제가 없을지 판단한다.

remote addr, agent protocol version, suite cipher 등의 정보를 엑세스 로그파일에 logging 하여, 클라이언트의 요청정보를 판단 후 작업해야 한다. 

# nginx configuration - 로그 포맷 옵션
log_format sslparams '$ssl_protocol $ssl_cipher '
                  '$remote_addr "$http_user_agent"';

 

오래된 브라우저를 사용하는 경우가 많던가 (단말기가 오래된 경우), 업그레이드된 지 오래된 서버를 운용하는 클라이언트 측에서 요청이 다수 들어오고 있는 것이 확인된다면, 작업을 보류하던가 고객에게 안내 후 진행을 해야 할 것이다.

 

Reference

https://nmap.org/nsedoc/scripts/ssl-enum-ciphers.html#output

https://github.com/nmap/nmap/issues/168

https://docs.nginx.com/nginx/admin-guide/monitoring/logging/

 

Configuring Logging | NGINX Documentation

Configuring Logging Capture detailed information about errors and request processing in log files, either locally or via syslog. This article describes how to configure logging of errors and processed requests in NGINX Open Source and NGINX Plus. Setting

docs.nginx.com

 

반응형

'server' 카테고리의 다른 글

자주 사용하는 linux , vim command  (0) 2022.07.28
서버 및 JVM의 메모리 상태 체크  (0) 2022.01.12