본문 바로가기

자격증/리눅스 마스터 1급

Part3) 네트워크 및 서비스의 활용 - 네트워크 서비스 | 인증관련 서비스

II. 웹 관련 서비스


인증관련 서비스의 이해

1) 인증 서비스의 정의

리눅스는 하나의 서버에 여러 사용자가 로그인 할 수 있는 멀티유저 환경을 제공한다. 시간이 지날수록 네트워크상에서 호스트들은 증가하였고, 각각 호스트에 사용자 인증 정보를 저장하는 것은 관리의 문제가 되었다. 이때문에 리눅스에서 인증서비스가 요구된다.



2) 인증 서비스의 구조

*NIS 구조
-네트워크상 적어도 하나의 NIS 서버가 있으며, 호스트는 여러 개의 다른 NIS 도메인들의 여러 개의 NIS서버를 사용할 수 있다.
-하나의 Master NIS서버로, 다른 것들은 Slave NIS 서버로 NIS를 구성할 수 있다.
-Slave NIS서버는 단지 NIS 데이터베이스 복사본을 가지고 있으며, 이것들은 갱신될 떄마다 Master NIS서버는 Slave NIS서버에 yppush를 내리며, Slave NIS서버는 Master NIS서버로 부터 ypxfr 명령을로 복사본을 가져온다.

*LDAP의 구조
-클라이언트-서버 모델에 기초하는데, 하나 또는 그 이상의 LDAP서버들이 LDAP 디렉토리 트리 또는 백엔드 데이터베이스를 구성하는 자료를 갖고있다.
-LDAP 클라이언트는 LDAP 서버에 연결해 질의하며, 서버는 답 또는 클라이언트가 더 많은 정보를 얻을 수 있는 포인터를 갖고 응답한다.
-클라이언트는 어떤 LDAP 서버에 연결하던지 간에 동일한 디렉토리 구조를 본다.

LDAP 표준
-개별 객체 또는 객체 그룹의 정렬되지 않은 리스트를 포함하고 있는 디렉토리내 그룹
-국가명과 설명과 같은 장소
-디렉토리내 조직
-디렉토리내 사람

LDAP 속성

 속성

 내용 

 o 

 Organization(최상위 조직) 

 ou 

 Organizational Unit(조직의 부서) 

 cn 

 Common Name(가장 일반적인 이름) 

 objectClass 

 속성이 따르는 스키마 




인증관련 서버 관리(설치 및 설정)

1) NIS 설정 및 고급활용


①NIS 서버 설치
root@bjkim:~# yum install ypserv

②NIS Master 서버 설정
[1] NIS 도메인 설정
root@bjkim:~# ypdomainname bjkim.com
root@bjkim:~# nisdomainname
bjkim.com

[2] hostname 설정

root@bjkim:~# hostname nis.bjkim.com
root@bjkim:~# hostname
nis.bjkim.com


(서버 부팅 후에도 위 사항 적용되게 설정: "/etc/sysconfig/network"에 다음 내용을 수정 및 추가)

NISDOMAIN=bjkim.com
HOSTNAME=nis.bjkim.com


(설정한 호스트네임에 대한 IP를 설정: "/etc/hosts"의 최상단에 다음 내용을 추가)

192.168.0.129  nis.bjkim.com


[3] NIS 서버에 대한 보안 설정

255.255.255.255  127.0.0.1
255.255.255.0     192.168.0.0


[4] NIS 데이터베이스(맵)생성에 대한 설정
(NIS 기본설정은 shadow파일을 사용하지 않고 passwd 데이터베이스 파일에 합치는 설정이여서, shadow를 따로 생성하도록 "/var/yp/Makefile"을 수정)
# MERGE_PASSWD=true|false
#MERGE_PASSWD=true
MERGE_PASSWD=false

# MERGE_GROUP=true|false
#MERGE_GROUP=true
MERGE_GROUP=false

#all:  passwd group hosts rpc services netid protocols mail \
all: passwd shadow group hosts rpc services netid protocols mail \


[5] NIS 서버 시작

(NIS 서버에 필요한 portmap, NIS 서버 ypserv, NIS 비밀번호 변경을 위한yppasswdd, NIS Slave에서 NIS Master의 데이터베이스를 가져오기 위해 필요한 ypxfrd 를 시작하고 서버 부팅시 자동시작 되게 끔 설정)

