[파일] Windows 2000 AD Server + SAMBA + WINBIND

### Windows 2000 AD Server + SAMBA + WINBIND ###

data : 2003-03-25

writer : Jinwoo Seo ( alang at

clunix.com )

Samba 패키지에 기본적으로 들어 있는 Winbind 를 이용하면 유닉스와 Windows 계정 관리를

통합하여

유닉스 머신이 완벽한 NT 계열 도메인 멤버가 되도록 허용한다.

유닉스의 NIS 와 같이 유닉스에서 윈도우 서버의 계정과 그룹을 자기 자신의 시스템에 등록된

계정

처럼 사용 가능하다는 의미이다.

복잡하고 원리적인 내용은 시간 관계상 적지 않을 것이다.

간단하게 Samba 설치 부터 Winbind 로 윈도우 계정서버의 계정과 그룹을 resovle 하는 일련의

과정을

기록한다.

1. http://www.samba.org 에서 최신

Samba 버전을 다운 받는다.

이 문서 제작 당시 Samba 버전은 samba-2.2.8 이다.

2. Samba 설치

다운 받은 samba 소스를 적당한 곳에 풀고 configure 한다.

# tar xzvf samba-latest.tar.gz

# cd samba-2.2.8

# ./configure –prefix=/usr/local/samba

# make

여기서 pam_winbind.so 라이브러리를 삼바에서 자동으로 만들어 주지 않기 때문에 수동으로

직접

만들어 주어야 한다

# make nsswitch/pam_winbind.so

# make install

이렇게 하면 Samba 와 Winbind 라이브러리 설치가 완료됨.

3. 설정하기 ..

3.1 nsswitch.conf 설정

먼저 /etc/nsswitch.conf 파일을 설정 함. 기존의 내용은 모두 지우고 간단히 아래 내용만

기입.

# vi /etc/nsswitch.conf

———————————————————–

passwd:         files winbind

group:          files winbind

———————————————————–

3.2 Samba 설정

그 다음 Samba 설정 파일인 smb.conf 파일을 작성합니다.

smb.conf 파일의 규칙에 대해서는 다른 문서를 참조 하시오.

아래 파일은 Clunix 사내 NAS 서버에 이용된 삼바 설정입니다.

/usr/local/samba/lib/smb.conf

——————————————————————

[global]

    client code page = 949

    workgroup = CLUNIX

    server string = Clunix NAS Server

    security = domain

    log file = /usr/local/samba/var/log.%m

    max log size = 50

    encrypt passwords = yes

    interfaces = 211.241.202.229/24

    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

    stat cache = false

    log level = 3

    winbind separator = +

    winbind cache time = 10

#   template homedir = /data/clxdb/home/%U

    template shell = /bin/false

    winbind uid = 10000-20000

    winbind gid = 10000-20000

    password server = ares

    browseable = yes

[회사문서자료]

    comment = Clunix Job Doc Folder

    path = /data/clxdb/company

    public = no

    writable = yes

    admin users = CLUNIX+Administrator

    write list = @CLUNIX+Administrators, @CLUNIX+”Domain Users”,

[홈폴더]

    comment = User Home Folder

    path = /data/clxdb/home/%U

    create mask = 600

    directory mask = 700

    writable = yes

    admin users = CLUNIX+Administrator

    write list = @CLUNIX+Administrators, @CLUNIX+”Domain Users”,

[home]

    comment = Users Home Path

    path = /data/clxdb/home

    public = no

    writable = yes

    admin users = CLUNIX+Administrator

    write list = @CLUNIX+Administrators,  @CLUNIX+”Domain Users”,

    browseable = no

[profile]

    comment = Users Profile Path

    path = /data/clxdb/profile

    public = no

    writable = yes

    admin users = CLUNIX+Administrator

    write list = @CLUNIX+Administrators

    browseable = no

————————————————————————–

winbind 를 사용하기 위해 필수적으로 해야하는 설정으론

[global]

    workgroup = CLUNIX              : 워크그룹 혹은 도메인

    security = domain               : 보안 모드

    encrypt passwords = yes         : 암호화된 암호 사용

    winbind separator = +

    winbind cache time = 10

    log level = 3    

    winbind separator = +

    winbind cache time = 10

    winbind uid = 10000-20000       : 윈도우 계정이 사용할 uid

    winbind gid = 10000-20000       : 윈도우 계정이 사용할 gid

    password server = ares          : PDC 서버  

    

이와 같다.

    

smb.conf 의 간단한 법칙으로

