SMB 프로토콜
SMB 프로토콜
개요
SMBServer Message Block) 프로토은 파일, 프린터, 직렬 포트, 기타 통신 리소스를 네트워크를 통해 공유하기 위한 애플리케이션 계층 프토콜이다.로 로컬 네트워크(LAN 환경에서 사용되며,라이언트-서 아키텍처 기반으로 작동한다 SMB는 마이크로소프트가 개발한 프로토콜로, Windows 운영 체제에서 파일 공유를 위한 핵심 기술로 오랫동안 사용되어 왔다. 그러나 현재는 리눅스, macOS 등 다양한 운영 체제에서도 지원되며, 특히 Samba**와 같은 오픈소스 구현을 통해 크로스 플랫폼 호환성이 확보되었다.
SMB는 네트워크를 통해 원격 컴퓨터의 자원에 접근할 수 있도록 하며, 사용자 인증, 데이터 암호화, 파일 잠금, 변경 사항 알림 등의 기능을 제공한다. 최신 버전인 SMB 3.x는 성능 향상과 보안 강화를 위해 여러 기능을 추가하였다.
역사와 발전
SMB 프로토콜은 1980년대 초 IBM과 마이크로소프트이 공동 개발한 NetBIOS 기반의 파일 공유 프로토콜에서 유래하였다. 이후 마이크로소프트가 이를 독자적으로 발전시켜 Windows 네트워킹의 핵심 구성 요소로 자리 잡았다.
주요 버전의 발전 과정은 다음과 같다:
- SMB 1.0 (CIFS): 1996년 공개된 버전으로, 인터넷 파일 시스템(CIFS, Common Internet File System)이라는 이름으로도 알려져 있다. TCP/IP를 통해 NetBIOS를 대체할 수 있도록 설계되었으나, 보안 취약점과 성능 문제가 지적되었다.
- SMB 2.0: Windows Vista와 Windows Server 2008에서 도입. 패킷 수를 줄이고 성능을 대폭 개선하며, 명령어를 통합하고 새로운 기능(파일 변경 알림 등)을 추가했다.
- SMB 3.0: Windows 8 및 Windows Server 2012에서 도입. 엔드 투 엔드 암호화, 멀티 채널(다중 네트워크 인터페이스 사용), 스케일 아웃 파일 서버 지원 등의 주요 보안 및 성능 기능을 포함.
- SMB 3.1.1: Windows 10 및 Windows Server 2016에서 도입. AES-128-GCM 암호화를 지원하고, 프로토콜 협상 단계에서 보안을 강화하였다.
작동 원리
SMB는 클라이언트가 서버에 연결하여 파일 시스템 리소스를 마운트하고, 마치 로컬 디스크처럼 사용할 수 있도록 한다. 주요 작동 단계는 다음과 같다:
- 세션 설정: 클라이언트는 서버에 연결 요청을 보내고, 인증을 수행한다.
- 공유 연결: 특정 공유 폴더(예:
\\server\share)에 접근하기 위한 연결을 설정한다. - 파일 액세스: 파일 열기, 읽기, 쓰기, 닫기 등의 작업을 수행한다.
- 세션 종료: 작업 완료 후 연결을 해제한다.
SMB는 기본적으로 TCP 포트 445를 사용하며, 이전에는 포트 139 (NetBIOS over TCP/IP)를 사용하기도 했다.
보안 및 보안 취약점
SMB는 오랫동안 널리 사용되면서 여러 보안 문제에 노출되어 왔다. 특히 SMBv1은 다음과 같은 심각한 취약점을 가지고 있어, 많은 공격에 악용되었다:
- EternalBlue: NSA가 개발하고 2017년 위키리크스를 통해 유출된 공격 기법. SMBv1의 취약점을 이용해 원격 코드 실행을 가능하게 하였으며, WannaCry, NotPetya 랜섬웨어의 주요 전파 수단이 되었다.
- Pass-the-Hash 공격: 사용자 인증 정보를 해시 형태로 탈취하여 재사용하는 공격.
이러한 문제로 인해 마이크로소프트는 SMBv1을 기본 비활성화하고, 사용자에게 최신 버전(SMB 3.x)으로의 업그레이드를 권장하고 있다.
SMB와 CIFS의 관계
CIFS(Common Internet File System)는 SMB 프로토콜의 초기 인터넷 표준화 시도로, SMBv1을 기반으로 한다. CIFS는 더 많은 명령어와 비효율적인 설계로 인해 성능이 낮았으며, 현재는 구식이며 권장되지 않는다. 많은 시스템에서 "CIFS"라는 용어를 여전히 사용하지만, 실제로는 SMB 2.0 이상을 의미하는 경우가 많다.
리눅스에서는 [mount -t cifs](/doc/%EA%B8%B0%EC%88%A0/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/%EB%A6%AC%EB%88%85%EC%8A%A4%20%EB%AA%85%EB%A0%B9%EC%96%B4/mount%20-t%20cifs) 명령어를 통해 SMB 공유를 마운트할 수 있으며, 이는 Samba 클라이언트의 일부이다.
주요 사용 사례
- 기업 내부 파일 공유: 부서별 문서, 공용 자료 저장소 운영
- 프린터 공유: 네트워크 프린터를 여러 사용자가 공유
- 가상화 및 클라우드 저장소: Hyper-V, Azure Files 등에서 SMB 3.0+를 사용하여 스토리지 접근
- 홈 네트워크: NAS(Network Attached Storage) 장비에서 가족 구성원 간 미디어 공유
관련 기술 및 대안
| 기술 | 설명 |
|---|---|
| NFS(Network File System) | 유닉스/리눅스 기반 파일 공유 프로토콜. 성능은 우수하나, 윈도우와의 호환성이 낮음 |
| FTP/SFTP | 파일 전송에 특화된 프로토콜. 실시간 파일 시스템 마운트는 불가능 |
| WebDAV | HTTP 기반 파일 공유. 웹 서버와의 호환성 좋음 |
| Samba | 리눅스/유닉스에서 SMB 프로토콜을 구현한 오픈소스 소프트웨어 |
참고 자료 및 관련 문서
- Microsoft SMB 문서
- Samba 공식 사이트
- RFC 4455 (CIFS Specification)
- NIST 보안 권고: SMBv1 비활성화 가이드
주의: SMBv1은 보안상 위험하므로, 가능하면 비활성화하고 SMB 3.0 이상을 사용할 것을 강력히 권장한다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.