강좌
클라우드/리눅스에 관한 강좌입니다.
네트워크 분류

리눅스마스터1급 : 삼바(samba) 서버 보안

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 삼바(samba) 서버 보안

 

 

 

삼바 서버의 보안 모델은 다음과 같이 크게 네 가지가 있다.

 

 

 

여기서는 이제까지 가장 간단한 보안 모델인 공유(Share)를 기준으로 예제를 작성해 보았다.

 

 

 

 

 

사용자 레벨 설정

 

공유 레벨 설정

 

서버 레벨 설정

 

도메인 레벨 설정

 

 

 

 

 

이와 같은 다양한 보안 모델은 삼바가 발전해 오면서 사용자 클라이언트 환경의 변화에 따라 생겨난 것이다.

 

 

 

이제 각 모델의 특징, 구성 방법을 알아보도록 하자.

 

 

1) 사용자 레벨 설정

 

 

사용자 레벨은 삼바의 기본 설정이다.

 

 

 

초기 윈도우 95에서는 공유 레벨을 사용하였으나 최근의 윈도우에서는 사용자 레벨로 기본설정이 변경되었다.

 

 

 

 

 

사용자 레벨의 경우 UNIXPC쪽의 계정 이름이 동일한 사용자가 대다수인 경우 그 위력을 발휘한다.

 

 

 

특히 암호화된 암호를 사용할 경우 사용자 레벨로 설정하기 바란다.

 

 

 

 

사용자 레벨은 공유 레벨과는 달리 한 번 접속에 성공하면 그 이후에는 암호를 체크하지 않으므로 성능면에서 유리하다.

 

 

 

하지만 관리면에서는 다소 까다로워지기 때문에 유의해야 한다.

 

 

 

 

 

삼바를 사용자 레벨로 동작시키기 위해서는 SWAT를 사용하여 몇 가지 설정을 해야 한다.

 

 

 

<GLOBAL>항목을 선택하고 <Advanced View> 버튼을 눌러 세부 설정 사항 보기로 전환하자.

 

Security OptionssecurityUSER로 설정한다.

 

 

 

 

 

암호화된 암호파일을 사용하여 인증하도록 하려면 Security Optionsencrypt passwordsYes로 설정하는 동시에 Security Optionssmb passwd file/etc/samba/smbpasswd(smbpaswd) 파일이 위치한 절대 경로)로 설정해야 한다.

 

 

 

 

 

만일 Unix쪽과 PC쪽의 사용자 계정이 다른 경우 Security Optionsusername map 항목에 사용자 이름을 매핑시킨 파일을 설정한다.

 

 

 

Username map의 예는 다음과 같다.

 

 

 

 

 

 

 

 

 

[root@sulinux ~]# cat /etc/samba/smbusers

# Unix_name = SMB_name1 SMB_name2 ...

root = administrator admin

nobody = guest pcguest smbguest

 

 

 

 

 

*은 모든 사용자를 지칭하는 와일드 카드이며, 행의 가장 처음에 !를 표시하면 그행이 충족되면 더 이상 검색을 멈추라는 의미가 된다.

 

 

 

admin을 제외한 나머지 사용자를 guest로 취급하고 싶다면 다음 예를 참고하기 바란다.

 

 

 

 

 

 

 

 

 

[root@sulinux ~]# cat /etc/samba/smbusers

!admin = administrator admin

guest = *

 

 

 

 

 

사용자 레벨의 경우 username map을 잘 활용해야 guest를 처리할 수 있다.

 

 

 

guest only, user, guest account 설정 사항은 공유 레벨과는 달리 일단 사용자가 정상적으로 로그인한 이후에야 적용되므로 특히 유의하기 바란다.

 

 

 

 

 

별도의 Guest 공유 서비스를 만들어 두었다면 Security Optionsmap to guestBad User로 설정한다.

 

 

 

