[리눅스마스터 1급] 이기적 이론서 12회차 정리 - 인증 관련 서비스

🏁 이기적 이론서 학습 범위

  • PART 03 네트워크 및 서비스의 활용
    • CHAPTER 01 네트워크 서비스 (SECTION 02 인증 관련 서비스)

인증 관련 서비스

☑️ 인증 관련 서비스

리눅스 인증

  • 인증 인가의 개념
    • 리눅스 시스템의 인증 : 시스템을 사용하는 클라이언트가 등록된 사용자인지 확인하는 것
    • 리눅스 시스템의 인가 : 인가된 클라이언트에게 권한을 부여하는 것
      • 어떤 권한인지에 따라 사용할 수 있는 서비스 또는 자원이 달라진다.
  • 리눅스의 기본 인증 방법
    • 사용자 계정을 /etc/passwd, /etc/shadow 등에 등록한 후, 사용자가 로그인 시 입력한 아이디와 패스워드를 등록된 정보와 비교하여 인증을 수행한다.
  • 네트워크 기반 인증 서비스의 필요성
    • 리눅스의 기본 인증 방법은 다수의 시스템 운영 시 사용자 등록, 패스워드 관리 등에서 어려움이 따른다.
    • 네트워크 기반 인증은 이러한 불편을 해결하기 위해 서비스는 인증에 필요한 정보를 인증 서버에 등록한 후, 필요한 시스템에 인증 관련 정보를 제공한다.
    • 대표적으로 NIS(Network Information Service)와 LDAP(Lightweight Directory Access Protocol)가 있다.

NIS와 LDAP 서비스

  • NIS 서비스의 주요 특징
    • 호스트명, 사용자명, 사용자 암호 등과 같은 시스템 정보를 검색하고 관리하기 위해 썬(Sun)사가 개발한 서비스로, RPC(Remote Procedure Call)을 사용한다.
    • NIS 서버에 등록된 사용자 계정, 암호, 그룹 정보 등을 네트워크를 이용해 다른 시스템에게 제공한다.
      • 여러 호스트들이 동일한 계정 정보를 쓸 수 있다.
    • telnet, samba, ssh 등의 서비스에서 사용자 인증을 할 수 있다.
  • LDAP 서비스의 주요 특징
    • 디렉터리 서비스를 조회하고 수정하는 TCP 기반 응용 프로토콜
    • X.500 DAP(Directory Access Protocol)을 기반으로 하고, 컴퓨팅 자원을 많이 소비하는 단점을 개선하고자 보다 경량화된 모델로 개발되었다.
    • RDBMS에 비해 빠른 검색 속도를 제공하지만 자주 변경되는 정보의 관리에는 다소 불편하다.
    • 여러 엔트리가 트리 구조로 구성되어 있다.
      • 각 엔트리는 다수의 속성으로 구성되고, 각 속성은 이름, 값 의 형식을 가진다.
    • LDAP의 주요 속성

      속성설명속성설명
      c국가 이름ou부서 이름
      st주 이름(우리나라는 도)cn전체 이름(이름 + 성)
      l도시 혹은 지역sn
      street도로명 주소givenName이름
      dn조직 내 고유 식별자dc도메인 네임 요소
      rdn상대(relative) DNmail이메일 주소
      o조직(회사) 이름telephoneNumber전화번호
    • 각 엔트리는 DIT(Directory Information Tree)라는 트리 구조로 조직화되며, DN(Distinguished Name)라는 고유 식별자로 지칭된다.
      • DNRDN(Relative Distinguished Name)으로 구성된다.
      • ex. 디렉터리 파일의 경우 /home/master/whoami.md 와 같은 전체 경로를 DN이라 한다. whoami.mdRDN이고 /home/master가 상위 엔트리의 DN이다.
    • LDAP에 새로운 엔트리를 생성할 때 특정한 objectClass에 속하도록 설정하면 해당 objectClass의 속성을 상속받는다.
      • objectClass : 국가, 조직과 같이 동일한 설정을 갖는 그룹
    • 마이크로소프트의 Active Directory는 LDAP를 기반으로 인증 서비스를 제공한다.

☑️ NIS 서비스 사용

