우분투에 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 버전, 암호화 알고리즘, 인증서 상태 등을 확인하고 보안 취약점을 사전에 점검할 수 있습니다.
'리눅스' 카테고리의 다른 글
| [draft] grubby 명령어 (0) | 2026.03.06 |
|---|---|
| [draft] Apache HTTP Method 예외 처리 및 제한 설정 (0) | 2026.03.06 |
| [draft] 우분투에서 OpenSSL을 소스 코드로 컴파일하여 설치하는 방법 (0) | 2026.03.06 |
| [draft] fstab 파일의 필드 구성 (0) | 2026.03.05 |
| [draft] SecureCRT에서 SSH 키 교환 알고리즘 설정과 관련된 오류 (0) | 2026.03.05 |