Windows Server에서 암호 모음(Cipher Suite) 업데이트로 보안 강화하기

빠른 링크
왜 암호 모음이 중요한가
현재 상태 확인 방법
암호 모음 업데이트 절차
왜 암호 모음이 중요한가
Microsoft Internet Information Services(IIS)는 설치와 관리가 쉬운 웹 서버입니다. 친숙한 GUI와 Windows 통합으로 많은 장점을 제공하지만, 보안 설정의 기본값은 경우에 따라 약점이 될 수 있습니다.
HTTPS(주소가 “https://“로 시작)로 접속하면 브라우저와 서버가 안전한 연결을 수립하기 위해 암호 협상(SSL/TLS 핸드셰이크)을 수행합니다. 서버는 사용 가능한 암호 모음 목록(선호 순서로 정렬)을 브라우저에 보내고, 브라우저는 목록을 순서대로 훑어 자신이 지원하는 항목을 선택합니다. 이 과정 자체는 간단하지만, 문제는 서버가 약한 알고리즘을 목록에 포함할 때 발생합니다.
암호 모음은 서로 다른 키 교환 알고리즘(예: ECDHE vs RSA), 인증서 알고리즘(ECDSA vs RSA), 대칭 암호(AES_GCM vs 3DES), 해시 함수(SHA256 vs SHA1) 등을 조합한 문자열입니다. 일부 조합은 현대적이고 안전하지만, 일부는 더 이상 권장되지 않습니다(예: DES, RC4, 3DES, 익스포트 수준 암호 등).
서버가 호환성 때문에 구형 알고리즘을 제공하면, 브라우저와 클라이언트가 그 약한 알고리즘을 선택할 수 있어 전체 연결의 보안성이 떨어집니다. 따라서 서버 측에서 제공하는 암호 모음의 목록과 순서를 관리해 우선순위가 안전한 항목으로 오도록 하는 것이 중요합니다.
중요: 보안성을 높일 때는 항상 호환성(특히 오래된 클라이언트나 특정 장비)이 깨지지 않는지 확인하세요. 일부 산업용 장비, 레거시 브라우저, 오래된 모바일 OS는 TLS 최신 버전을 지원하지 않습니다.
현재 상태 확인 방법
변경을 시작하기 전에 현재 서버가 제공하는 암호 모음과 TLS 설정을 검사하세요. Qualys의 SSL Labs(https://www.ssllabs.com/ssltest/)는 서버가 어떤 암호를 제공하고 어떤 취약점이 있는지 시각적으로 보여주며 평가 등급을 제공합니다.
주의: SSL Labs의 점수는 권장기준을 기반으로 한 것이며, 예를 들어 RC4는 역사적으로 약점으로 분류되어 점수에 영향을 줍니다. 그러나 환경에 따라 RC4를 잠시 유지해야 하는 경우도 존재합니다. 따라서 점수는 가이드라인으로 보고, 서비스의 대상 클라이언트와 요구사항을 함께 고려하세요.
추가 검토 도구(권장)
- SSL Labs: 외부에서 보는 전체 등급과 세부 항목 제공
- 온라인 핸드셰이크 시각화 도구: 지원되는 프로토콜/암호/키 교환 방법 확인
- 내부 테스트: curl, OpenSSL s_client, PowerShell 등으로 직접 핸드셰이크 관찰
테스트 예시(로컬에서):
- curl 사용: curl -vI –tlsv1.2 https://yourserver.example
- OpenSSL: openssl s_client -connect yourserver.example:443 -tls1_2
주의: 위 커맨드는 환경에 따라 TLS 버전 옵션을 조정해야 합니다.
암호 모음 업데이트 절차
아래 절차는 GUI 기반(GPO) 방법을 우선으로 설명합니다. 다른 대안(레지스트리 직접 편집, IISCrypto, PowerShell 기반 도구)은 이후 섹션에서 다룹니다.
- 실행 창 열기: Windows 키 + R을 눌러 “실행” 대화상자를 엽니다. 입력란에 gpedit.msc를 입력하고 확인을 누릅니다.
왼쪽 트리에서 Computer Configuration → Administrative Templates → Network → SSL Configuration Settings를 확장합니다.
오른쪽 목록에서 SSL Cipher Suite Order를 더블클릭합니다.
- 기본값은 Not Configured입니다. Enabled를 선택하면 편집 가능한 필드가 나타납니다.
SSL Cipher Suites 필드의 텍스트를 전체 복사하여 메모장에 붙여넣으면 현재 서버가 제공하는 암호 모음의 전체 문자열을 확인할 수 있습니다. 문자열은 쉼표(,)로 구분된 하나의 긴 줄입니다. 각 항목을 한 줄씩 분리하면 읽기 쉽습니다.
주의: 이 필드의 최대 길이는 1,023자입니다. 암호 모음 이름은 매우 길기 때문에 원하는 모든 항목을 포함하려면 우선순위를 정해야 할 수 있습니다. 널리 추천되는 선별 목록 중 하나는 GRC의 Steve Gibson이 정리한 SChannel Cipher Suites 목록입니다(https://www.grc.com/miscfiles/SChannel_Cipher_Suites.txt). 이 목록을 참고해 서버 환경에 맞게 안전한 암호 모음만 골라 순서를 정하세요.
편집이 끝나면 하나의 긴 문자열로 다시 합쳐(각 항목 사이에 쉼표) SSL Cipher Suites 필드에 붙여넣고 OK를 누릅니다.
변경 사항을 적용하려면 서버 재부팅이 필요합니다.
재부팅 후 SSL Labs 테스트를 다시 실행해 등급과 지원되는 암호가 원하는 대로 나오는지 확인합니다.
성공 시 대부분의 경우 A 등급을 기대할 수 있지만, 환경과 호환성 요구사항에 따라 달라집니다.
GUI가 아닌 다른 방법들(대안)
IISCrypto: Nartac에서 제공하는 GUI 유틸리티로, 암호/프로토콜/해시/키 교환을 직관적으로 토글하고 미리 설정(예: Best Practices, Intermediate 등)을 적용할 수 있습니다. 도메인에 다수의 서버가 있으면 중앙 관리용 스크립트와 함께 사용하세요.
레지스트리 편집: 직접 레지스트리를 편집해 TLS 설정과 암호 모음을 제어할 수 있지만 실수 시 시스템 불안정이나 서비스 중단을 유발할 수 있어 권장되지 않습니다. 백업을 반드시 수행하세요.
PowerShell(조회): Windows Server 2016 이상에서는 Get-TlsCipherSuite 같은 명령으로 현재 시스템의 암호 모음을 조회할 수 있습니다. 다만 암호 모음 순서를 설정하는 표준화된 PowerShell 명령은 모든 버전에 존재하지 않을 수 있습니다.
대안 선택 힌트: 한두 대의 서버라면 GPO나 IISCrypto가 가장 쉽습니다. 대량 서버(수백 대)를 자동화하려면 그룹 정책과 구성관리 도구(Ansible, SCCM, Group Policy) 조합을 고려하세요.
우선순위 결정의 기준(간단한 정신 모델)
- 우선: AEAD 암호(AES-GCM, CHACHA20-POLY1305) + ECDHE 키 교환 + ECDSA 또는 RSA 인증서
- 중간: AES-CBC + ECDHE
- 퇴출: RC4, DES, 3DES, 익스포트 등 약한 알고리즘
- 프로토콜: TLS 1.2 이상 권장, 가능하면 TLS 1.3 지원 활성화
원칙: 서버는 가능한 한 최신이고 안전한 조합을 맨 앞(높은 우선순위)에 두고, 호환성 때문에 구형 알고리즘을 유지해야 한다면 그 항목은 맨 뒤에 두어 선택될 가능성을 줄입니다.
호환성 매트릭스(간단)
클라이언트/환경 | 권장 설정 | 주의사항 |
---|---|---|
최신 브라우저(Chrome, Firefox, Edge 최신) | TLS1.2/1.3, AES-GCM 또는 CHACHA20 | 문제 없음 |
iOS/Android 최신 | TLS1.2/1.3 지원 | TLS1.3은 버전별 차이 있음 |
오래된 Windows XP/IE6 | TLS1.0, RC4 필요 가능성 | 보안 위험 — 별도 세그먼트 고려 |
레거시 산업 장비 | 구형 TLS/암호 요구 가능 | 장비 교체/업그레이드 계획 필요 |
테스트 케이스와 수용 기준
- 테스트 1: SSL Labs 스캔 결과에서 “Protocols”에 TLS 1.2 이상만 표시되거나, 허용된 구형 프로토콜이 의도적으로 제외되어야 한다.
- 테스트 2: “Cipher Suites” 목록에서 RC4/3DES/DES/EXP 계열이 표시되지 않아야 한다(예외는 비즈니스 필요에 따른 문서화된 예외만 허용).
- 테스트 3: 외부 서비스와의 통신(예: 결제 게이트웨이, API 파트너)이 문제가 없음을 확인.
- 수용 기준: 내부 테스트와 외부 SSL Labs 평가에서 보안 경고가 줄어들고, 핵심 서비스의 기능이 유지되면 성공.
롤백(문제가 발생할 경우)
- 즉시 영향을 받는 서비스/애플리케이션에 통지합니다.
- 그룹 정책에서 SSL Cipher Suite Order를 Not Configured로 되돌리거나 변경 전의 문자열을 붙여넣습니다.
- 서버를 재부팅합니다.
- 문제가 지속되면 시스템 로그 및 이벤트 뷰어를 확인하고, 필요 시 서비스 제조사/공급사에 문의합니다.
역할별 체크리스트
시스템 관리자
- 변경 전 현재 암호 모음 문자열 백업
- 변경 후 재부팅 계획(유지보수 시간 예약)
- SSL Labs 및 내부 테스트 실행
개발자/애플리케이션 소유자
- 외부 API/클라이언트와의 호환성 테스트 수행
- TLS 관련 오류(Handshake failures) 로그 모니터링
보안/컴플라이언스 팀
- 변경내역과 위험평가 문서화
- 레거시 지원 요구사항에 대한 비지니스 승인 절차 수립
헬프데스크
- 사용자 보고시 표준 응답 템플릿 준비(예: “보안 설정 업데이트로 인해 특정 구형 브라우저/장치의 접속 불가 가능”)
언제 이 방법이 실패하는가(반례)
- 최대 길이 제한(1,023자) 때문에 모든 안전한 암호 모음을 한 번에 나열하지 못하는 경우
- 특정 서드파티 장비/서비스가 구형 암호만 지원해 상향 조정이 불가능한 경우
- 도메인에 적용된 중앙 그룹 정책이 있다면 로컬 변경이 즉시 덮어쓰여 원치 않는 결과 발생
대응: 필요한 경우 중앙 정책 수정, 또는 프록시 레벨에서 TLS 오프로드를 사용해 호환성 문제를 완화하세요.
보안 하드닝 권장사항(추가)
- TLS 1.0 및 1.1을 비활성화하세요(레거시 요구가 없다면).
- 서버 인증서는 SHA1 기반 서명이 아닌 SHA256 이상을 사용하세요.
- 가능한 경우 TLS 1.3을 활성화하세요(지원되는 플랫폼에서 자동적으로 더 안전한 우선순위를 제공합니다).
- PFS(Perfect Forward Secrecy)를 제공하는 키 교환(ECDHE)을 우선 사용하세요.
간단한 미니 방법론(Plan → Test → Deploy → Monitor)
- Plan: 영향 범위를 문서화하고 백업/롤백 계획을 수립합니다.
- Test: 테스트 서버에서 먼저 변경하고 내부/외부 테스트를 수행합니다.
- Deploy: 유지보수 창을 잡고 생산 서버에 적용한 뒤 재부팅합니다.
- Monitor: SSL Labs, 로그, 지원 요청을 24–72시간 모니터링합니다.
시각적 의사결정 흐름도
flowchart TD
A[변경 필요성 판단] --> B{레거시 클라이언트 존재?}
B -- 예 --> C[비즈니스 요구 문서화; 예외 목록 작성]
B -- 아니요 --> D[안전한 암호 우선순위 적용]
C --> E[프록시/TLS 오프로드 고려]
D --> F[테스트 서버에 적용]
F --> G{테스트 성공?}
G -- 예 --> H[프로덕션 배포 및 모니터링]
G -- 아니요 --> I[조정 후 재테스트]
도구 및 리소스
- SSL Labs: https://www.ssllabs.com/ssltest/
- GRC SChannel Cipher Suites 목록: https://www.grc.com/miscfiles/SChannel_Cipher_Suites.txt
- IISCrypto (Nartac): https://www.nartac.com/Products/IISCrypto/Default.aspx
FAQ
서버 재부팅 없이 변경할 수 있나요?
그룹 정책에서 SSL Cipher Suite Order를 변경하면 재부팅이 필요합니다. 일부 변화는 서비스를 재시작으로 적용될 수 있으나 완전한 적용을 위해 재부팅을 권장합니다.
암호 모음 최대 길이(1,023자) 문제를 어떻게 해결하나요?
중요한 항목을 우선순위로 정하고, 불필요한 오래된 항목을 제거하세요. 중앙 관리 환경에서는 그룹 정책 템플릿을 사용해 일관된 설정을 배포합니다.
IISCrypto로 모든 서버를 일괄 적용할 수 있나요?
IISCrypto는 GUI와 스크립트 모드를 지원합니다. 대규모 환경에서는 구성 관리 도구(예: SCCM, Ansible)와 결합해 사용하세요.
요약
- IIS 기본값은 때때로 약한 암호를 허용하므로 서버에서 제공하는 암호 모음을 검토하고 안전한 항목으로 우선순위를 재설정하세요.
- gpedit.msc를 사용하거나 IISCrypto 같은 도구로 암호 모음을 관리할 수 있습니다.
- 변경 후 반드시 재부팅하고 SSL Labs로 외부 평가를 수행하세요.
- 백업, 테스트, 문서화, 롤백 계획을 준비해 위험을 줄이세요.
중요: 모든 변경은 서비스 영향과 호환성 요구사항을 고려해 단계적으로 적용하세요.