[파일] 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 해보면 멋지게 윈도우 서버의 계정들이 나타날것이다.