리눅스

리눅스 NIS (Network Information Service)개념 및 계정통합 서버구축 방법

coinAA 2022. 9. 18. 17:32

 

목차

     

    NIS란?

    Network Information Service, NIS는 썬 마이크로시스템즈의 클라이언트 서버 디렉터리 서비스 프로토콜이며, 컴퓨터 네트워크 위의 컴퓨터들 사이에 있는 사용자와 호스트 이름과 같은 시스템 구성 데이터를 여러 곳에 제공한다.

    다수의 서버를 운영해야 하는 시스템에서 사용자의 계정 정보가 모든 서버에 개별로 저장되어 변경하거나 이용하기 불편한 점을 보완하기 위해서 만들어진 네트워크 기반의 인증서비스이며, NIS는 하나의 서버에만 사용자의 계정이나 암호 등을 저장해 두면 이 서버가 다른 시스템과 계정 정보를 공유하는 서비스이다.


    리눅스 같은 유닉스 계열의 운영체제를 사용하기 위해서는 기본적으로 사용자의 아이디와 패스워드를 입력해 인증을 거쳐야 하는데, 하나의 서버를 이용하는 경우에는 인증절차가 문제 되지는 않지만, 서버의 개수가 수십에서 수백 대가 넘어가는 경우 사용자가 각 서버별로 아이디나 패스워드가 등록되어야 하는 불필요한 관리 포인트가 발생한다. 이러한 문제점은 관리자에게 다소 번거로운 부분도 있지만 사용자가 개인정보까지 변경해야 하는 경우, 여러 서버에 있는 개인정보까지 모두 바꿔야 하는 불편한 관리 포인트가 있다.

     

    쉽게 말해 하나의 계정 통합관리 서버를 이용하여 여러 서버들에 같은 계정을 제공하는 서버라고 이해하면 쉽게 이해할 수 있다.

     

    NIS Daemon(NIS 데몬)

    관련 데몬 데몬 설명
    ypserv NIS Server 데몬이다.
    ypxfrd NIS Server와 Cilent 간의 NIS map을 전송하는 역할을 한다.
    ypbind 모든 NIS Cilent에서 동작하며, NIS Server가 Cilent에게 ypserv로 NIS 요청을 시도한다.
    rpc.yppasswd NSI Client의 패스워드를 설정하는 데몬이다.
    rpc.ypupdated NIS 마스터에서만 실행한다. 보안 "원격 프로시져 콜"을 사용하고 있는 경우 공용 키 맵을 업데이트한다.

     

     

     

    NIS Server 구축

    NIS Server 구축 환경 사전 준비

    OS 정보 확인

     cat /etc/redhat-release

    cat /etc/redhat-release 결과값

     

    SELinux OFF

    SELinux 재부팅 하지 않고 OFF 방법

    setenforce 0

     

    SELinux 영구적 OFF 방법

    SELINUX=enforcing 을 SELINUX=disabled 로 변경 후 저장한다.

    vi /etc/sysconfig/selinux

    vi /etc/sysconfig/selinux 결과값

    SELinux 상태 확인

    sestatus

    sestatus 결과값

     

     

    NIS Server 구축

    NIS 관련 패키지 설치

    yum -y install ypserv ypbind rpcbind

     

    NIS 도메인명 설정

    nisdomainname [설정할 도메인명]
    
    #설정 도메인 확인
    nisdomainname

     

    NIS 도메인명 영구 설정

    vi /etc/sysconfig/network
    
    #Created by anaconda
    NISDOMAIN=[도메인명]

     

    NIS Service 시작 및 자동시작 등록

    ypbind가 시작되지 않을 수 있으며, 정상적이다. authconfig를 이용하여 NIS 설정 활성화한 후 다시 ypbind만 시작해주면 된다.

    #NIS 데몬 자동시작 등록
    systemctl enable ypserv yppasswdd ypxfrd ypbind rpcbind
    
    #NIS 데몬 시작
    systemctl start ypserv yppasswdd ypxfrd ypbind rpcbind
    
    #NIS 데몬 상태확인
    systemctl status ypserv yppasswdd ypxfrd ypbind rpcbind

     

    NIS Server Database 초기화

    /usr/lib64/yp/ypinit -m 명령어를 입력한 이후 CTRL-D를 눌러 종료하고 y를 입력하면 초기화는 완료된다.

    /usr/lib64/yp/ypinit -m
    
    [root@localhost yp]# /usr/lib64/yp/ypinit -m
    
    At this point, we have to construct a list of the hosts which will run NIS
    servers.  fork.kldp.org is in the list of NIS server hosts.  Please continue to add
    the names for the other hosts, one per line.  When you are done with the
    list, type a <control D>.
            next host to add:  nisserver
            next host to add:  <종료를 하기 위하여 CTRL-D 를 누릅니다.>
    The current list of NIS servers looks like this:
    
    nisdomain.com
    
    Is this correct?  [y/n: y]  y
    We need a few minutes to build the databases...
    Building /var/yp/OOPS-NIS/ypservers...
    Running /var/yp/Makefile...
    gmake[1]: Entering directory `/var/yp/OOPS-NIS'
    Updating passwd.byname...
    Updating passwd.byuid...
    Updating group.byname...
    Updating group.bygid...
    Updating hosts.byname...
    Updating hosts.byaddr...
    Updating rpc.byname...
    Updating rpc.bynumber...
    Updating services.byname...
    Updating services.byservicename...
    Updating protocols.bynumber...
    Updating protocols.byname...
    Updating mail.aliases...
    gmake[1]: Leaving directory `/var/yp/OOPS-NIS'
    
    nisserver has been set up as a NIS master server.
    
    Now you can run ypinit -s nis1.domain.com on all slave server.
    [root@localhost ~]$

     

    NIS 정보 갱신

    cd /var/yp
    make
    
    #위 경로로 이동하지 않고 make 시도
    make -C /var/yp

    /var/yp/ 경로에서 make 결과 / make -C /var/yp 결과

     

    authconfig를 이용하여 NIS 설정 활성화

    authconfig --enablenis \
                           --nisdomain=[Server Domain] \
                           --nisserver=[Hostname or IP] \
                           --enablemkhomedir \
                           --update
    #NIS 데몬 시작
    systemctl start ypbind
    
    #NIS 데몬 상태확인
    systemctl status ypbind

     

    NIS Server 계정 생성

    계정 생성 이후에는 반드시 make -C /var/yp 하여 갱신해줘야 한다.

    #Client 연동 후 로그인 테스트할 계정 생성
    useradd [생성할 유저명]

     

    NIS Firewall 방화벽 보안 설정

    방화벽 설정을 위해 사용 포트 고정

    #아래 경로 편집기로 이동하여 사용포트 고정
    vi /etc/sysconfig/network
    
    # Created by anaconda
    NISDOMAIN=nisser
    YPSERV_ARGS="-p 834"
    YPXFRD_ARGS="-p 835"
    YPPASSWDD_ARGS="-p 836"

    NIS Port Firewall 방화벽 정책 등록

    firewall-cmd --permanent --add-service=rpc-bind
    firewall-cmd --permanent --add-port=834/tcp
    firewall-cmd --permanent --add-port=834/udp
    firewall-cmd --permanent --add-port=835/tcp
    firewall-cmd --permanent --add-port=835/udp
    firewall-cmd --permanent --add-port=836/udp
    firewall-cmd --reload

     

    NIS Iptable 방화벽 보안 설정

    방화벽 설정을 위해 사용 포트 고정

    #아래 경로 편집기로 이동하여 사용포트 고정
    vi /etc/sysconfig/network
    
    # Created by anaconda
    NISDOMAIN=nisser
    YPSERV_ARGS="-p 834"
    YPXFRD_ARGS="-p 835"
    YPPASSWDD_ARGS="-p 836"

     

    NIS Port Iptable 방화벽 정책 등록

     

    iptables -I INPUT -p tcp -m multiport --dport 111,834:835 -j ACCEPT
    iptables -I INPUT -p udp -m multiport --dport 111,834:836 -j ACCEPT
    
    #iptable 방화벽 정책 저장
    service iptables save
    
    #서비스 재시작
    systemctl restart iptables

     

     

    NIS Client 연동

    NIS Client 패키지 설치 및 도메인 설정

    #NIS 필요 패키지 설치
    yum -y install ypbind rpcbind
    
    #NSI 도메인 명 설정
    nisdomainname [도메인 명]
    
    #NIS  도메인 명 확인
    nisdomainname

     

    authconfig를 이용하여 NIS 설정 활성화

    authconfig --enablenis \
                           --nisdomain=[Server Domain] \
                           --nisserver=[Hostname or IP] \
                           --enablemkhomedir \
                           --update

     

    NIS Client 데몬 재시작

    ypbund 데몬이 실행되지 않을 경우 SELinuxd의 상태를 확인 한 후 실행 중일 경우 setenforce 0하여 비활성화 한다.

    Client 또한 NIS Server 설정과 마찬가지로 SELinuxd 설정을 비활성화 해야 한다.

    systemctl restart ypbind rpcbind

     

    NIS Server와 연동 확인

    #Client에서 명령어 입력 후 결과값 나오면 성공
    ypcat passwd

    ypcat passwd 결과값