root@bjkim:~# service portmap start
portmap (을)를 시작 중:                            [ OK ]
root@bjkim:~# service ypserv start
YP 서버 서비스를 시작 중:                          [ OK ]
root@bjkim:~# service yppasswdd start
YP passwd서비스를 시작 중:                        [ OK ]
root@ bjkim:~# service ypxfrd start
YP map서버를 시작 중:                              [ OK ]

root@bjkim:~# chkconfig portmap on
root@bjkim:~# chkconfig ypserv on
root@bjkim:~# chkconfig yppasswdd on
root@bjkim:~# chkconfig ypxfrd on


[6] NIS Master 서버 초기화

root@bjkim:~# /usr/lib64/yp/ypinit -m


[7] 테스트 계정 생성

root@bjkim:~# useradd bjkim
root@bjkim:~# passwd bjkim
Changing password for user bjkim.
New UNIX passwd: <비밀번호입력>
Retype new UNIX password: <비밀번호입력>
passwd: all authentication tokens updated successfully.


[8] NIS 서버 데이터베이스(맵) 갱신

root@bjkim:~# cd /var/yp/
root@bjkim:~# make
gmake[1]: Entering directory '/var/yp/bjkim.com'
Updating netid.byname...
gmake[1]: Leaving directory '/var/yp/bjkim.com'


(strings 명령어로 갱신된 데이터베이스 확인)

root@bjkim:~# strings /var/yp/bjkim.com/passwd.byname | grep bjkimYP_MASTER_NAMEnis.bjkim.comYP_INPUT_NAME
/etc/passwdYP_OUTPUT_NAME/var/yp/bjkim.com/passwd.bynameYP_LAST_MODIFIED1368924178mysqlmysql:x:500:500::
/usr/local/mysql:/bin/bashbjkimbjkim:x:501:501::/home/bjkim:/bin/bash


[9] NIS 서버의 데이터베이스 파일들 확인

root@bjkim:~# tree /var/yp/
/var/yp/
|--Makefile
|--binding
|--nicknames
|--securenets
|--bjkim.com
|   |--group.bygid
|   |--group.byname
|   |--hosts.byaddr
|   |--hosts.byname
|   |--mail.aliases
|   |--netid.byname
|   |--passwd.byname
|   |--passwd.byuid
|   |--protocols.byname
|   |--protocols.bynumber
|   |--rpc.byname
|   |--rpc.bynumber
|   |--services.byname
|   |--services.byservicename
|   |--shadow.byname
|   '--ypservers
'--ypservers


③NIS Slave 서버 설정

[1] NIS 도메인 설정 및 hostname 설정
root@bjkim:~# ypdomainname bjkim.com
root@bjkim:~# nisdomainname
bjkim.com
root@bjkim:~# hostname niss.bjkim.com
root@bjkim:~# hostname
niss.bjkim.com


(서버 부팅 후에도 위 사항 적용되게 설정: "/etc/sysconfig/network"에 다음 내용을 수정 및 추가)

NISDOMAIN=bjkim.com
HOSTNAME=niss.bjkim.com


(설정한 호스트네임에 대한 IP를 설정: "/etc/hosts"의 최상단에 다음 내용을 추가)

192.168.0.129  nis.bjkim.com
192.168.0.130  niss.bjkim.com

[2] NIS Slave 서버에 대한 보안 설정
255.255.255.255  127.0.0.1
255.255.255.0      192.168.0.0


[3] NIS 데이터베이스(맵)생성에 대한 설정
# MERGE_PASSWD=true|false
#MERGE_PASSWD=true
MERGE_PASSWD=false

# MERGE_GROUP=true|false
#MERGE_GROUP=true
MERGE_GROUP=false

#all:  passwd group hosts rpc services netid protocols mail \
all: passwd shadow group hosts rpc services netid protocols mail \

[4] NIS 서버 시작
root@bjkim:~# service portmap start
portmap (을)를 시작 중:                            [ OK ]
root@bjkim:~# service ypserv start
YP 서버 서비스를 시작 중:                          [ OK ]
root@bjkim:~# service yppasswdd start
YP passwd서비스를 시작 중:                        [ OK ]
root@ bjkim:~# service ypxfrd start
YP map서버를 시작 중:                              [ OK ]

root@bjkim:~# chkconfig portmap on
root@bjkim:~# chkconfig ypserv on
root@bjkim:~# chkconfig yppasswdd on
root@bjkim:~# chkconfig ypxfrd on