Guest 공유 서비스 만드는 방법은 앞서 사용자 홈디렉토리에 대한 공유 설정 과정에서 설명한 바와 같이 <SHARES> 아이콘을 누른 다음 Guest라고 입력하고 <Create Share> 버튼을 누르면 된다.

 

 

 

map to guest 설정은 서버나 도메인 레벨에서도 유용하게 활용할 수 있다

 

 

 

2) 공유 레벨 설정

 

 

공유 레벨은 프린터, CD-ROM, anonymous ftp 등의 공유 디렉토리를 불특정 사용자들이 공유할 경우 유용하다.

 

 

 

, UnixPC쪽의 사용자 이름이 대부분 다를 경우 공유 레벨이 그 위력을 발휘한다.

 

 

 

 

 

username map 파일을 계속해서 관리하는 일은 아주 부지런한 관리자가 아니면 힘들기 때문에 사용자 레벨보다는 공유 레벨이 관리가 쉽다고 볼 수 있다.

 

 

 

하지만 성능이 다소 떨어지는 점을 감수해야 한다.

 

 

 

 

 

앞서 공유 레벨에서는 사용자의 계정을 전달하지 않는다고 언급한 바 있다.

 

 

 

실제로 계정을 전달하지 않고 암호를 인증하기 위해 다음과 같은 과정을 거치게 된다.

 

 

 

 

 

guest only가 설정되어 있으면 단지 guest account 사용자 이름을 체크한다.

 

 

 

 

공유 접속 요청시 보내지는 사용자 이름을 후보에 올린다.

 

 

 

 

직전 로그온 요청시 보내진 사용자 이름을 후보에 올린다.

 

 

 

 

클라이언트가 요청한 서비스 이름을 후보에 올린다.

 

 

 

 

클라이언트의 NetBIOS 이름을 후보에 올린다.

 

 

 

 

user에 등록된 사용자를 후보에 올린다.

 

 

 

 

 

후보에 오른 사용자들을 대상으로 암호를 맞추어 본다.

 

 

 

처음 접한 사용자가 바로 유효한 사용자가 된다.

 

 

 

정말 헷갈리는 방식으로 사용자를 추측하므로 공유 레벨에서는 암호화된 암호를 사용하지 말기 바란다.

 

 

 

 

 

Samba를 공유 레벨로 동작시키기 위해서는 SWAT를 사용하여 몇 가지 설정을 해야한다.

 

 

 

<GLOBAL>항목을 선택하고 <Advanced View> 버튼을 눌러 세부 설정사항 보기로 전환하자.

 

Security OptionssecuritySHARE로 설정한다.

 

 

 

 

Security Optionsencrypt passwordsNo로 설정한다.

 

 

 

 

필요에 따라 Security Optionsusername map을 설정한다.

 

 

 

 

 

 

3) 서버 레벨 설정

 

 

서버 레벨은 사용자로부터 계정과 암호를 받아 다른 NT와 같은 SMB 서버로 인증을 맡기는 방법을 사용한다.

 

 

 

만일 실패할 경우 자동으로 사용자 레벨로 떨어지도록 설계되어 있다.

 

 

 

하지만 암호화된 암호로 협상이 진행될 경우 삼바는 Unixpasswd 파일을 체크하는 대신 smbpasswd 파일을 사용하여 사용자를 체크하도록 되어 있다.

 

 

 

따라서 서버레벨 설정은 암호화된 암호를 사용하는 사용자 레벨 설정을 기반으로 추가적인 환경 설정이 필요하게 된다.

 

 

 

 

 

Samba를 서버 레벨로 동작시키기 위해서는 SWAT를 사용하여 몇 가지 설정을 해야 한다.

 

 

 

<GLOBAL> 항목을 선택하고 <Advanced VIew> 버튼을 눌러 세부 설정 사항 보기로 전환하자.

 

Security OptionssecuritySERVER로 설정한다.

 

 

 

 

Security Optionsencrypt passwordsYes로 설정하는 동시에 Security Optionssmb passwd file/etc/samba/smbpasswd(smbpasswd 파일이 위치한 절대 경로)로 설정해야 한다.

 

 

 

 

