NIS
이 장에서는 NIS를 이용한 인증 통합에 대하여 기술을 합니다.
목차 1. NIS 2. NIS 구성 시 고려 사항 3. NIS server 설정 4. NIS slave 설정 5. NIS client 설정
1. NIS(Network Information Service)
네트워크 정보 서비스(Network Information Service, NIS)는 썬 마이크로시스템즈(현 Oracle사에 인수됨)의 클라이언트 서버 디렉터리 서비스 프로토콜이며, 컴퓨터 네트워크 위의 컴퓨터들 사이에 있는 사용자와 호스트 이름과 같은 시스템 구성 데이터를 여러 곳에 제공합니다.(출처 wikipedia)
2. NIS 구성 시 고려 사항
NIS는 secure protocol이 없습니다. 이는 네트워크 상에 passwd list가 평문(plain text)로 전송이 되어 쉽게 sniffing이 될 수 있다는 의미입니다. 그러므로, NIS 구성은 매우 제한된 network에서 구성을 해야 합니다.
Private network 상에서 구성할 것
서로 다른 Network 구간에서 연동이 필요할 경우, VPN tunnel을 이용할 것
data를 text 파일로 관리해야 하기 때문에 많은 account를 관리해야 할 경우 권장하지 않음. 꼭 해야 한다면 별도의 관리 프로그램을 만들기를 권장
Multi master 구성이 안됨
참고! NIS+ 는 secure protocol을 지원합니다만, NIS와 NIS+는 별개의 서비스 입니다. 또한, NIS+는 Solaris에서 사용되던 서비스를 Linux에서 사용할 수 있도록 porting이 된 것이 있지만 널리 사용되지 않아 개발이 더디고 문서화가 잘 안되어 있으며, 설정이 복잡하여 리눅스에서는 널리 사용되지 않습니다.
3. NIS server 설정
3.1 NIS server package 설치
[root@an3 ~]$ yum install ypserv rpcbind genpasswd3.2 NIS domain 설정
NIS domain이라는 것은 NIS database 이름 정도라고 생각을 하면 됩니다. 대충 사용하시는 도메인을 이용하시면 됩니다. 예를 들어서. oops.org 또는 OOPS-NIS, 이것도 귀찮으면 OOPS와 같이 지정을 하면 됩니다.
3.3 기본 설정
안녕 리눅스의 NIS 설정 파일은 /var/yp 디렉토리에 존재 합니다.
보통 NIS 설정을 할때 시스템 상의 /etc/passwd와 /etc/group을 이용하여 database를 만드는 것을 권장하는데, 여기서는 이 파일들을 사용하지 않고 /var/yp/etc에 별도의 파일로 관리하도록 기술 합니다.
3.3.1 passwd/group list 파일 준비
NIS에서 관리할 passwd/group 파일은 /etc/passwd와 /etc/group 과 동일한 format 을 사용합니다.
passwd와 shadow 파일을 관리하기 위해서는 다음의 script를 생성합니다.
adduser script는 기본으로 MD5 방식의 암호를 생성합니다. 만약 연동할 시스템들이 sha512를 지원하는 버전으로만 구성이 되어 있다면 (예를 들어 CentOS/RHEL 5는 sha512를 지원하지 않습니다.), adduser script의 METHOD 변수 값을 sha512로 수정 하는 것을 권장 합니다.
다음 passwd, group, shadow 파일을 생성 합니다.
/etc/shadow를 해제하는 것 처럼 /var/yp/etc/shadow는 pwunconv의 -l 옵션을 사용할 수 있습니다. 이 옵션은 안녕 리눅스의 pwconv/pwunconv 에만 patch가 되어 있습니다.
만약 동작을 하지 않거나 에러 메시지가 나온다면, yum update 명령을 이용하여 shadow-tuils package를 최신 버전으로 업그레이드 하십시오.
!참고 Web server에서도 NIS 인증을 사용하기 위하여 apache 또는 lighttpd, nginx의 nis 모듈을 사용할 계획이라면, shadow system을 사용할 수 없습니다. yp_match call이 non-root 권한에서는 빈 값을 return 하기 때문에 웹서버를 root 권한으로 실행을 해야합니다. 그러므로 shadow system을 사용하지 말고 구성을 하십시오. 또는, 웹서버의 nis 모듈을 사용하지 말고, cronjob으로 ypcat 명령을 이용하여 .htaccess file을 주기적으로 갱신하여 사용하도록 하십시오.
또한, 보안을 고려 한다면 NIS 보다는 ldap을 이용하여 구성하는 것을 고려 하십시오.
3.3.2 /var/yp/Makefile 설정
/var/yp/Makefile 중에서 다음의 설정들을 수정합니다.
3.3.3 /etc/sysconfig/yppasswdd 설정
/etc/sysconfig/yppasswd 를 다음과 같이 수정 합니다.
3.4 보안 설정
NIS 질의를 할 수 있는 네트워크 대역을 제한 합니다. 형식은 NETMASK NETWORK 형식으로 설정 합니다. 다음의 설정은 127.0.0.0/8 과 192.168.0.0/24 네트워크에서 NIS 질의에 응답하도록 설정한 것입니다.
방화벽을 사용한다면 ypserv와 ypxfrd, yppasswdd의 포트를 고정 시키고 port를 열어주어야 합니다.
3.5 Daemon 실행
3.6 Database 초기화
daemon을 실행 했으면 database를 초기화 합니다.
3.7 database update
ypinit 명령은, 최초에 한번만 실행을 해 주면 됩니다. 그 이후, passwd (/var/yp/etc/passwd)나 group (/var/yp/etc/group) 파일을 수정 한 후에는 /var/yp 에서 make 명령을 실행하면 database가 갱신이 됩니다.
4. NIS slave 설정
master server는 nis1.domain.com, slave server는 nis2.domain.com으로 가정을 합니다.
4.1 package 설치
4.2 NIS domain 설정
NIS master에서 설정했던 NIS DOMAIN을 동일하게 설정을 합니다.
4.3 보안 설정
NIS 질의를 할 수 있는 네트워크 대역을 제한 합니다. 형식은 NETMASK NETWORK 형식으로 설정 합니다. 다음의 설정은 127.0.0.0/8 과 192.168.0.0/24 네트워크에서 NIS 질의에 응답하도록 설정한 것입니다.
방화벽을 사용한다면 ypserv의 포트를 고정 시키고 port를 열어주어야 합니다.
4.4 Daemon 실행
slave server에서는 ypxfrd와 yppasswdd는 구동하지 않습니다.
4.5 Slave database 초기화
/usr/lib64/yp/ypinit를 이용하여 초기화를 합니다.
master와 slave의 architecure가 다를 경우에는 ypxfrd 관련 에러가 발생합니다만, slave 초기화에는 문제는 없으니 참고 하십시오. (예를 들어, master는 x86_64 machine, slave는 x86 machine 일 경우)
4.6 map 동기화 crontab 설정
NIS databse MAP 동기화를 위하여 다음의 설정을 합니다. 이 cronjob은 master에서 업데이트가 된 시점에서 slave가 다운이 되어서 업데이트가 안된 경우라도 대부분의 NIS map들이 최근 것으로 update 되는 것을 보장 합니다.
4.7 Slave server 등록
master server (nis1.domain.com)에서 slave server를 등록합니다.
5. NIS client 설정
5.1 package 설치
5.2 NIS domain 설정
NIS master에서 설정했던 NIS DOMAIN을 동일하게 설정을 합니다.
5.3 NIS 설정
5.3.1 authconfig 를 이용한 방법
authconfig를 이용하여 NIS 설정을 enable 시킵니다.
NIS slave를 구성했다면 /etc/yp.conf 에 추가해 줍니다.
다음 ypbind를 재시작 해 줍니다.
5.3.2 수동으로 설정
수동 설정은 다음의
ypbind 설정
login 시에 자동으로 home directory 생성 (PAM)
nsswitch 설정
authconfig 설정
작업들을 진행 합니다.
5.3.2.1 ypbind 설정
5.3.2.2 PAM 설정
NIS account 계정으로 로그인 시에, home directory가 존재하지 않을 경우 자동으로 생성하도록 합니다.
/etc/pam.d/{system-auth,password-auth,fingerprint-auth,smartcard-auth}-sc 의 session 설정에 아래와 같이 pam_mkhomedir 설정을 해 주십시오.
home directory 생성 실패 시 login을 불허 할 것이라면 required로 설정을 하고, home directory 생성 실패를 하더라도 login을 허락할 것이라면 optional로 설정 하십시오. 위의 예제는 4개의 파일 설정이 모두 동일함으로 password-auth-sc 만 예시를 보여 줍니다.
또한, 인증과 암호 변경을 위하여 password entry에 nis 설정을 추가 합니다. 역시 모든 파일 공통 사항입니다.
shdow 뒤에 nis를 추가해 주십시오. pam 설정 변경은 따로 ypbind 재시작이나 서버 rebooting 등의 작업이 필요없이 실시간으로 반영이 됩니다.
5.3.2.3 nsswitch.conf 설정
passwd, shadow, group 항목에 nis를 추가해 줍니다. nsswitch.conf 에 nis가 등록이 되어야 NIS와 system 인증이 연동이 됩니다.
5.3.2.4 authconfig 설정 반영
/etc/sysconfig/authconfig의 다음 값들을 변경해 줍니다. 다른 설정을 지우라는 것이 아니라 아래에 보여진 변수의 값을 no에서 yes로 변경 하십시오.
5.3.3 NIS 연동 확인
ypbind daemon을 재시작 합니다.
NIS password entry와 shadow entry를 받아오는지 확인을 해 봅니다.
system 에 연동이 잘 되었는지 getent 명령으로 확인을 해 봅니다. /etc/passwd 내용 아라애 NIS passwd entry가 추가로 나와야 합니다. NIS에서는 10000 이상의 UID를 사용하므로, 10000대의 UID가 있는지 확인해 보시면 됩니다.
UID 확인을 쉽게 하기 위하여 pwck 명령으로 passwd file을 UID 순서대로 정렬한 후에 getent를 실행 합니다.
5.3.4 계정 암호 변경
NIS master server에 yppasswdd daemon이 동작하고 있다면 NIS client에서 암호 변경이 가능 합니다.
NIS account들의 암호 변경은 일반 account의 암호를 변경하는 것과 같이 passwd 명령을 이용하여 변경을 하면 됩니다.
root account를 이용하여 다른 NIS account의 암호를 변경하는 경우에는, passwd 명령으로 변경이 불가능 합니다. 이 때에는 yppasswd 명령을 이용하여 변경을 할 수 있습니다.
Last updated
Was this helpful?