[5] NIS Slave 서버 초기화
root@bjkim:~# /usr/lib64/yp/ypinit -s nis.bjkim.com



④NIS 클라이언트 설정

[1] NIS 도메인 설정

root@bjkim:~# ypdomainname bjkim.com
root@bjkim:~# nisdomainname
bjkim.com


(서버 부팅 후에도 위 사항 적용되게 설정: "/etc/sysconfig/network"에 다음 내용을 수정 및 추가)

NISDOMAIN=bjkim.com


(설정한 호스트네임에 대한 IP를 설정: "/etc/hosts"의 최상단에 다음 내용을 추가)

192.168.0.129  nis.bjkim.com
192.168.0.130  niss.bjkim.com


[2] 인증설정 편집
#USENIS=no
USENIS=yes


[3]NIS 서버 리스트 추가

("/etc/yp.conf"파일에 추가)

domain bjkim.com server nis.bjkim.com
domain bjkim.com server niss.bjkim.com


[4]nsswitch.conf 파일 수정

(우선순위 변경: ex. passwd파일은 /etc/passwd 파일을 참조 후 NIS를 참조하며,  hosts는 /etc/hosts파일을 참조 후 DNS서버에 조회를 하며, NIS를 참조)

#passwd:    files
passwd:    files nis

#shadow:    files
shadow: files nis

#group:    files
group:    files nis

#hosts:    files dns
hosts:    files dns nis


[5] 홈디렉토리 없을 시 자동생성 설정

PAM설정: "/etc/pam.d/system-auth" 파일 가장 아래에 추가

sessiion   optional   pam_mkhomdir.so skel=/etc/skel umask=077


[6] NIS 클라이언트 시작

root@bjkim:~# service portmap start
portmap (을)를 시작 중:                            [ OK ]
root@bjkim:~# /etc/init.d/ypbind start start
NIS 도메인에 연결함:                                [ OK ]
NIS 도메인 서버를 찾는 중.

root@bjkim:~# chkconfig portmap on
root@bjkim:~# chkconfig ypbind on


[7] NIS 클라이언트 확인

root@bjkim:~# ssh -l bjkim 192.168.0.115
bjkim@192.168.0.115's password: <비밀번호>
Creating directory '/home/bjkim'.
Creating directory '/home/bjkim/.mozilla'.
Creating directory '/home/bjkim/.mozilla/extensions'.
Creating directory '/home/bjkim/.mozilla/plugins'.


(로그인 후 ypwhich명령어로 인증받은 NIS 서버를 조회)

root@bjkim:~# ypwhich
nis.bjkim.com


(ypcat 명령어로 passwd파일과 hosts파일 조회)

root@bjkim:~# ypcat passwd
bjkim:x:501:501::/home/bjkim:/bin/bash
mysql:x:500:500::/usr/local/mysql:/bin/bash


root@bjkim:~# ypcat hosts 127.0.0.1 localhost.localdomain localhost bjkim-64Bit 127.0.0.1 localhost.localdomain localhost bjkim-64Bit 127.0.0.1 localhost.localdomain localhost bjkim-64Bit 192.168.0.129 nis.bjkim.com 192.168.0.130 niss.bjkim.com


(yptest명령어로 테스트)

root@bjkim:~# yptest


2) LDAP 서버 및 클라이언트 설정 및 고급활용

①OpenLDAP 서버 설치
root@bjkim:~# yum install openldap opendap-servers openldap-clients


②OpenLDAP 서버 설정

[1] OpenLDAP 관리자 비밀번호 생성

root@bjkim:~# slappasswd
New password: 비밀번호
Re-enter new password: 비밀번호
{SSHA}AS4d0W6HcCVurbmsVP3kWx7DYFcblAYS


[2] OpenLDAP 서버 설정파일 수정

("/etc/openldap/slapd.conf" 파일 수정)

uffix     "dc=my-domain,dc=com"
rootdn    "cn=Manager,dc=my-domain,dc=com"
==>
suffix    "dc=bjkim,dc=com"
rootdn   "cn=Manager,dc=bjkim,dc=com"


[3] OpenLDAP 서버 시작

(서비스 시작 후 서버 부팅 시 자동시작 되게끔 설정)

root@bjkim:~# service ldap start
slapd (을)를 시작 중:                         [ OK ]
root@bjkim:~# chkconfig ldap on


[4] 조직 구성 설정

