본문 바로가기

리눅스

[draft] 우분투에서 sslscan을 설치하고 사용하는 방법

우분투에 sslscan을 설치하고 사용하는 방법

sslscan은 OpenSSL 라이브러리를 기반으로 SSL/TLS 서버의 보안 설정을 분석하는 도구입니다.

서버가 지원하는 TLS 프로토콜, 암호화 알고리즘(Cipher Suite), 인증서 정보, 취약점 여부 등을 확인할 수 있어 보안 점검 및 취약점 진단에 유용합니다.

테스트 환경

docker run -it --rm anti1346/ubuntu2204:latest bash

1. sslscan 설치

우분투에서는 패키지 관리자를 통해 쉽게 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install -y sslscan

버전 확인

sslscan --version
Version: 2.0.7
OpenSSL 3.0.2 15 Mar 2022

2. 기본 SSL/TLS 스캔 실행

특정 서버의 SSL/TLS 설정을 확인하려면 다음과 같이 실행합니다.

sslscan www.google.com:443

실행 결과

더보기

---

Version: 2.0.7
OpenSSL 3.0.2 15 Mar 2022

Connected to 172.217.25.164

Testing SSL server www.google.com on port 443 using SNI name www.google.com

  SSL/TLS Protocols:
SSLv2     disabled
SSLv3     disabled
TLSv1.0   enabled
TLSv1.1   enabled
TLSv1.2   enabled
TLSv1.3   enabled

  TLS Fallback SCSV:
Server supports TLS Fallback SCSV

  TLS renegotiation:
Secure session renegotiation supported

  TLS Compression:
OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support

  Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
TLSv1.1 not vulnerable to heartbleed
TLSv1.0 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.3  128 bits  TLS_AES_128_GCM_SHA256        Curve 25519 DHE 253
Accepted  TLSv1.3  256 bits  TLS_AES_256_GCM_SHA384        Curve 25519 DHE 253
Accepted  TLSv1.3  256 bits  TLS_CHACHA20_POLY1305_SHA256  Curve 25519 DHE 253
Preferred TLSv1.2  256 bits  ECDHE-ECDSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-ECDSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-ECDSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-ECDSA-AES128-SHA        Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-ECDSA-AES256-SHA        Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-CHACHA20-POLY1305   Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA          Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  AES128-GCM-SHA256
Accepted  TLSv1.2  256 bits  AES256-GCM-SHA384
Accepted  TLSv1.2  128 bits  AES128-SHA
Accepted  TLSv1.2  256 bits  AES256-SHA
Accepted  TLSv1.2  112 bits  TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.1  128 bits  ECDHE-ECDSA-AES128-SHA        Curve 25519 DHE 253
Accepted  TLSv1.1  256 bits  ECDHE-ECDSA-AES256-SHA        Curve 25519 DHE 253
Accepted  TLSv1.1  128 bits  ECDHE-RSA-AES128-SHA          Curve 25519 DHE 253
Accepted  TLSv1.1  256 bits  ECDHE-RSA-AES256-SHA          Curve 25519 DHE 253
Accepted  TLSv1.1  128 bits  AES128-SHA
Accepted  TLSv1.1  256 bits  AES256-SHA
Accepted  TLSv1.1  112 bits  TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.0  128 bits  ECDHE-ECDSA-AES128-SHA        Curve 25519 DHE 253
Accepted  TLSv1.0  256 bits  ECDHE-ECDSA-AES256-SHA        Curve 25519 DHE 253
Accepted  TLSv1.0  128 bits  ECDHE-RSA-AES128-SHA          Curve 25519 DHE 253
Accepted  TLSv1.0  256 bits  ECDHE-RSA-AES256-SHA          Curve 25519 DHE 253
Accepted  TLSv1.0  128 bits  AES128-SHA
Accepted  TLSv1.0  256 bits  AES256-SHA
Accepted  TLSv1.0  112 bits  TLS_RSA_WITH_3DES_EDE_CBC_SHA

  Server Key Exchange Group(s):
TLSv1.3  128 bits  secp256r1 (NIST P-256)
TLSv1.3  128 bits  x25519
TLSv1.2  128 bits  secp256r1 (NIST P-256)
TLSv1.2  128 bits  x25519

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
ECC Curve Name:      prime256v1
ECC Key Strength:    128

Subject:  www.google.com
Altnames: DNS:www.google.com
Issuer:   GTS CA 1C3

Not valid before: Jun 19 08:21:20 2023 GMT
Not valid after:  Sep 11 08:21:19 2023 GMT

---

3. 주요 검사 항목

sslscan은 다음과 같은 보안 정보를 분석합니다.

1) 지원 프로토콜

