Server Cipher 보안 설정
보안에 취약한 TLS 1.0, 1.1 사이퍼들을 제거하기 위해 윈도우 서버 설정을 해보았다. 우선 설정에 앞서 현재 서버에 적용된 사이퍼들과 보안등급을 활용하기 위해 SSL Labs라는 사이트에서 테스트를 돌렸다. 참고로 서버 보안 설정을 확인하기 상당히 유용한 사이트다. 100% 무료.
테스트 사이트: www.ssllabs.com
처음에 테스트 결과는 C 등급... 좀 당황스러웠는데, 테스트 결과를 확인해 보니 서버에 별도의 설정을 하지 않아서 구 사이퍼들까지 모두 지원하고 있었기 때문이다. 그러다 보니 weak 뿐만 아니라 insecure 까지 검출된 것이다.
특히 TLS 1.0, 1.1은 보안상 제거 해야될 대상. 단 호환성을 먼저 확인하고 작업해야 된다.
구버전도 호환성을 생각하면 한 두 개는 필요할 수도 있다. (네이버도 구버전 호환됨)
운영 체제 | TLS 1.0 | TLS 1.1 | TLS 1.2 |
Windows Vista | 지원됨 | 지원되지 않음 | 지원되지 않음 |
Windows Server 2008 | 지원됨 | 지원되지 않음 | 지원되지 않음 |
Windows 7 | 지원됨 | 지원됨, 기본 비활성 | 지원됨, 기본 비활성 |
Windows Server 2008 R2 | 지원됨 | 지원됨, 기본 비활성 | 지원됨, 기본 비활성 |
Windows Server 2012 | 지원됨 | 지원됨, 기본 비활성 | 지원됨, 기본 비활성 |
Windows 8.1 이상 | 지원됨 | 지원됨 | 지원됨 |
Windows Server 2012 R2 이상 | 지원됨 | 지원됨 | 지원됨 |
서버 Cipher 설정/제거
윈도우 서버에서 사이퍼를 설정하는 방법은 아래와 같다.
우선 윈도우 '시작'을 누른 후 '실행'에 들어가서 'gpedit.msc'를 실행한다.
뜨는 정책 설정 창에서 아래 경로로 이동한다.
'로컬 컴퓨터 정책 > 윈도우즈 설정 > 네트워크 > SSL 구성 설정'
또는 윈도우 버전에 따라 아래와 같을 수도 있다.
' 로컬 컴퓨터 정책 > 컴퓨터 구성 > 관리 템플릿 > 네트워크 > SSL 구성 설정'
'정책 설정'을 클릭하면 사이퍼들을 설정할 수 있다.
창 우측 하단에는 사이퍼를 설정하는 방법을 설명해주고 있다.
설정 방법은 사용할 사이퍼들의 이름 ','를 추가하여 공백 없이 나열한 뒤에
창 왼쪽 위 '사용' 라디오 박스를 클릭하면
아래 'SSL 암호 그룹' 창이 활성화되고 여기에 붙여 넣으면 된다.
그리고 적용 누른 뒤에 서버를 재시작해줘야 적용된다.
사이퍼를 입력하는 방법을 예시를 들면,
임의의 사이퍼가 아래와 같이 세 개가 있는데,
TLS_RSA_WITH_AES_001
TLS_RSA_WITH_AES_002
TLS_RSA_WITH_AES_003
001 알고리즘을 제외한 두 개를 사용하고 싶으면
아래와 같이 제외하고 콤마를 붙여서 공백 없이 나열한 뒤에
TLS_RSA_WITH_AES_002,TLS_RSA_WITH_AES_003
'SSL 암호 그룹'에 그냥 붙여 넣으면 된다.
서버 Cipher 설정 후 테스트 결과
사이퍼 설정 후 다시 SSL Labs로 테스트를 해보니 C에서 B 등급으로 올라갔다.
하지만, 여전히 TLS 1.1 번대 사이퍼들이 있어서 추가로 제거를 했다.
어떤 사이퍼들이 안전한지 정확히 모르겠어서 구글링을 해보니 조금씩 달라서 일단 안전하다고 생각되는 목록들을 정리했다. (여전히 워닝은 발생) 참고로 서버에서 실제 입력 순서대로 동작하기 때문에 순서는 중요하다.
TLS_AES_128_GCM_SHA256,
TLS_AES_256_GCM_SHA384,
TLS_CHACHA20_POLY1305_SHA256,
TLS_AES_128_CCM_8_SHA256,
TLS_AES_128_CCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
참고로 CBC 계열은 버전이 낮고 Weak 한 등급의 알고리즘이지만, 아직 오래된 브라우저는 사용하는 사람들이 있어 없애지는 못했다. 또, 속도도 느리기 때문에 CBC 계열은 마지막에 설정하는 게 좋다.
그리고 TLS 1.0, 1.1은 보안에 약해서 되도록이면 제거하는 게 좋고, TLS 1.2 버전의 경우 일부는 구 브라우저를 위해 유지하는 게 좋다. TLS 1.3으로만 구성할 경우 IE 11 밑에서는 돌아가지 않기 때문. (아래 참고)
생각해 보니 TLS 구버전들은 완전히 차단시키는 게 더 수월한 작업인데, 그걸 생각하지 못했다.
차단하는 방법은 레지스터리 수정이 필요한데 자세한 건 다음 포스트에서 :)
참고 자료
www.thesslstore.com/blog/tls-1-3-everything-possibly-needed-know
github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices
'[개발] Programming > Server' 카테고리의 다른 글
윈도우 서버에서 현재 동시접속자 정보 확인 - netstat (0) | 2020.10.14 |
---|---|
SPF(메일서버등록제) 란 무엇이고, 설정을 확인하는 방법 (0) | 2020.10.06 |
윈도우 서버 .NET 버전 보는 방법 (0) | 2020.08.09 |
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path (0) | 2019.10.10 |
톰캣 Connection has been abandoned PooledConnection (0) | 2018.10.24 |
댓글