[회사문서자료]                        : 네트워크 공유 명

    comment = Clunix Job Doc Folder   : 공유드라이브 설명

    path = /data/clxdb/company        : 공유명의 실질적은 공유 폴더 경로

    public = no                       : 인증없이 공개할건지, 아닌지 ..결정

    writable = yes                    : 읽기만 할것인지, 쓰기도 할것인지..

    admin users = CLUNIX+Administrator : 공유 관리자 결정

    write list = @CLUNIX+Administrators, @CLUNIX+”Domain Users”, : 실제 쓸수

있는 그룹 지정

    

이 정도임.

    

    

smb.conf 파일이 완성되면 기본적으로 리눅스 시스템의 설정 파일이 저장되는 /etc 로

복사하던지

심볼릭 링크를 걸어 놓도록 한다.

# ln -s /usr/local/samba/lib/smb.conf /etc/smb.conf

    

    

3.3 Pam 설정

    

이제 winbind 를 통한 유닉스 시스템의 인증을 위해 pam 설정에 winbind 라이브러리를 추가함.

기존거 지우고 아래 내용 복사해서 넣으면 됨.

    

# vi /etc/pam.d/login

—————————————————————————–

#%PAM-1.0

auth       required /lib/security/pam_securetty.so

auth       required /lib/security/pam_nologin.so

auth       sufficient   /lib/security/pam_winbind.so

auth       required /lib/security/pam_pwdb.so use_first_pass shadow nullok

account    required /lib/security/pam_winbind.so

password   required /lib/security/pam_stack.so service=system-auth

session    required /lib/security/pam_stack.so service=system-auth

session    optional /lib/security/pam_console.so

—————————————————————————–

    

만일 윈도우 계정 서버의 계정으로 FTP를 사용하고 싶다면…

    

# vi /etc/pam.d/ftp

—————————————————————————–

    

#%PAM-1.0

auth       required /lib/security/pam_listfile.so item=user sense=deny \\

                         file=/etc/proftpd/ftpusers onerr=succeed

auth       sufficient   /lib/security/pam_winbind.so

auth       required /lib/security/pam_pwdb.so use_first_pass shadow nullok

# This is disabled because anonymous logins will fail otherwise,

# unless you give the ‘ftp’ user a valid shell, or /bin/false and add

# /bin/false to /etc/shells.

#auth       required    /lib/security/pam_shells.so

account    required /lib/security/pam_winbind.so

session    required /lib/security/pam_pwdb.so

—————————————————————————–

3.4 winbind 라이브러리를 시스템 라이브러리 경로에 복사하기

처음 Samba 소스 컴파일 시 별도로 make nsswitch/pam_winbind.so 파일 컴파일 한거 기억하라.

그 위치로 간다.

# cd ~ samba-2.2.8/source/nsswitch

이곳에 가면 libnss_winbind.so, pam_winbind.so 두개의 바이너리 파일이 생성되어져 있을 것

이다.

이 파일을 적용하기 위해서 기본적으로 리눅스 시스템의 라이브러리가 저장  되는 곳으로 옮겨

야 한다.

# cp libnss_winbind.so /lib

# cp pam_winbind.so /lib/security

라이브러리 버전 충돌이 생길 수 있으니 사전에 대비하자.

# cd /lib

# ln -s libnss_winbind.so libnss_winbind.so.1

# ln -s libnss_winbind.so libnss_winbind.so.2

4. 데몬 실행 및 Winbind 로 AD 연결 ..

기본적으로 Samba 는 smbd 와 nmbd 두개의 데몬으로 구동되어진다.

smbd 는 파일 공유 및 프린터 공유등을 제어하고 nmbd 는 Netbios 명을 찾는데 사용된다.

# /usr/local/samba/sbin/smbd -D

# /usr/local/samba/sbin/nmbd -D

매번 실행 할때 마다.. 이 긴 경로를 적기 귀찮으니 아예 root 의 system path 에 samba

경로를 등록하도록 하자.

등록은 /root/.bash_profile 파일에서 등록하면 된다.

# vi /root/.bash_profile

——————————————————————–

.

.

PATH=$PATH:$HOME/bin:/usr/local/samba/sbin:/usr/local/samba/bin

.

——————————————————————-

이제 유닉스 계열 시스템을 윈도우 도메인에 참여 시키자.

# /usr/local/samba/bin/smbpasswd -j DOMAIN -r PDC -U Administrator

그럼 password 를 물어본다. 윈도우 DC 의 Administrator 의 패스워드를 입력한다.

여기서 DOMAIN 은 도메인 이름이고 PDC 는 PDC 서버의 Netbios 이름이다.

이제 시스템의 기본 준비가 완료되었다. winbind 로 연결 해 보자 ..