NIS 서버 설치와 구성

  • NIS 서비스 구성을 위한 사전 작업
    • RPC 데몬 구동

        # NIS는 RPC를 이용하므로 RPC 데몬을 구동시킨다.
        # 서버와 클라이언트 호스트 모두에서 RPC를 구동해야 한다.
        $ systemctl start rpcbind
              
        $ systemctl enable rpcbind # 부팅 시 항상 rpcbind가 실행되도록 함
      
    • 실습을 위해 /etc/hosts 파일에 IP도메인을 등록한다.

      • IP 주소는 id addr 로 확인할 수 잇다.
      • /etc/hosts 파일 이용 시 외부 DNS 질의(query) 없이 도메인과 IP 매핑을 사용할 수 있다.
        $ vi /etc/hosts
              
        $ systemctl restart NetworkManager # /etc/hosts 파일 수정 후 network 서비스 재시작 (서버, 클라이언트에 모두 적용)
      
  • NIS 서버 설치
    • NIS 서버의 패키지 설치

        $ yum -y install ypserv # NIS 서버의 패키지 이름은 ypserv로, 패키지를 설치한다.
              
        $ ls /usr/lib/systemd/system/ | grep ^yp # /usr/lib/systemd/system에 NIS 관련 서비스 파일들이 설치됨
      
    • NIS 관련 서비스 파일의 역할

      서비스 파일설명
      ypserv.serviceNIS 서버의 메인 데몬을 구동한다.
      yppasswdd.serviceNIS 사용자 패스워드를 관리한다.
      ypxtrd.serviceNIS 서버와 NIS 클라이언트 간의 맵핑 속도를 높여준다.
  • NIS 도메인명 설정

      $ nisdomainname youngjin@nistest.com # nisdomainname을 통해 NIS 도메인명 설정
      OR
      $ vi /etc/sysconfig/network # /etc/sysconfig/network 파일에 수동으로 NIS 도메인명 등록 (재부팅 시 자동으로 적용 가능)
        
      $ nisdomainname # nisdomainname을 통해 설정한 도메인명 확인
    
  • NIS 사용자 계정 생성

      $ useradd nisuser # NIS 클라이언트에서 사용할 계정 생성
        
      $ passwd nisuser
    
  • NIS 관련 데몬 실행

      # ypserv, yppasswdd, ypxfrd를 시작
      $ systemctl start ypserv.service yppasswdd.service ypxfrd.service
        
      $ ps aux | grep yp # 동작 상태 확인
    
  • NIS 정보 갱신 및 적용
    • 사용자 추가 등 NIS 관련 설정 후 NIS 정보를 갱신해야 한다.

        $ cd /var/yp # /var/yp 디렉터리로 이동
              
        # NIS 정보 갱신
        $ make
        OR
        $ make -c /var/yp 
      
    • make 완료시 /var/yp 디렉터리에 NIS 서버 이름의 디렉터리가 만들어지고 NIS 관련 정보를 갖고 있는 맵(Map) 파일들이 생성된다.
      • 새로운 사용자 추가 시 해당 맵 파일도 다시 갱신해야 한다.
        $ ls 
        Makefile youngjin-nistest.com
              
        $ ls youngjin-nistest.com/
      
    • NIS 관련 서비스를 재시작하여 설정한 것을 반영하고, 부팅 시 자동으로 시작되도록 한다.

        $ systemctl restart ypserv.service yppasswdd.service ypxfrd.service # NIS 관련 서비스 재시작
              
        $ systemctl enable ypserv.service yppasswdd.service ypxfrd.service # 부팅 시 자동으로 시작되도록 설정
      

NIS 클라이언트 설치와 구성

  • NIS 클라이언트 구성을 위한 사전 작업
    • NIS 서비스 설치의 준비과정과 동일하다.
    • RPC 데몬을 구동하고 hosts 파일에 테스트를 위한 도메인과 IP 매핑을 등록한다.
  • NIS 클라이언트 설치
    • ypbind는 바인드 정보를 관리하며, NIS 서버와 클라이언트를 연결한다.

        $ yum -y install ypbind yp-tools # yum을 통해 NIS 클라이언트 패키지인 ypbind와 yp-tools 설치
      
  • NIS 도메인명 설정

      $ nisdomainname youngjin-nistest.com # nisdomainname을 통해 NIS 도메인명 설정
      OR
      $ vi /etc/sysconfig/network # /etc/sysconfig/network 파일에 NIS 도메인명 수동 등록 (재부팅 시 자동 적용)
        
      $ nisdomainname # nisdomainname을 통해 설정한 도메인명 확인
    
  • NIS 서비스(서버)와 도메인 정보 설정
    • /etc/yp.conf 파일에 NIS 서비스(서버)와 도메인 정보를 설정한다.

        $ vi /etc/yp.conf
      
  • NIS 클라이언트 데몬인 ypbind 시작

      $ systemctl start ypbind.service
        
      $ ps aux | grep ypbind
        
      $ systemctl enable ypbind.service
    
  • authconfig 명령을 이용한 클라이언트 설정

      $ authconfig --enables --nisdomain=youngjin-nistest.com \
    
  • NIS의 계정 정보를 이용한 로그온
    • SSH 를 이용하여 client 호스트에 로그온한다.
    • 계정 아이디와 패스워드는 NIS 서버에 등록한 것(nisuser)를 이용한다.

        $ ssh -l nisuser 192.168.45.216
      

NIS 관련 주요 명령어

주요 명령어설명
nisdomainname- NIS 도메인 이름을 설정하거나 설정된 이름 표시
- ex. nisdomainname youngjin-nistest.com
ypwhich- NIS를 이용하여 로그인한 후, 인증에 사용한 NIS 서버를 조회
- ex. ypwhich
- -m 옵션: NIS 서버의 맵(map) 정보 출력
- ex. ypwhich -m
ypcat- NIS 서버의 구성파일(맵 파일)의 내용 확인 - ex. ypcat hosts.byname
- ex. ypcat passwd.byname
- ypcat의 대상이 되는 파일명에서 .byname 생략 가능
yptest- NIS 클라이언트에서 NIS의 동작 및 설정 등을 확인하고 도메인명, 맵 파일 목록, 사용자 계정 정보 등을 출력
- ex. yptest
yppasswd- NIS 서버에 등록된 사용자 비밀번호를 변경
- ex. yppasswd nisuser
ypchsh- NIS 서버에 등록된 사용자의 셸(shell)을 변경
- ex. ypchsh nisuser
ypchfn- NIS 서버에 등록된 사용자 정보 변경
- ex. ypchfn nisuser

© 2021. All rights reserved.

yaejinkong의 블로그