더북(TheBook)

삼바 서버 준비하기

삼바 서버를 설치할 가상 호스트 server01을 시작하고 ssh로 접속합니다.

shinjaehun@losttemple:~$ virsh start server01
shinjaehun@losttemple:~$ ssh administrator@192.168.122.201

삼바 패키지를 설치합니다.

administrator@server01:~$ sudo apt-get update
administrator@server01:~$ sudo apt-get install samba

설치가 끝나면 SMB/CIFS 서비스를 처리하는 넷바이오스 포트가 접속을 기다리는 상태를 확인할 수 있습니다. 이름 탐색을 처리하는 넷바이오스 네임 서비스(netbios-ns)는 137포트, 세션 통신을 처리하는 넷바이오스 세션 서비스(netbios-ssn)는 138포트, 비연결형 통신을 처리하는 넷바이오스 데이터그램 서비스(netbios-datagram)는 139포트를 통해 서비스됩니다.

administrator@server01:~$ netstat -a | grep netbios
tcp    0     0 *:netbios-ssn        *:*                      LISTEN
tcp6   0     0 [::]:netbios-ssn     [::]:*                   LISTEN
udp    0     0 192.168.122.:netbios-ns *:*
udp    0     0 192.168.122.:netbios-ns *:*
udp    0     0 *:netbios-ns           *:*
udp    0     0 192.168.122:netbios-dgm *:*
udp    0     0 192.168.122:netbios-dgm *:*
udp    0     0 *:netbios-dgm          *:*

넷바이오스를 거치지 않고 CIFS로 직접 통신하는 디렉터리 서비스(microsoft-ds)는 445포트를 통해 서비스됩니다.

administrator@server01:~$ netstat -a | grep microsoft
tcp    0     0 *:microsoft-ds       *:*                     LISTEN
tcp6   0     0 [::]:microsoft-ds    [::]:*                  LISTEN

삼바 서버는 smbd와 nmbd 두 데몬으로 동작합니다. smbd는 삼바의 핵심 기능을 담당하는 데몬으로 넷바이오스 세션 서비스인 연결, 인증, 파일 시스템 접근을 처리합니다. nmbd가 필요한 이유는 네트워크에서 윈도 공유 자원 목록을 검색하기 위해서입니다. nmbd는 이름 탐색을 처리하는 데몬으로 넷바이오스 네임 서비스를 처리합니다.

administrator@server01:~$ sudo service samba status
 * nmbd is running
 * smbd is running

런레벨 편집기 sysv-rc-conf를 실행합니다.

administrator@server01:~$ sudo sysv-rc-config

삼바 서버를 런레벨 2부터 5까지 활성화시킵니다. smbd와 nmbd 모두 시작하도록 설정해야 합니다.

그림 7-11 smbd 실행을 위한 런레벨 설정

체크가 끝나면 q를 눌러 명령 프롬프트로 돌아갑니다.

그림 7-12 nmbd 실행을 위한 런레벨 설정

삼바 환경 설정 파일인 /etc/samba/smb.conf는 코드 길이가 300행 정도로 10KB가 넘는 거대한 파일입니다. 수많은 옵션을 제공하지만, 여기에서는 꼭 알아둘 만한 옵션을 소개합니다.

그림 7-13 삼바 환경 설정 옵션
administrator@server01:~$ sudo vi /etc/samba/smb.conf

먼저 삼바 서버의 환경 설정 항목인 [global]입니다. 삼바 서버의 동작과 관련하여 필요한 값을 설정합니다.

workgroup은 작업 그룹 이름을 지정하고 server string은 삼바 서버에 대한 설명을 표시합니다.

[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)

interfaces는 삼바가 특정 네트워크에 대한 접근만 허용하려고 할 때 사용 가능합니다. 기본적으로 ‘;’로 주석처리되어 있습니다.

; interfaces = 127.0.0.0/8 eth0
Tip

삼바 설정 파일에서 ‘#’와 ‘;’로 시작하는 행은 주석처리되어 반영되지 않습니다.

log file은 로그 파일 경로를 지정합니다. 네트워크 탐색을 처리하는 데몬 nmbd와 삼바 데몬인 smbd의 로그 정보를 /var/log/samba 디렉터리에 각각 ‘log.nmbd’와 ‘log.smbd’ 파일로 기록합니다.

max log size는 로그 파일의 최대 크기를 결정합니다.

log file = /var/log/samba/log.%m
max log size = 1000

server role로 삼바의 역할을 정의합니다. 삼바를 도메인 컨트롤러로 사용하지 않는 이상 단일 서버standaloneserver로 사용합니다.

passdb backend는 사용자 패스워드를 어떻게 관리할지 결정합니다. 예전에는 smbpasswd를 사용했는데 지금은 계정 수가 많아져도 부하가 적어 빠른 성능을 보여주는 tdbsam으로 처리합니다.

server role = standalone server
passdb backend = tdbsam

공유할 자원에 대한 설정은 다음과 같이 ‘[공유대상]’으로 묶어 지정합니다. 주석처리되어 있는 [profiles] 항목에서 사용 가능한 옵션을 살펴봅시다.

comment: 공유 디렉터리에 대한 설명

path: 공유할 디렉터리 경로를 지정

browseable: 네트워크 목록에 표시할지 여부를 결정

guest ok: 사용자 인증을 거치지 않은 익명 사용자에 대한 접근 허용 여부 결정

read only: 디렉터리를 읽기 전용으로 공유할지 결정

create mask: 파일을 생성할 때 접근 권한을 어떻게 지정할지 결정

directory mask: 하위 디렉터리를 생성할 때 접근 권한을 어떻게 지정할지 결정

;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

삼바에 대한 접근을 허용하도록 방화벽 설정을 수정합니다. 보안을 고려하여 내부 네트워크 호스트인 192.168.122.0/24 네트워크에 대한 접근만 허용합니다 (allow from 192.168.122.0/24). SSH와 달리 삼바는 여러 포트를 사용하기 때문에 ufw로 해당 포트들을 개방해야 합니다. 다음과 같이 ‘to any app samba’라는 이름으로 예약된 값을 사용하면 삼바가 사용하는 포트를 동시에 개방할 수 있습니다.

administrator@server01:~$ sudo ufw allow from 192.168.122.0/24 to any app samba
Rule added
administrator@server01:~$ sudo ufw status
...
Samba                      ALLOW       192.168.122.0/24

iptables의 filter 테이블을 살펴보면( sudo iptables -L) ufw-user-input 사슬에 사용자가 접근을 허용한 정책 목록을 확인할 수 있습니다. udp netbios-ns와 netbios-dgm에 대한 포트와 tcp netbios-ssn과 microsoft-ds에 대한 포트를 허용하고 있습니다.

Chain ufw-user-input (1 references)
...
ACCEPT     udp  --  192.168.122.0/24   anywhere          multiport dports netbios-ns,netbios-dgm /* 'dapp_Samba' */
ACCEPT     tcp  --  192.168.122.0/24   anywhere          multiport dports netbios-ssn,microsoft-ds /* 'dapp_Samba' */
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.