# /usr/local/samba/sbin/winbind -i

그럼..

Processing section “[회사문서자료]”

Processing section “[홈폴더]”

Processing section “[home]”

Processing section “[profile]”

adding IPC service IPC$

adding IPC service ADMIN$

added interface ip=211.241.202.229 bcast=211.241.202.255 nmask=255.255.255.0

added interface ip=211.241.202.229 bcast=211.241.202.255 nmask=255.255.255.0

resolve_lmhosts: Attempting lmhosts lookup for name ares<0x20>

resolve_hosts: Attempting host lookup for name ares<0x20>

bind succeeded on port 0

cm_get_dc_name: Returning DC ARES (211.241.202.129) for domain CLUNIX

IPC$ connections done anonymously

Connecting to host=ARES share=IPC$

Connecting to 211.241.202.129 at port 445

error connecting to 211.241.202.129:445 (Connection refused)

Connecting to 211.241.202.129 at port 139

Added domain CLUNIX (S-1-5-21-1085031214-220523388-725345543)

getting trusted domain list

이와 같은 로그 메세지가 출력 된다.

이부분이 무사히 진행 되면 wbinfo 명령어로 윈도우 서버의 계정과 그룹에 연결이 되어졌는지

확인한다.  

# /usr/local/samba/bin/wbinfo -u    : 사용자 검색

resolve_lmhosts: Attempting lmhosts lookup for name ares<0x20>

resolve_hosts: Attempting host lookup for name ares<0x20>

bind succeeded on port 0

cm_get_dc_name: Returning DC ARES (211.241.202.129) for domain CLUNIX

IPC$ connections done by user CLUNIX\\CLUNIX\\Administrator

Connecting to host=ARES share=IPC$

Connecting to 211.241.202.129 at port 445

error connecting to 211.241.202.129:445 (Connection refused)

Connecting to 211.241.202.129 at port 139

CLUNIX+1F4D2A20-A908-4D92-A

CLUNIX+Administrator

CLUNIX+airabbit

CLUNIX+alang

CLUNIX+albatrros

CLUNIX+anmerong

CLUNIX+arbeit

CLUNIX+ballkim

CLUNIX+bjkim

CLUNIX+cezanne

CLUNIX+chom1444

.

.

# /usr/local/samba/bin/wbinfo -g   : 그룹 검색

CLUNIX+Domain Admins

CLUNIX+Domain Users

CLUNIX+Domain Guests

CLUNIX+Domain Computers

CLUNIX+Domain Controllers

CLUNIX+Cert Publishers

CLUNIX+Schema Admins

CLUNIX+Enterprise Admins

CLUNIX+Group Policy Creator Owners

CLUNIX+DnsUpdateProxy

CLUNIX+Exchange Domain Servers

CLUNIX+BackOffice Template Users

CLUNIX+BackOffice Folder Operators

.

.

만일 이부분에서

# /usr/local/samba/bin/wbinfo -u

resolve_lmhosts: Attempting lmhosts lookup for name ares<0x20>

resolve_hosts: Attempting host lookup for name ares<0x20>

bind succeeded on port 0

cm_get_dc_name: Returning DC ARES (211.241.202.129) for domain CLUNIX

IPC$ connections done anonymously

Connecting to host=ARES share=IPC$

Connecting to 211.241.202.129 at port 445

error connecting to 211.241.202.129:445 (Connection refused)

Connecting to 211.241.202.129 at port 139

0xc0000022

이와 같이 에러가 나온다면 이는

AD 서버의 보안 정책에 따라서 일반적으로 Anonymous 로 IPC$ 에 접속 인증이 안되는 경우에

발생한다.

로컬보안정책, 도메인컨트롤러 보안정책에서 [보안설정] -> [로컬정책] -> [보안옵션]

에서

“익명연결의 추가적 제한” 부분을 “없음” 으로 해 놓으면 위 부분에서

정상적으로 동작할 것이다.

그래도 안되는 경우가 발생한다.

이때는 wbinfo 인증 계정을 강제로 지정해 놓는 방법이 있다. 원래는 이방법이 보안상 권장하는

방법임.

anonymously 로 이유없이 IPC$ 를 열어줄 필요는 없음.

# wbinfo –set-auth-user=DOMAIN\\\\USER%PASSWORD

즉 ..

# wbinfo –set-auth-user=CLUNIX\\\\administrator%패스워드

이 설정은 한번 해주면 시스템에 그 정보가 기록 되어진다. 기록 되어지는 곳은 아직

못찾음…ㅠ.ㅠ

이제 다시 wbinfo -u 해보면 멋지게 윈도우 서버의 계정들이 나타날것이다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.