서버에서 허용하는 SSL/TLS 버전을 확인할 수 있습니다.

SSL/TLS Protocols:
SSLv2     disabled
SSLv3     disabled
TLSv1.0   enabled
TLSv1.1   enabled
TLSv1.2   enabled
TLSv1.3   enabled

권장 사항

  • TLS 1.0 / 1.1 비활성화
  • TLS 1.2 이상 사용

2) TLS Fallback 보호

TLS Fallback SCSV:
Server supports TLS Fallback SCSV

이 기능은 프로토콜 다운그레이드 공격을 방지합니다.

3) TLS 재협상 (Renegotiation)

TLS renegotiation:
Secure session renegotiation supported

보안 취약점이 없는 안전한 재협상 기능 여부를 확인합니다.

4) Heartbleed 취약점 검사

Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed

Heartbleed는 과거 OpenSSL 취약점(CVE-2014-0160) 입니다.

5) 지원 암호화 알고리즘 (Cipher Suites)

서버가 지원하는 암호화 알고리즘 목록을 확인할 수 있습니다.

Preferred TLSv1.3  128 bits  TLS_AES_128_GCM_SHA256
Accepted  TLSv1.3  256 bits  TLS_AES_256_GCM_SHA384
Accepted  TLSv1.3  256 bits  TLS_CHACHA20_POLY1305_SHA256

상태 의미

  • Preferred 서버가 가장 우선적으로 사용하는 암호화 방식
  • Accepted 서버가 허용하는 암호화 방식

6) 키 교환 알고리즘

Server Key Exchange Group(s):

TLSv1.3  secp256r1
TLSv1.3  x25519

이는 TLS Handshake 시 사용되는 키 교환 방식을 의미합니다.

7) SSL 인증서 정보

SSL Certificate:

Subject:  www.google.com
Issuer:   GTS CA 1C3

Not valid before: Jun 19 08:21:20 2023 GMT
Not valid after:  Sep 11 08:21:19 2023 GMT

확인 가능한 정보

  • 인증서 발급 기관(CA)
  • 인증서 유효 기간
  • 공개 키 정보
  • 도메인 이름

4. 주요 옵션

sslscan에서 자주 사용하는 옵션입니다.

  • -h, --help 도움말 출력
  • -V, --version 버전 확인
  • -t, --targets=<file> : 여러 대상 서버 파일 지정
  • -f, --file=<file> : 결과를 파일로 저장
  • -o, --xml=<file> : 결과를 XML 형식으로 저장
  • -p, --protocols=<protocols> : 테스트할 TLS 프로토콜 지정 (예: --protocols=TLSv1,TLSv1.1,TLSv1.2)
  • -c, --cipher=<cipher> : 특정 Cipher Suite 테스트 (예: --cipher=ECDHE-RSA-AES256-GCM-SHA384)
  • -e, --show-certificate : 인증서 정보 출력
  • -r, --renegotiation : TLS 재협상 확인
  • -x, --starttls=<protocol> : STARTTLS 테스트 (예: --starttls=smtp)
  • -b, --bulk 여러 호스트 결과 통합 출력

5. 사용 예시

단일 서버 검사

sslscan example.com:443

여러 서버 검사

  • targets.txt 파일 생성
vim targets.txt
example.com:443
google.com:443
naver.com:443
  • 실행
sslscan --targets=targets.txt

결과 파일 저장

sslscan example.com:443 -f result.txt

XML 형식 결과 저장

sslscan example.com:443 -o result.xml

특정 TLS 버전 및 Cipher 테스트

sslscan example.com:443 --protocols=TLSv1.2 --cipher=ECDHE-RSA-AES256-GCM-SHA384

6. 특정 Cipher만 확인하기

예를 들어 허용된 Cipher( Accepted )만 확인하려면

sslscan --no-failed sangchul.kr | grep Accepted
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-CHACHA20-POLY1305   Curve 25519 DHE 253

이를 통해 서버에서 실제로 사용 가능한 암호화 알고리즘을 빠르게 확인할 수 있습니다.

7. OpenSSL Compression 지원

sslscan 실행 시 다음 메시지가 표시될 수 있습니다.

OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support

이 경우 OpenSSL을 zlib 지원 포함하여 재빌드할 수 있습니다.

필요한 패키지 설치

sudo apt-get install -y build-essential zlib1g-dev

OpenSSL 소스 다운로드

wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -xf openssl-1.1.1.tar.gz
cd openssl-1.1.1

zlib 지원 포함 컴파일

./config zlib
make
sudo make install
sudo ldconfig

 

이를 통해 서버가 사용하는 TLS 버전, 암호화 알고리즘, 인증서 상태 등을 확인하고 보안 취약점을 사전에 점검할 수 있습니다.