Security Optionspassword serverNetBIOS 이름을 주어 설정한다.

 

 

 

password server는 전적으로 신뢰할 수 있는 것이 아니면 보안상 문제가 생기므로 신중하게 결정해야 할 문제이다.

 

 

 

Samba 서버 자신을 password server로 지정할 경우에는 Samba 서버가 무한루프에 빠지므로 반드시 이를 피해야 한다.

 

 

 

 

필요에 따라 Security Optionsusername map을 설정한다.

 

 

 

 

필요에 따라 Security Optionsmap to guest를 설정한다.

 

 

 

 

 

 

4) 도메인 레벨 설정

 

 

도메인 레벨은 아예 Windows NT 도메인으로 Samba 서버를 참가시키는 방법을 사용한다.

 

 

 

이 보안 모드에서는 Samba 서버가 Windows NTPDCBDC(Backup Domain Controller)에 사용자 계정과 암호의 쌍을 전송하여 인증을 위임하게 된다.

 

 

 

 

 

유닉스 사용자는 반드시 PDCBDC에 유효한 사용자로 등록되어 있어야 Samba 서버가 정상적인 서비스를 허용하게 됨에 유의해야 한다.

 

 

 

 

 

Samba 3.0 이상에서 도메인 레벨을 설정하려면 net 명령을 사용하여 도메인에 참가해야 한다.

 

 

 

먼저 Samba 데몬을 정지시키고, 다음과 같이 명령을 내린다.

 

 

 

 

 

 

 

 

 

[root@sulinux ~]# net rpc join -S DOMPDC -UAdministrator%password

 

 

 

 

 

도메인에 성공적으로 참여하면 다음과 같은 메시지가 나온다.

 

 

 

 

 

 

 

 

 

Joined domain DOM.

 

 

 

 

 

Samba를 도메인 레벨로 동작시키기 위해서는 SWAT를 사용하여 몇 가지 설정을 해야 한다.

 

 

 

<GLOBAL> 항목을 선택하고 <Advanced View> 버튼을 눌러 세부 설정사항 보기로 전환하자.

 

Base Optionsworkgroup을 참가를 원하는 도메인 이름으로 설정한다.

 

 

 

 

Security OptionssecurityDOMAIN으로 설정한다.

 

 

 

 

Security Optionsencrypt passwordsYes로 설정하는 동시에 Security Optionssmb passwd file/etc/samba/smbpasswd(smbpasswd 파일이 위치한 절대 경로)로 설정해야 한다.

 

 

 

 

Security Optionspassword serverPDCDBCNetBIOS 이름을 주어 설정한다.

 

 

 

공백으로 각 서버 이름을 분리한다.

 

 

 

순서가 중요하므로 부하를 배준하기 위해 여러 번에 걸쳐 조합을 시도해본다.

 

 

 

 

필요에 따라 Security Optionsusername map을 설정한다.

 

 

 

 

필요에 따라 Security Optionsmap to guest를 설정한다.

 

 

 

 

 

도메인 레벨이 서버레벨보다 좋은 점은 보안을 위해 인증된 RPC 체널을 사용하여 Samba 서버와 PDC가 통신한다는 점이다.

 

 

 

도메인 레벨로 동작할 경우 NT 서버가 취하는 행동 양식을 그대로 따르므로 NTUNIX의 통합 관리 측면에서 매우 유리하다.

 

 

 

 

이로써 Samba의 보안 모델에 대하여 알아보았다.

 

 

 

각 보안 모델은 실제 요구 사항에 대해 면밀히 검토되어야 하고 상황에 따라 적당히 사용하여야 한다.

 

 

 

실제 Samba의 구성 형태는 개별 케이스별로 민감하게 검토되어야 한다.

 

 

 

Samba는 매우 편리한 서비스지만 잘못된 설정으로 보안에도 문제가 생길 수 있다.

 

 

 

신중하게 서비스를 제공하기 바란다.

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  84 명