웹 엔지니어, 웹마스터, 또는 시스템 관리자로서 SSL/TLS 관련 문제 해결은 필수적인 업무 중 하나입니다. 다양한 온라인 도구들이 SSL 인증서 및 취약점 테스트를 지원하지만, 인트라넷 기반 URL, VIP, 또는 IP 주소에 대한 테스트는 여전히 어려운 과제입니다.
인트라넷 환경의 문제점을 효과적으로 분석하려면, 네트워크 내에 설치하여 필요한 테스트를 직접 수행할 수 있는 독립적인 소프트웨어 또는 도구가 필요합니다. 이러한 도구들은 다양한 시나리오에서 유용하게 활용될 수 있습니다.
- 웹 서버에 SSL 인증서를 적용하는 과정에서 발생하는 문제 해결
- 현재 사용 중인 프로토콜과 최신 또는 특정 암호 스위트의 확인 필요
- SSL 구성 변경 후의 설정 검증
- 보안 취약점 분석 결과에 따른 위험 요소 발견
다음은 이러한 문제들을 해결하는 데 도움이 되는 주요 도구들입니다.
딥바이올렛
딥바이올렛은 자바 기반의 SSL/TLS 스캐닝 도구로서, 바이너리 형태로 제공되거나 소스 코드를 직접 컴파일하여 사용할 수 있습니다. 이는 내부 네트워크에서 SSL Labs의 대안을 찾을 때 매우 효과적인 선택이 될 수 있으며, 다음 항목들을 검사합니다.
- 취약한 암호 노출 여부
- 취약한 서명 알고리즘 사용 여부
- 인증서 해지 상태 확인
- 인증서 만료 상태 확인
- 자체 서명된 루트 인증서를 이용한 신뢰 체인 시각화
SSL 진단
SSL 진단은 웹사이트의 SSL 강도를 신속하게 평가할 수 있는 도구입니다. 이 도구는 SSL 프로토콜, 암호 스위트, Heartbleed 및 BEAST와 같은 취약점을 추출하여 보여줍니다. HTTPS뿐 아니라 SMTP, SIP, POP3 및 FTPS와 같은 다양한 서비스에 대한 SSL 강도 테스트를 지원합니다.
SSLyze
SSLyze는 파이썬 라이브러리이자 명령줄 도구로서, SSL 엔드포인트에 연결하여 SSL/TLS 구성 오류를 식별하기 위한 스캔을 수행합니다. 이 도구는 여러 프로세스를 통해 테스트를 분산시켜 빠른 스캔 속도를 제공합니다. 개발자이거나 기존 애플리케이션과 통합해야 하는 경우, 결과를 XML 또는 JSON 형식으로 저장할 수 있습니다. SSLyze는 Kali Linux에서도 사용할 수 있습니다.
OpenSSL
OpenSSL은 Windows 또는 Linux에서 사용할 수 있는 강력한 독립형 도구로, 인증서 검증, CSR 생성, 인증서 형식 변환 등 다양한 SSL 관련 작업을 수행할 수 있습니다. OpenSSL은 SSL/TLS 관련 작업에 필수적인 도구 중 하나입니다.
SSL 연구소 스캔
Qualys SSL Labs의 온라인 스캔 도구를 선호하신다면, SSL 연구소 스캔 명령줄 도구가 자동화 및 대량 테스트에 매우 유용합니다.
SSL 스캔
SSL 스캔은 Windows, Linux, macOS를 포함한 다양한 운영체제와 호환됩니다. 이 도구는 다음 지표들을 빠르게 식별하는 데 도움을 줍니다.
- SSLv2/SSLv3/CBC/3DES/RC4와 같은 취약한 암호화 프로토콜 강조 표시
- 40비트 미만의 약한 암호, null/익명 암호 보고
- TLS 압축, Heartbleed 취약점 확인
- 기타 다양한 보안 관련 정보
암호 관련 문제를 해결하는 과정에서 SSL 스캔은 문제 해결을 가속화하는 데 매우 유용한 도구입니다.
koreantech.org TLS 스캐너 API
웹마스터를 위한 또 다른 효과적인 해결책은 koreantech.org TLS 스캐너 API입니다. 이 API는 TLS 프로토콜, CN, SAN 및 기타 인증서 세부 정보를 즉시 확인할 수 있는 강력한 기능을 제공합니다. 매월 최대 3000개의 무료 요청을 통해 부담 없이 사용해 볼 수 있습니다. 또한, 프리미엄 계정은 더 높은 요청 속도와 추가 API 호출을 제공합니다.
테스트SSL
TestSSL은 Linux 또는 macOS에서 사용할 수 있는 명령줄 도구입니다. 이 도구는 모든 필수 메트릭을 테스트하고, 그 결과를 좋음/나쁨과 같은 상태로 제공합니다. 아래는 TestSSL 실행 결과의 예시입니다.
Testing protocols via sockets except SPDY+HTTP2 SSLv2 not offered (OK) SSLv3 not offered (OK) TLS 1 offered TLS 1.1 offered TLS 1.2 offered (OK) SPDY/NPN h2, spdy/3.1, http/1.1 (advertised) HTTP2/ALPN h2, spdy/3.1, http/1.1 (offered) Testing ~standard cipher categories NULL ciphers (no encryption) not offered (OK) Anonymous NULL Ciphers (no authentication) not offered (OK) Export ciphers (w/o ADH+NULL) not offered (OK) LOW: 64 Bit + DES encryption (w/o export) not offered (OK) Weak 128 Bit ciphers (SEED, IDEA, RC[2,4]) not offered (OK) Triple DES Ciphers (Medium) not offered (OK) High encryption (AES+Camellia, no AEAD) offered (OK) Strong encryption (AEAD ciphers) offered (OK) Testing server preferences Has server cipher order? yes (OK) Negotiated protocol TLSv1.2 Negotiated cipher ECDHE-ECDSA-CHACHA20-POLY1305-OLD, 256 bit ECDH (P-256) Cipher order TLSv1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA DES-CBC3-SHA TLSv1.1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA TLSv1.2: ECDHE-ECDSA-CHACHA20-POLY1305-OLD ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-CHACHA20-POLY1305-OLD ECDHE-RSA-CHACHA20-POLY1305 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 AES128-GCM-SHA256 AES128-SHA AES128-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES256-SHA384 AES256-GCM-SHA384 AES256-SHA AES256-SHA256 Testing vulnerabilities Heartbleed (CVE-2014-0160) not vulnerable (OK), no heartbeat extension CCS (CVE-2014-0224) not vulnerable (OK) Ticketbleed (CVE-2016-9244), experiment. not vulnerable (OK) Secure Renegotiation (CVE-2009-3555) not vulnerable (OK) Secure Client-Initiated Renegotiation not vulnerable (OK) CRIME, TLS (CVE-2012-4929) not vulnerable (OK) BREACH (CVE-2013-3587) potentially NOT ok, uses gzip HTTP compression. - only supplied "/" tested Can be ignored for static pages or if no secrets in the page POODLE, SSL (CVE-2014-3566) not vulnerable (OK) TLS_FALLBACK_SCSV (RFC 7507) Downgrade attack prevention supported (OK) SWEET32 (CVE-2016-2183, CVE-2016-6329) not vulnerable (OK) FREAK (CVE-2015-0204) not vulnerable (OK) DROWN (CVE-2016-0800, CVE-2016-0703) not vulnerable on this host and port (OK) make sure you don't use this certificate elsewhere with SSLv2 enabled services https://censys.io/ipv4?q=EDF8A1A3D0FFCBE0D6EA4C44DB5F4BE1A7C2314D1458ADC925A30AA6235B9820 could help you to find out LOGJAM (CVE-2015-4000), experimental not vulnerable (OK): no DH EXPORT ciphers, no DH key detected BEAST (CVE-2011-3389) TLS1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA DES-CBC3-SHA VULNERABLE -- but also supports higher protocols (possible mitigation): TLSv1.1 TLSv1.2 LUCKY13 (CVE-2013-0169) VULNERABLE, uses cipher block chaining (CBC) ciphers RC4 (CVE-2013-2566, CVE-2015-2808) no RC4 ciphers detected (OK)
TestSSL은 다양한 취약점, 암호 기본 설정 및 프로토콜을 광범위하게 분석합니다. TestSSL.sh는 Docker 이미지로도 제공됩니다.
TestSSL.sh를 사용하여 원격 스캔이 필요한 경우, koreantech.org TLS 스캐너를 고려해 볼 수 있습니다.
TLS 스캔
TLS 스캔을 소스에서 직접 빌드하거나 Linux/macOS용 바이너리를 다운로드하여 사용할 수 있습니다. 이 도구는 서버에서 인증서 정보를 추출하고, 다음 메트릭들을 JSON 형식으로 출력합니다.
- 호스트 이름 확인 여부
- TLS 압축 사용 여부
- 암호 및 TLS 버전 열거 확인
- 세션 재사용 여부
TLS 스캔은 TLS, SMTP, STARTTLS 및 MySQL 프로토콜을 지원하며, 결과를 Splunk 또는 ELK와 같은 로그 분석기에 통합할 수 있습니다.
암호 스캔
암호 스캔은 HTTPS 웹사이트가 지원하는 모든 암호를 분석하는 데 유용한 빠른 도구입니다. 이 도구는 결과를 JSON 형식으로 출력할 수 있으며, 내부적으로 OpenSSL 명령을 사용합니다.
SSL 감사
SSL 감사는 SSL Labs를 기반으로 인증서를 확인하고 프로토콜, 암호 및 등급을 제공하는 오픈 소스 도구입니다.
위에서 소개된 오픈 소스 도구들이 지속적인 스캔을 수행하고, 기존 로그 분석 시스템과 통합하여 문제를 해결하는 데 도움이 되기를 바랍니다.