1. SMB (Server Message Block)의 개요

SMB(Server Message Block)는 네트워크 상에서 파일, 프린터, 직렬 포트 등의 자원을 공유하기 위해 사용되는 애플리케이션 계층 프로토콜입니다. 주로 Windows 시스템 간 파일 공유에 널리 사용되며, 클라이언트-서버 모델 기반으로 동작합니다.

SMB는 원래 IBM에 의해 개발되었고, 이후 Microsoft가 이를 확장하여 Windows OS에 통합하면서 널리 퍼지게 되었습니다. 현재는 다양한 운영체제에서 사용되며, 특히 Linux/Unix에서는 Samba라는 구현체를 통해 SMB 프로토콜을 지원합니다.

2. SMB의 상세 설명

2.1 SMB의 기본 동작 방식

SMB는 클라이언트-서버 모델로 동작합니다. 클라이언트가 서버에게 특정 자원(파일, 프린터 등)에 대한 작업을 요청하면, 서버는 이를 처리하여 결과를 응답합니다.

기본 동작 흐름

  1. 클라이언트가 TCP 445 포트로 서버에 접속
  2. 인증 과정 수행 (Windows 인증 / 사용자 계정 / 도메인 기반)
  3. 공유 리소스(공유 폴더, 프린터 등) 목록 요청
  4. 사용자가 선택한 리소스에 접근 (열기, 읽기, 쓰기 등)
  5. 작업 완료 후 연결 종료

이 과정은 SMB의 여러 명령어(예: NT_CREATE, READ, WRITE, CLOSE)를 통해 이뤄지며, 실제로는 패킷 단위로 복잡한 통신이 이뤄집니다.

2.2 SMB의 내부 구조 및 구성요소

1) Session

  • 하나의 SMB 연결(Session)은 인증된 사용자에 의해 생성되며, 여러 공유 리소스를 동시에 사용할 수 있습니다.

2) Tree Connect

  • 클라이언트가 특정 공유 폴더에 접근 요청할 때 Tree ID(Tree Connect ID)가 생성됩니다.

3) File ID

  • 열려 있는 파일이나 리소스마다 고유한 파일 핸들(File ID)을 부여받습니다.

2.3 SMB 명령어 예시

SMB 통신은 여러 종류의 명령어로 구성됩니다.

명령어설명
NEGOTIATESMB 버전 협상
SESSION_SETUP사용자 인증 과정
TREE_CONNECT공유 리소스에 대한 연결 요청
CREATE파일 또는 디렉토리 열기
READ/WRITE파일 읽기 및 쓰기
CLOSE열린 파일 핸들 종료
LOGOFF세션 종료

이러한 명령어들은 SMB의 각 동작을 세부적으로 제어합니다.

2.4 SMB의 전송 계층

SMB는 전송 계층으로 주로 다음 두 가지를 사용합니다.

  • TCP 445: 현재 대부분의 SMB 통신은 이 포트를 사용 (Windows 2000 이상부터 SMB Direct 사용)
  • NetBIOS over TCP/IP (137~139): 과거 SMB 1.0 시절에 사용되던 포트 (현재는 비권장)

2.5 SMB 버전별 변화 상세

SMB 1.0 (CIFS)

  • 기능: 파일 공유, 잠금, 이름 조회 등 기본 기능
  • 문제점: 보안 취약점 많고, 통신량 과다

SMB 2.0~2.1

  • 개선점: 명령어 수 대폭 축소 (100+ → 19), 파일 핸들 효율화, 대용량 전송

SMB 3.0

  • 도입 기능:
    • End-to-End 암호화
    • SMB Multichannel: 여러 NIC를 통한 병렬 전송
    • SMB Direct (RDMA): 고속 전송
    • VSS 통합: 볼륨 섀도우 복사본 연동

SMB 3.1.1

  • 보안 강화:
    • Pre-authentication integrity
    • AES-128-GCM 암호화
    • Downgrade 공격 방지

2.6 SMB 인증 방식

  • NTLM: 오래된 인증 프로토콜, 보안에 취약
  • Kerberos: Active Directory 환경에서 사용하는 기본 인증 방식
  • Guest Access: 인증 없이 접근 가능 (보안상 비추천)
  • Signed SMB: 패킷 위조 방지를 위한 서명

기업 환경에서는 반드시 Kerberos + Signed SMB 조합을 권장합니다.

2.7 SMB와 Samba의 관계

  • Samba는 Linux/Unix에서 SMB 프로토콜을 구현한 오픈소스 소프트웨어입니다.
  • SMB 프로토콜을 구현해 Windows 네트워크와 파일 공유를 가능하게 만듭니다.
  • Samba는 다음의 핵심 데몬으로 구성됩니다.
    • smbd: 파일 및 프린터 공유 서비스 제공
    • nmbd: NetBIOS 이름 서비스 제공
    • winbindd: Windows 사용자/그룹 정보 통합

실제 구성 예시

2.8 SMB의 보안 설정 포인트

  • SMB 1.0 비활성화 (특히 Windows Server에서)
  • TCP 445 포트에 대한 방화벽 제어
  • 파일 공유 권한 최소화 (읽기 전용, 특정 사용자 제한)
  • Signed SMB 및 암호화 설정
  • 접근 로그 및 감사 기능 활성화

3. 정리

SMB(Server Message Block)는 로컬 네트워크에서 자원 공유를 간편하게 만들어 주는 강력한 프로토콜입니다. Windows 기반 네트워크 환경에서 표준처럼 활용되고 있으며, Samba를 통해 리눅스 환경에서도 융합 운용이 가능합니다.

그러나 SMB는 버전별 보안 이슈가 존재하기 때문에, 항상 최신 버전 사용과 보안 설정 강화가 필요합니다. 특히 기업 환경에서는 방화벽 설정, 접근 제어 정책, 인증 방식 등을 종합적으로 고려하여 안전하게 운용해야 합니다.

zerg96

Recent Posts

요양원 선택 전 반드시 확인해야 할 것들, 부모님 맡기기 전에 보세요

요양원 선택 전 반드시 확인해야 할 체크리스트를 공개합니다. 공식 평가 자료 조회법, 방문 시 확인…

2일 ago

공공기관 채용 비리, 내부에서 터져나온 충격 증언

공공기관 채용 비리의 실태와 피해 지원자의 대응법을 정리했습니다. 채용 비리 신고 방법, 공익신고자 보호제도, 취준생…

2일 ago

주식 손실 났을 때 세금 줄이는 방법, 아는 사람만 씁니다

주식 손실을 세금 절약에 활용하는 합법적 방법을 공개합니다. 해외주식 손익통산, ISA 계좌 활용, 연금계좌 절세까지…

2일 ago

음식 배달 늦으면 소비자가 취소할 수 있다, 몰랐던 권리

배달이 예상 시간보다 크게 늦으면 취소·환불을 요청할 수 있습니다. 배달앱별 지연 취소 방법과 잘못 배달됐을…

2일 ago

휴대폰 요금제 바꾸면 연 수십만원 절약, 지금 내 요금제 확인하세요

통신비 절약의 핵심은 요금제 최적화입니다. 내 데이터 사용량 확인법, 알뜰폰 전환 비교, 위약금 없이 요금제…

2일 ago

퇴직금 못 받았다면, 지금 당장 이렇게 하세요

퇴직 후 퇴직금을 받지 못했다면 즉시 노동부에 신고하세요. 지급 기한, 자격 요건, 신고 방법, 소액체당금…

2일 ago