21.5. NIS에서 IdM으로 마이그레이션
기존 NIS 서버에서 IdM(Identity Management)으로 마이그레이션하려면 다음 단계를 수행해야 합니다.
21.5.1. IdM에서 Netgroup Entries 준비
마이그레이션하기 전에 현재 NIS 서버에서 관리 중인 ID를 확인합니다.
- 사용자 항목
- NIS에서 제공하는 사용자 정보를 사용하고 있는 애플리케이션 확인. sudo 와 같은 일부 유틸리티에는 NIS netgroups가 필요하지만 다른 일부 유틸리티에서는 일반 UNIX 그룹을 사용할 수 있습니다.마이그레이션하려면 다음을 수행합니다.
- IdM에 해당 사용자 계정을 생성합니다. 21.5.3.1절. “사용자 항목 마이그레이션” 참조하십시오.
- 또한 netgroups가 필요한 경우:
- 네트그룹을 추가합니다. 21.3.1절. “Netgroup 추가” 참조하십시오.
- 사용자를 netgroup에 추가합니다. 21.5.3.4절. “Netgroup Entries 마이그레이션” 참조하십시오.
- 호스트 항목
- IdM에서 호스트 그룹을 생성하면 해당 shadow NIS 그룹이 자동으로 생성됩니다. 이 shadow NIS 그룹에서 ipa netgroup-* 명령을 사용하지 마십시오. ipa netgroup-* 명령을 사용하여 netgroup-add 명령을 통해 생성된 기본 netgroups만 관리합니다.
- 직접 변환의 경우
- 모든 사용자 및 호스트 항목에 동일한 이름을 사용해야 하는 경우 IdM에서 동일한 이름을 사용하여 항목을 생성할 수 있습니다.
- netgroup에서 참조한 모든 사용자에 대한 항목을 만듭니다.
- netgroup에서 참조되는 모든 호스트에 대한 항목을 만듭니다.
- 원래 netgroup과 동일한 이름으로 netgroup을 만듭니다.
- 사용자 및 호스트를 netgroup의 직접 구성원으로 추가합니다. 사용자와 호스트가 그룹 또는 호스트 그룹의 구성원인 경우 이러한 그룹을 netgroup에 추가할 수도 있습니다.
21.5.2. ID 관리에서 NIS Listener 활성화
21.2절. “ID 관리에서 NIS 활성화” 참조하십시오.
21.5.3. 기존 NIS 데이터 내보내기 및 가져오기
NIS 서버에는 사용자, 그룹, 호스트, 네트그룹 및 자동 마운트 맵에 대한 정보가 포함될 수 있습니다. 이러한 항목 유형을 IdM로 마이그레이션할 수 있습니다.
다음 섹션에서는 ypcat 명령을 사용하여 현재 NIS 서버의 데이터를 내보내고 해당 ipa *-add 명령을 사용하여 출력을 IdM으로 가져옵니다.
- 마이그레이션 스크립트에서 사용된 ypcat 명령을 제공하므로
yp-tools
패키지를 설치해야 합니다.[root@nis-server ~]# yum install yp-tools -y
21.5.3.1. 사용자 항목 마이그레이션
NIS
passwd
맵에는 이름, UID, 기본 그룹, GECOS, 쉘 및 홈 디렉터리와 같은 사용자에 대한 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS 사용자 계정을 IdM으로 마이그레이션합니다.
- 선택 사항: 취약한 암호 지원이 필요한 경우 21.5.4절. “NIS 사용자 인증을 위한 Weak Password Hashing 활성화” 을 참조하십시오.
- 다음 콘텐츠를 사용하여
/root/nis-users.sh
스크립트를 만듭니다.#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -d $1 -h $2 passwd > /dev/shm/nis-map.passwd 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.passwd) ; do IFS=' ' username=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key uid=$(echo $line | cut -f3 -d:) gid=$(echo $line | cut -f4 -d:) gecos=$(echo $line | cut -f5 -d:) homedir=$(echo $line | cut -f6 -d:) shell=$(echo $line | cut -f7 -d:) # Now create this entry echo passw0rd1 | ipa user-add $username --first=NIS --last=USER \ --password --gidnumber=$gid --uid=$uid --gecos="$gecos" --homedir=$homedir \ --shell=$shell ipa user-show $username done
- IdM
admin
사용자로 인증합니다.[root@nis-server ~]# kinit admin
- 스크립트를 실행합니다. 예를 들어 다음과 같습니다.
[root@nis-server ~]# sh /root/nis-users.sh nisdomain nis-master.example.com
참고이 스크립트는 이름, 성에 하드 코딩된 값을 사용하고 암호를passw0rd1
로 설정합니다. 사용자는 다음 로그인 시 임시 암호를 변경해야 합니다.
21.5.3.2. 그룹 항목 마이그레이션
NIS
그룹 맵에
는 그룹 이름, GID 또는 그룹 멤버와 같은 그룹에 대한 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS 그룹을 IdM으로 마이그레이션합니다.
- 다음 콘텐츠를 사용하여
/root/nis-groups.sh
스크립트를 생성합니다.#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -d $1 -h $2 group > /dev/shm/nis-map.group 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.group); do IFS=' ' groupname=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key gid=$(echo $line | cut -f3 -d:) members=$(echo $line | cut -f4 -d:) # Now create this entry ipa group-add $groupname --desc=NIS_GROUP_$groupname --gid=$gid if [ -n "$members" ]; then ipa group-add-member $groupname --users={$members} fi ipa group-show $groupname done
- IdM
admin
사용자로 인증합니다.[root@nis-server ~]# kinit admin
- 스크립트를 실행합니다. 예를 들어 다음과 같습니다.
[root@nis-server ~]# sh /root/nis-groups.sh nisdomain nis-master.example.com
21.5.3.3. 호스트 항목 마이그레이션
NIS
호스트 맵에
는 호스트 이름 및 IP 주소와 같은 호스트에 대한 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS 호스트 항목을 IdM으로 마이그레이션합니다.
- 다음 콘텐츠를 사용하여
/root/nis-hosts.sh
스크립트를 만듭니다.#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -d $1 -h $2 hosts | egrep -v "localhost|127.0.0.1" > /dev/shm/nis-map.hosts 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.hosts); do IFS=' ' ipaddress=$(echo $line | awk '{print $1}') hostname=$(echo $line | awk '{print $2}') master=$(ipa env xmlrpc_uri | tr -d '[:space:]' | cut -f3 -d: | cut -f3 -d/) domain=$(ipa env domain | tr -d '[:space:]' | cut -f2 -d:) if [ $(echo $hostname | grep "\." |wc -l) -eq 0 ] ; then hostname=$(echo $hostname.$domain) fi zone=$(echo $hostname | cut -f2- -d.) if [ $(ipa dnszone-show $zone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add --name-server=$master --admin-email=root.$master fi ptrzone=$(echo $ipaddress | awk -F. '{print $3 "." $2 "." $1 ".in-addr.arpa."}') if [ $(ipa dnszone-show $ptrzone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add $ptrzone --name-server=$master --admin-email=root.$master fi # Now create this entry ipa host-add $hostname --ip-address=$ipaddress ipa host-show $hostname done
- IdM
admin
사용자로 인증합니다.[root@nis-server ~]# kinit admin
- 스크립트를 실행합니다. 예를 들어 다음과 같습니다.
[root@nis-server ~]# sh /root/nis-hosts.sh nisdomain nis-master.example.com
참고이 스크립트는 별칭과 같은 특수 호스트 구성을 마이그레이션하지 않습니다.
21.5.3.4. Netgroup Entries 마이그레이션
NIS
netgroup
맵에는 netgroups에 대한 정보가 포함되어 있습니다. 이 데이터를 사용하여 NIS netgroups를 IdM으로 마이그레이션합니다.
- 다음 콘텐츠를 사용하여
/root/nis-netgroups.sh
스크립트를 생성합니다.#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -k -d $1 -h $2 netgroup > /dev/shm/nis-map.netgroup 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.netgroup); do IFS=' ' netgroupname=$(echo $line | awk '{print $1}') triples=$(echo $line | sed "s/^$netgroupname //") echo "ipa netgroup-add $netgroupname --desc=NIS_NG_$netgroupname" if [ $(echo $line | grep "(," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --hostcat=all" fi if [ $(echo $line | grep ",," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --usercat=all" fi for triple in $triples; do triple=$(echo $triple | sed -e 's/-//g' -e 's/(//' -e 's/)//') if [ $(echo $triple | grep ",.*," | wc -l) -gt 0 ]; then hostname=$(echo $triple | cut -f1 -d,) username=$(echo $triple | cut -f2 -d,) domain=$(echo $triple | cut -f3 -d,) hosts=""; users=""; doms=""; [ -n "$hostname" ] && hosts="--hosts=$hostname" [ -n "$username" ] && users="--users=$username" [ -n "$domain" ] && doms="--nisdomain=$domain" echo "ipa netgroup-add-member $netgroup $hosts $users $doms" else netgroup=$triple echo "ipa netgroup-add $netgroup --desc=NIS_NG_$netgroup" fi done done
- IdM
admin
사용자로 인증합니다.[root@nis-server ~]# kinit admin
- 스크립트를 실행합니다. 예를 들어 다음과 같습니다.
[root@nis-server ~]# sh /root/nis-netgroups.sh nisdomain nis-master.example.com
21.5.3.5. 자동 마운트 맵 마이그레이션
자동 마운트 맵은 위치(상위 항목), 관련 키 및 맵을 정의하는 일련의 중첩 및 상호 관련된 항목입니다. NIS의 마운트 해제 맵을 IdM으로 마이그레이션하려면 다음을 수행합니다.
- 다음 콘텐츠를 사용하여
/root/nis-automounts.sh
스크립트를 만듭니다.#!/bin/sh # $1 is for the automount entry in ipa ipa automountlocation-add $1 # $2 is the NIS domain, $3 is the NIS master server, $4 is the map name ypcat -k -d $2 -h $3 $4 > /dev/shm/nis-map.$4 2>&1 ipa automountmap-add $1 $4 basedn=$(ipa env basedn | tr -d '[:space:]' | cut -f2 -d:) cat > /tmp/amap.ldif <<EOF dn: nis-domain=$2+nis-map=$4,cn=NIS Server,cn=plugins,cn=config objectClass: extensibleObject nis-domain: $2 nis-map: $4 nis-base: automountmapname=$4,cn=$1,cn=automount,$basedn nis-filter: (objectclass=*) nis-key-format: %{automountKey} nis-value-format: %{automountInformation} EOF ldapadd -x -h $3 -D "cn=Directory Manager" -W -f /tmp/amap.ldif IFS=$'\n' for line in $(cat /dev/shm/nis-map.$4); do IFS=" " key=$(echo "$line" | awk '{print $1}') info=$(echo "$line" | sed -e "s#^$key[ \t]*##") ipa automountkey-add nis $4 --key="$key" --info="$info" done
이 스크립트는 NIS의 정보를 내보내고, 이전 위치 및 관련 맵을 위한 LDAP LDIF(Data Interchange Format)를 생성하고, LDIF 파일을 IdM 디렉터리 서버로 가져옵니다. 자세한 내용은 21.4절. “NIS 클라이언트에 자동 마운트 맵 노출” 의 내용을 참조하십시오. - IdM
admin
사용자로 인증합니다.[root@nis-server ~]# kinit admin
- 스크립트를 실행합니다. 예를 들어 다음과 같습니다.
[root@nis-server ~]# sh /root/nis-automounts.sh location nisdomain \ nis-master.example.com map_name
21.5.4. NIS 사용자 인증을 위한 Weak Password Hashing 활성화
Directory Server 구성 요소의 기본 설정을 사용하여
userPassword
속성에 저장된 암호는 SSHA(Secure hash algorithm)를 사용하여 해시됩니다. NIS 클라이언트에 암호에 대한 약한 해싱 알고리즘이 필요한 경우 암호 스토리지 스키마 설정을 업데이트합니다.
약한 암호 해시 스키마를 활성화하면
userPassword
속성에 저장된 암호에만 영향을 미칩니다. Kerberos는 이 특성을 사용하지 않으므로 Kerberos 암호화는 이 설정의 영향을 받지 않습니다.
예를 들어
CRYPT
해시 암호를 활성화하려면 다음을 수행합니다.
[root@server ~]# ldapmodify -D "cn=Directory Manager" -W -p 389 -h ipaserver.example.com -x dn: cn=config changetype: modify replace: passwordStorageScheme passwordStorageScheme: crypt
참고
암호 해시를 해독할 수 없으므로 Directory Server는 기존 암호 해시를 변환하지 않습니다. 서버는 새 암호 스토리지를 스토리지 구성표를 변경한 후에 설정된 암호에만 적용합니다.