TLS SSL 프로토콜 차단
TLS란 Transport Layer Security의 약자로 인터넷 통신 시 보안을 제공하는 프로토콜이다.
더 안전한 통신을 위해 SSL에 더불어 HTTPS 통신에 사용되는 보안 수단이다.
TLS에는 여러 프로토콜이 있으며, 허용/처단을 통해 안전한 웹 통신을 제공한다.
대표적으로 SSLabs로 사이트를 점검해 보면 안전하거나 위험한 TLS 리스트를 알려준다.
그럼 서버에서 위험한 프로토콜을 차단하여 보안 등급을 높일 수 있다.
현재는 TLS 1.3이 가장 안전하며, 1.2 미만은 되도록이면 전부 차단하는 게 좋다.
또한 SSL 프로콜은 전부 차단하면 된다.
TLS 1.2 미만 프로토콜 차단 방법
위도우 키 > regedit 입력 후 레지스트리 편집에서 아래 경로로 이동한다.
경로 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

Protocols 폴더 마우스 우클릭한 뒤
새로 만들기 > 키를 선택하면 새로운 폴더가 만들어진다.

예를 들어 SSL 2.0을 차단하고 싶다면,
폴더 명을 SSL 2.0 으로 입력한다.

다시 위의 방법으로 SSL 2.0 밑에 Server 라는 명칭의 폴더를 만든다.

Server 폴더 우클릭 후 새로 만들기 > DWORD(32비트) 값(D)을 클릭한다.

단위는 16진수로 설정하고, 명칭은 DisabledByDefault 값 데이터는 1을 입력한다.
이 설정은 디폴트로 차단하겠다는 의미이며, 0을 입력하면 차단이 아님을 의미한다.

그럼 아래와 같이 새로운 레지스터리 설정 값들이 나타난다.
같은 방법으로 값 이름을 Enable로 등록하고 1로 하면 해당 프로토콜을 사용하겠다는 의미고,
값 데이터가 0이면 사용하지 않겠다는 의미이다.

동일한 방법으로 차단하고 싶은 프로토콜을 전부 등록한다.

그럼 TLS 1.2의 특정 사이퍼만 차단하고 싶을 땐 어떻게 할까?
특정 Cipher Suites 삭제하는 방법
TLSv1.2 WITH 64-BIT CBC CIPHERS 만 차단하고 싶은데 어떻게 설정할까?
참고로 64-bit CBC는 Sweet32 취약점에 노출된다.
때문에 관련 사이퍼들은 차단하는 게 안전하다.
대표적인 예:
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
먼저 gpedit.msc 실행한 뒤,
컴퓨터 구성 > 관리 템플릿 > 네트워크 > SSL 구성 설정 이동

SSL Cipher Suite Order 더블 클릭 > 사용 선택
아직 구성된 적이 없기에 '구성되지 않음'으로 선택되어 있다.

사용을 선택하면 SSL 암호 그룹이 보이는데, 이는 통신에 허용되는 사이퍼 리스트이다.
이중에 취약한 사이퍼들을 삭제해 줘야 안전한 통신이 가능하다.

이제 Cipher Suites 목록에서 위험한 버전을 삭제한다.
이번에 삭제할 사이퍼는 'TLSv1.2 WITH 64-BIT CBC'.
위에 'SSL 암호 그룹'을 그대로 복사해 왔다.
여기서 붉은색이 삭제할 대상이다.
TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_NULL_SHA256,TLS_RSA_WITH_NULL_SHA,TLS_PSK_WITH_AES_256_GCM_SHA384,TLS_PSK_WITH_AES_128_GCM_SHA256,TLS_PSK_WITH_AES_256_CBC_SHA384,TLS_PSK_WITH_AES_128_CBC_SHA256,TLS_PSK_WITH_NULL_SHA384,TLS_PSK_WITH_NULL_SHA256
제거한 사이퍼 리스트를 다시 복사, 붙여넣기한뒤,
서버를 재기동시켜 주면 정상적으로 반영된다!
이제 SSLabs 같은 사이트에서 점검해 보면 보안 등급이 올라간 걸 확인할 수 있다.
다만 제거한 사이퍼가 적기에 높은 등급은 나오기 힘들다.
안전하지 않은 사이퍼를 모두 제거하면 A를 받을 수 있을 것이다.
그건 다음 기회에ㅎㅎ
'[개발] Programming > Server' 카테고리의 다른 글
| 윈도우 80 포트 제어 - 다른 프로그램이 먼저 점유할 경우 (0) | 2021.12.24 |
|---|---|
| HttpOnly 쿠키 플래그 IIS에 설정하기 (OWASP 보안 설정) (0) | 2021.10.22 |
| 윈도우 IIS 서버, 신규 웹 폰트 추가하는 방법 (ft. woff, woff2) (0) | 2021.08.23 |
| 서버 연결 오류 - Failed to receive data on the TCP socket, read beginning of SSL/TLS record (0) | 2021.06.18 |
| 윈도우 서버에 MP4 파일 호출 시 404 오류 해결 방법 (MIME 등록) (0) | 2021.06.12 |