(부서 구성: "/root/base.ldif 파일 작성)

dn: dc=bjkim,dc=com
dc: bjkim
objectClass: top
objectClass: domain

dn: ou=People,dc=bjkim,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=bjkim,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit


(위에서 작성한 내용을 LDAP DB에 추가:  <옵션> -x:간단한인증, -W:비밀번호 프롬프트에서 받음, -D: DN 지정)

root@bjkim:~# ldapadd -x -W -D "cn=Manager,dc=bjkim,dc=com" -f base.ldif
Enter LDAP passwd: 비밀번호
adding new entry "dc=bjkim,dc=com"

adding new entry "ou=People,dc=bjkim,dc=com"

adding new entry "ou=Group,dc=bjkim,dc=com"


(계정 정보 생성: "/root/user.ldif" 파일 작성)

dn: uid=bjkim,ou=People,dc=bjkim,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: bjkim
sn: bjkim
givenName: bjkim
cn: bjkim
displayName: bjkim
uidNumber: 501
gidNumber: 501
userPassword: {crypt}8peqVKpwvyrWQ
gecos: bjkim
loginShell: /bin/bash
homeDireectory: /home/bjkim
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 0
shadowMax: 99999
shadowLastChange: 15844


(위에서 작성한 내용을 LDAP DB에 추가) 

root@bjkim:~# ldapadd -x -W -D "cn=Manager,dc=bjkim,dc=com" -f user.ldif
Enter LDAP Password:비밀번호
adding new entry "uid=bjkim,ou=People,dc=bjkim,dc=com"


(그룹 정보 생성: "/root/group.ldif 파일 작성)

dn: cn=bjkim,ou=Group,dc=bjkim,dc=com
objectClass: posixGroup
dn: bjkim
gidNumber: 501


(위에서 작성한 내용을 LDAP DB에 추가) 

ldapadd -x -W -D "cn=Manager,dc=bjkim,dc=net" -f group.ldif
Enter LDAP Password: 비밀번호
adding new entry "cn=bjkim,ou=Group,dc=bjkim,dc=net"


[5] OpenLDAP 서버의 데이터베이스 파일들 확인

root@bjkim:~# tree /var/lib/ldap/
/var/lib/ldap/
|--__db.001
|--__db.002
|--__db.003
|--__db.004
|--__db.005
|--__db.006
|--alock
|--cn.bdb
|--dn2id.bdb
|--gidNumber.bdb
|--givenName.bdb
|--id2entry.bdb
|--log.0000000001
|--loginShell.bdb
|--memberUid.bdb
|--objectClass.bdb
|--ou.bdb
|--sn.bdb
|--uid.bdb
'--uidNumber.bdb


③LDAP 클라이언트 설정


[1] 인증설정 편집

#USELDAPAUTH=no
USELDAPAUTH=yes

#USELDAP=no
USELDAP=yes


[2] nsswitch.conf 파일 수정

(관리 정보의 종류에 따라 검색 경로를 명시 할 수 있는 중앙 설정 파일)

#passwd: files
passwd: files ldap

#shadow: files
shadow: files ldap

#group: files
group: files ldap


[3] ldap.conf 수정

("/etc/ldap.conf" 파일에 DN을 설정하고, LDAP 서버의 IP를 다음과 같이 수정)

#base dc=example,dc=com
base dc=bjkim,dc=com
uri ldap://LDAP서버아이피/


("/etc/openldap/ldap.conf" 파일에 DN을 설정하고, LDAP 서버의 IP를 다음과 같이 수정)

#BASE dc=example, dc=com
BASE dc=bjkim,dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
URI ldap://LDAP서버아이피/


[4] 홈디렉터리 없을 시 자동생성 설정

("/etc/pam.d/system-auth"의 가장 아래에 다음 내용을 추가)

session   optional   pam_mkhomedir.so skel=/etc/skel umask=077  


[5] LDAP 클라이언트 확인

(bjkim 계정으로 로그인 하여 테스트)

root@bjkim:~# ssh -l bjkim 192.168.0.115
bjkim@192.168.0.115's password: <비밀번호>
Creating directory '/home/bjkim'.
Creating directory '/home/bjkim/.mozilla'.
Creating directory '/home/bjkim/.mozilla/extensions'.
Creating directory '/home/bjkim/.mozilla/plugins'.


(로컬에 존재하지 않고, LDAP 서버에 생성된 "bjkim"계정의 정보를 확인)

root@bjkim:~# getent shadow | grep bjkim
bjkim:8peqVKpwvyrWQ:15844:0:99999:7:::0