[클러스터] YP 를 이용한 NIS 서버 구축하기 ( 계정 인증 통합 시스템 )
NIS 서버를 이용한 통합 계정 관리 방법
NIS 서버를 이용하여 통합 계정 인증 시스템을 만드는 대표적인 방법은 크게 정통적인 Sun 의 yellow page
에서 유래된 yp 와 ldap project 에서 나온 openldap 을 이용하는 방법이 있다.
openldap 의 경우에는 다른 application 과의 계정 연동 부분도 많이 지원 하고 있는 만큼 그 크기나 깊이
가 아주 광범위 하다고 볼수 있다. 여기서는 간단히 ypserv, ypbind 를 이용한 NIS 로 통합 계정 인증
시스템을 구현하는 방법에 대해 알아보겠다.
[ 서버,클라이언트 공통 설정 부분]
일단 yp 관련 클라이언트 tool 이 설치 되어져 있어야 한다.
# rpm -Uvh ypbind-x.x.x.rpm
# rpm -Uvh yp-tools-x.x.x.rpm
# rpm -Uvh ypserv-x.x.x.rpm -> 계정 서버일 경우에 설치
/etc/host.conf 파일에 multi on 설정을 추가 한다.
# vi /etc/host.conf
——————————————————————–
order hosts,bind
multi on
——————————————————————–
NIS 도메인 이름을 결정한다. ( DNS의 도메인 과 NIS 도메인은 다른 차원의 것이다. )
# nisdomainname < NISDOMAIN >
/etc/sysconfig/network 에 NISDOMAIN 내용을 추가 한다.
# vi /etc/sysconfig/network
——————————————————————–
NETWORKING=yes
HOSTNAME=test03
GATEWAY=192.168.123.254
NISDOMAIN=< NISDOMAIN >
——————————————————————–
[ 서버 설정 ]
그런후 NIS 시스템에서 shadow file 을 인식 할수 있게 설정을 변경한다.
/var/yp/Makefile 을 열어서 all: 로 문자열을 검색하면
# vi /var/yp/Makefile
——————————————————————–
.
.
all: passwd group hosts rpc services netid protocols mail \\
# publickey shadow netgrp networks ethers bootparams printcap \\
# amd.home auto.master auto.home auto.local passwd.adjunct \\
# timezone locale netmasks
나온다. 여기서 주석내용중의 shadow 를 주석 밖으로 빼내준다
all: passwd group hosts rpc services netid protocols mail shadow \\
# publickey netgrp networks ethers bootparams printcap \\
# amd.home auto.master auto.home auto.local passwd.adjunct \\
# timezone locale netmasks
———————————————————————
그런 후 ypserv 와 yppasswd 를 시작 해 준다. 기본적으로 yp 는 rpc 를 이용하는 서비스
임으로 portmap 을 먼저 실행하여야 한다.
# /etc/rc.d/init.d/portmap start
# /etc/rc.d/init.d/ypserv start
# /etc/rc.d/init.d/yppasswdd start
# chkconfig –level 345 portmap on
# chkconfig –level 345 ypserv on
# chkconfig –level 345 yppasswd on
계정 인증 서버의 계정 정보를 클라이언트 서버로 전달 가능한 Map 으로 만든다.
# make -C /var/yp
위 단계가 바로 인증 서버의 계정 정보를 다른 서버들과 공유 가능한 계정 정보로 만드는
작업니다. 그렇기에 인증 서버의 계정 정보의 변경이 있는 경우 반드시 위 과정을 실행해
야 클라이언트에서 변경된 계정 정보를 인식 할수 있다.
[ 클라이언트 설정 ]
클라이언트에서는 ypserver 의 계정 정보를 rpc 를 통해 사용하기 위해서 계정 서버의 정보
를 퀴리를 할수 있는 ypbind 같은 프로그램이 필요하다.
ypbind 설정은 /etc/yp.conf 를 수정하면 된다.
# vi /etc/yp.conf
————————————————————————–
ypserver < NISDOMAIN server for HOSTNAME >
domain < NISDOMAIN server for HOSTNAME >
————————————————————————–
그런 뒤 ypbind 를 실행한다. ypbind 역시 portmap 이 먼저 실행 되어야 한다.
# /etc/rc.d/init.d/portmap restart
# /etc/rc.d/init.d/ypbind restart
그런 후 /etc/passwd, /etc/group 설정에서 nis 로 계정을 인증 하겠다는 형식이 추가 되어야 한다.
/etc/passwd 파일의 제일 하단에 < +:*:0:0::: > 을 추가해 준다.
/etc/group 파일의 제일 하단에 < +:*:0:0: > 을 추가해 준다.
# vi /etc/nsswitch.conf
————————————————————————–
.
.
passwd: files
shadow: files
group: files
위 내용을 ..아래로 변경 ..
passwd: files nisplus nis
shadow: files nisplus nis
group: files nisplus nis
————————————————————————–
클라이언트 설정 완료 후 클라이언트 시스템은 리부팅을 해주어야 한다. nsswitch 설정 적용을
위해서~
이제 위 내용으로 계정 연동이 완료되어 진다. 즉 ypserv 에 계정을 생성하고 make -C /var/yp
로 생성 내용을 갱신 하면 ypserv 에 연동된 클라이언트 시스템으로 접속하여 새로 생성된 계정
으로 ssh 나 telnet 접속을 하면 성공하여야 한다.
정상적으로 동작하는 것을 확인 하는 방법으로는 yp-tools 에 있는 명령어를 이용하면된다.
# yptest
# ypcat passwd
위 명령을 사용하면 실제 ypserv 측의 계정 정보와 패스워드 정보들이 출력될것이다.
클라이언트 서버에서 ypserv 계정의 패스워드 변경을 할때는 yppasswd 명령을 사용한다.
# yppasswd < userid >
이로서 ypserv 를 이용한 계정 통합 인증 시스템에 대해 알아 보았다. yp 는 간단한 구성의 시스템
인증에 많이 사용되어진다. 복잡한 어플리케이션 인증 시스템으로는 yp 보다는 openldap 으로 구성
하는것이 효율적일것이다.
yp 로 구성하면 앞에서 설명했듯이 ypserv 에서의 계정 정보가 변경되면 반드시 /var/yp 의 map 을
재 갱신 시켜주어야 한다. 그렇기에 실시간으로 계정 정보를 인식하지는 못한다.
어플리케이션 인증 측면에서는 이해 할수 없겠지만 OS 차원에서의 계정 인증에서는 그렇게 문제가
되는 부분은 아니라고 생각한다. 계정 정보를 변경하고 갱신 명령만 한번 실행하면 수십대의시스템
의 계정을 한대의 서버에서 관리 할수 있기 때문에 상당히 효율적이라고 볼수 있다.
이런게 귀찮은 경우는 별도의 계정에 관련된 명령어 ( adduser, useradd, userdel, passwd )등을
yp 관련 명령어와 적용하여 scripts 를 만들거나 아님 cron 등에 짧은 주기로 등록해 두면 효과
적일거라 생각한다.
이런 관리적인 측면 말고 yp 나 ldap 같은 계정 인증 통합 시스템에서는 반드시 사용자의 홈폴더가
로컬디스크 상에 있으면 안되는 점이 있다. 즉 사용자 홈폴더는 NFS 등으로 하나로 통합해야 하는
주의점이 있다. 즉 계정은 계정 서버를 통해 인증되어 접속을 가능하지만 홈폴더가 계정 서버 자체
에만 생성이 됨으로 현재 접속하는 서버에 홈폴더가 없기에 문제가 발생할 수 있다. 이러한 부분
때문에 홈폴더가 NFS 등으로 구성된 시스템에서는 yp를 이용한 NIS 서버를 사용하고 홈폴더가 시스템
별로 분리된 시스템 구성에서는 위의 hpc_accout tools 를 이용하여 계정을 관리하면 될것이다.
2 Responses
2juniper
2wrestler