CIFS(Common Internet File System)란 무엇인가?
CIFS(Common Internet File System)는 네트워크 환경에서 다양한 시스템 간에 파일, 프린터 및 직렬 포트 접근을 가능하게 하는 통신 규약입니다.
이 프로토콜을 통해 사용자들은 로컬 시스템에 저장된 것처럼 공유 문서를 열람, 수정, 저장할 수 있습니다.
더불어, 프로세스 간 통신 서비스와 인쇄 대기열과 같은 기능도 활용 가능합니다.
CIFS는 1980년대 초반 IBM에서 처음 개발되었습니다.
CIFS 작동 원리
CIFS는 클라이언트-서버 모델을 기반으로 합니다. 여기에는 클라이언트, 서버, 그리고 애플리케이션의 세 가지 주요 구성 요소가 있습니다.
- 클라이언트는 대부분의 메시지 교환을 담당하며 프로토콜을 실행합니다.
- 서버는 프로토콜을 실행하고 다양한 기능(서비스)을 제공합니다.
- 애플리케이션은 사용자 인터페이스, 파일 관리, 워드 프로세싱 등과 같은 기능을 수행하는 소프트웨어입니다.
다음은 CIFS 작동 방식에 대한 간략한 설명입니다.
- 클라이언트와 서버 간에 공유 자원에 접근하기 위한 NetBIOS 세션이 설정됩니다.
- 협상 과정을 통해 클라이언트와 서버가 사용할 프로토콜 버전을 결정합니다.
- 클라이언트는 사용자 이름과 비밀번호와 같은 인증 자격 증명을 서버에 제출합니다.
- 인증 과정은 Active Directory에서 주로 처리하지만, CIFS 자체는 인증을 직접 처리하지 않습니다.
- 인증이 성공하면 서버는 클라이언트에 고유 식별자를 반환합니다.
- 서버는 클라이언트의 권한이 유효한지, 공유 이름이 올바른지 확인합니다. 모든 조건이 충족되면 클라이언트는 파일 및 폴더와 같은 공유 리소스에 접근할 수 있습니다.
CIFS 프로토콜 특징
전송 독립성
CIFS 프로토콜은 서버와 클라이언트 간 SMB 메시지 전송에 특정 전송 프로토콜을 요구하지 않습니다. 연결 지향 프로토콜을 통해 동작합니다.
파일 접근
클라이언트/사용자는 서버에서 여러 파일을 열고, 읽고, 수정하고, 닫을 수 있습니다. 서버는 파일 공유를 담당하며, 여러 클라이언트가 동시에 동일한 파일을 열고 읽을 수 있습니다.
파일, 디렉토리 및 볼륨 속성
CIFS 프로토콜은 디렉토리, 파일 및 볼륨 속성을 조회하고 설정할 수 있으며, 접근 제어 목록(ACL)도 지원합니다.
확장된 하위 프로토콜
CIFS 프로토콜은 추가적인 서버 기능에 직접 접근할 수 있는 다양한 하위 프로토콜을 제공합니다.
명명된 파이프를 통한 프로세스 간 통신 지원
클라이언트는 서버에서 명명된 파이프를 열고, 쓰고, 읽고, 닫을 수 있습니다. 이를 통해 서버와 클라이언트 서비스 간에 통신 경로를 제공합니다.
유연한 연결
클라이언트 하나가 여러 서버에 연결할 수 있으며, 서버에 여러 연결을 생성할 수도 있습니다.
기능 협상 지원
프로토콜의 지원되는 기능과 특성은 연결마다 협상을 통해 결정됩니다.
파일 및 레코드 잠금과 안전한 캐싱
CIFS 프로토콜은 레코드와 파일 잠금을 지원합니다. 또한, 클라이언트가 데이터를 캐시하여 성능을 향상시킬 수 있도록 기회주의적 파일 잠금도 허용합니다.
디렉토리 및 파일 변경 알림
클라이언트는 서버의 특정 디렉토리 또는 파일 변경 시 알림을 받도록 요청할 수 있습니다.
분산 파일 시스템(DFS) 지원
DFS는 여러 서버의 자원을 포함하는 전역 이름 공간을 생성합니다.
다중 보안 컨텍스트 지원
클라이언트는 연결을 통해 하나 이상의 보안 컨텍스트를 사용하고 만들 수 있습니다.
CIFS 사용을 위한 전제 조건
CIFS는 일반적으로 연결 지향적인 네트워크 전송을 필요로 합니다. 때로는 약간의 수정을 거쳐 연결 없는 전송에서도 CIFS 메시지를 사용할 수 있습니다.
연결 지향 전송을 통해 CIFS 메시지를 교환하려면 먼저 연결이 설정되어야 합니다.
CIFS는 이러한 네트워크를 통해 메시지를 교환하기 위해 다음 리소스 중 하나 이상이 사용 가능하다고 가정합니다.
- 인쇄 작업을 프린터로 보내는 로컬 인쇄 대기열.
- 파일 공유를 위한 로컬 파일 시스템 또는 데이터베이스. 이때 리소스를 객체 저장소라고 칭합니다.
- 명명된 파이프를 이용한 프로세스 간 통신을 위한 CIFS 서버 또는 파일 시스템에 내장된 적절한 에뮬레이션.
또한, 서버는 인증을 위한 암호 데이터베이스에 대한 접근 권한을 가져야 하거나 제공해야 합니다.
암호 데이터베이스는 NTLM(NT LAN Manager) 및 LM(LAN Manager) 암호 해시를 저장하여 질의/응답 인증을 지원합니다.
Windows에서 CIFS 구성하기
대부분의 사용자가 CIFS를 사용하지 않기 때문에 Windows 10 및 11에서는 기본적으로 이 기능이 비활성화되어 있습니다. 활성화 방법은 다음과 같습니다.
- 제어판에서 ‘프로그램 및 기능’을 클릭하고, 왼쪽 메뉴에서 ‘Windows 기능 켜기/끄기’를 선택합니다.
- 목록에서 ‘SMB 1.0/CIFS 파일 공유 지원’을 찾고 상자를 체크합니다. ‘+’ 아이콘을 클릭하여 세부 옵션을 확인하십시오.
위 단계를 통해 CIFS 기능이 활성화됩니다. 다음은 CIFS 연결을 위한 네트워크 구성 방법입니다.
폴더에 CIFS 설정하기
예시로 ‘Sample Folder’라는 폴더를 E 드라이브에 만들고 설정하는 과정을 보여드립니다.
참고로, 여기 나열된 사용자는 현재 Windows 시스템에 설정된 사용자입니다. 다른 사용자가 전송된 문서에 접근하려면 해당 사용자에게도 적절한 구성이 필요합니다.
CIFS와 SMB: 차이점
차이점을 살펴보기 전에 SMB(서버 메시지 블록)가 무엇인지 이해하는 것이 중요합니다. SMB는 클라이언트가 서버의 파일을 읽고, 쓰고, 편집할 수 있도록 고안된 프로토콜입니다. 이때 서버는 일반적으로 LAN(근거리 통신망) 내에 존재합니다.
SMB의 역사
- SMB 1.0: SMB의 초기 버전으로 CIFS와 동일합니다. Windows NT 4.0용으로 개발되었으며 NetBIOS 인터페이스를 통해 통신했습니다.
- SMB 2.0: 2006년 Windows Vista 운영체제와 함께 도입되었습니다. 확장성 개선, 심볼릭 링크 지원 및 메시지 서명 기능이 향상되었습니다.
- SMB 2.1: 2007년 Windows 7과 함께 도입되었습니다. 성능 최적화 및 새로운 잠금 메커니즘을 제공합니다.
- SMB 3.0: 2012년 Windows 8과 함께 도입되었으며 원래 SMB 2.2로 명명되었으나 나중에 변경되었습니다. RDMA(원격 직접 메모리 액세스)를 통한 원격 스토리지 접근 기능을 제공합니다.
- SMB 3.1.1: 현재 최신 버전으로 2015년 Windows 10용으로 개발되었습니다. 인증 전 무결성 검사를 도입하고 Galois/Counter Mode(GCM)를 사용한 암호화를 지원합니다.
CIFS와 SMB는 많은 사람들이 혼동합니다. SMB가 CIFS보다 먼저 등장했다는 점을 주목할 필요가 있습니다.
Microsoft는 SMB를 개선하여 1990년대에 CIFS를 개발했으며, CIFS는 SMB의 변종이 되었습니다. 하지만 Microsoft는 CIFS를 지속적으로 개선했으며, 현재 최신 버전은 SMB 3.1.1입니다.
CIFS와 SMB 3.1.1의 주요 차이점은 다음과 같습니다.
SMB 3.1.1 | CIFS | |
생성 시기 | 1990년대 초, Microsoft에서 SMB의 개선 버전으로 개발 | 1980년대 초, IBM에서 개발 |
성능 | CIFS와 이전 SMB 버전의 많은 문제점을 개선하여 개발. 서버 파일 보안을 위한 사전 인증 검사 제공 | 파일 전송, 보안 등 여러 문제점 존재. |
인증 | AES 인증을 사용하여 서버에서 공유되는 파일에 대한 보안 제공. 파일 접근 시 사용자 이름과 비밀번호 요구 | 인증 기능이 없어 파일 보안이 취약함. |
데이터 저장 | 32비트 또는 64비트 데이터 저장 필드를 사용하여 대용량 파일 저장 지원. HTTP 및 FTP와 유사한 IP/TCP 프로토콜 사용. 클라이언트-서버 통신 프로토콜로, 동일 네트워크 내 다른 컴퓨터 시스템의 서버에서 파일 요청. | 작업 네트워크의 리소스 접근을 위한 클라이언트-서버 통신 프로토콜 |
CIFS의 단점은 무엇인가?
- 인증 부족: CIFS의 가장 큰 단점 중 하나는 최신 SMB 버전과 달리 인증 기능이 없다는 것입니다.
- 제한된 파일 크기 처리: CIFS는 매우 큰 파일에 적합하지 않을 수 있으며 전송 지연이나 손상을 초래할 수 있습니다.
결론
클라우드 파일 공유 서비스가 증가하는 추세이지만, CIFS와 같은 기존 프로토콜도 여전히 유용합니다. TCP 포트 445를 통한 직접 연결 지원은 CIFS의 주요 장점 중 하나였습니다. Microsoft가 현재 SMB 개발에 집중하고 있지만, CIFS는 SMB의 한 종류이므로 간과할 수 없습니다.
참고로 Windows 11/10에서 시스템 파일 검사기를 실행하는 방법도 알아보시면 도움이 될 수 있습니다.