리눅스는 쥐뿔도 모르지만.. Kerberos 설치를 시도해보겠습니다.
http://web.mit.edu/Kerberos/krb5-latest/doc/admin/install_kdc.html
CentOS 6에 MIT에서 docu로 제공되는 installation guide를 따라 설치를 진행해보겠습니다.
시작부터 Master KDC와 Slave KDCs를 가져야 된다고 하는데 저는
Master KDC용 VM 하나와 Slave KDC용 VM 하나를 이용하여 제작하겠습니다.
주의 사항
1. Kerberos system은 시간정보에 의존적이기 때문에 정확한 시간 정보가 필요하다.
즉 Master와 Slave의 시간은 동기화가 되어져야 한다.
2. 설치및 액세스 보안을 KDC를 통하여 실행하는 것이 좋습니다. KDC는 파일서버, FTP서버, 웹서버 클라이언트, Kerberos 데이터베이스에 액세스할 수 있는 지역에 보안을 설정 할 수 있습니다.
3. Kerberos는 네임노드및 모든 데이터 노드에도 설치가 되어야 한다.
Master KDC 설치 및 설정
Kerberos 설치는 OS에 맞춰 제공되어지는 패키지를 통해 설치하여야 한다.
Kerberos 설치는 다음과 같은 과정으로 진행한다.
- 보안된 하둡 클러스터 설치를 위한 선행조건
- 커버로스 설치
- 커버로스 인증을 위한 하둡 설정
- 다중 영역 환경에서 사용자 설정
(1) 선행조건
다음은 보안된 하둡 클러스터를 설치하기 위한 선행 조건이다.
- 클러스터를 설치하는 사용자에게 Root나 sudo접근권한 필요하다. (계정이 root라...)
- 하둡 클러스터가 설정되어있고, 비 안전모드로 수행되고 있다. (기본 설정이 none secure)
- 적절한 파일 권한이 로컬과 하둡 시스템 디렉토리에 할당 되어 있다. (이것도 Hadoop 실행계정이 root라..)
- 만약을 위해 소스 코드로 부터 Kerberos를 빌드한다. 커버로스 소스코드를 컴파일 하려면 GCC 컴파일러가 필요하다. RHEL/CentOS에서는 yum groupinstall 'Development Tools' 명령어를 실행해서 필요한 모든 패키지를 설치한다.
- 클러스터에 있는 모든 머신에서 DNS검색과 호스트 맵핑이 작동하고 있다. 커버로스는 IP로는 동작하지 않는다. 모든 노드에서 역 DNS검색이 되어 전체 주소 호스트명을 리턴해야 한다.
- 커버로스가 사용하는 포트는 KDC를 위한 88번 포트와 관리서버를 위한 749번 포트다. 모든 노드가 KDC에 연결해서 인증하므로 88번 포트는 하둡 데몬을을 구성하는 클러스터의 모든 노드에게 열려야 한다.
☆ Port 설정 잘못해서.. 3일동안 시간만 버렸다. 주의 필요
- 하둡 클러스터 인증에 쓰일 커버로스 영역명이 있어야 한다.
(2) Kerberos Build
a. Kerberos 설치를 위한 Source 를 받아보자.
다운로드 : http://web.mit.edu/kerberos/dist/index.html
빌드 가이드 : http://web.mit.edu/Kerberos/krb5-latest/doc/build/index.html
다운로드 페이지에서 Kerberos를 받은뒤 빌드가이드에서 지시하는데로 따라 설치하면 된다.
본인은 /root 에서
wget http://web.mit.edu/kerberos/dist/krb5/1.14/krb5-1.14.2.tar.gz
tar xvzf krb5-1.14.2.tar.gz
/root/krb5-1.14.2
b. 소스 디렉토리 설명
appl : Kerberos app Client와 server programs 있는곳
ccapi : 자격증명 cache services
clients : Kerberos V5 user Programs (User Commands 모아놓은곳 )
- http://web.mit.edu/Kerberos/krb5-latest/doc/user/user_commands/index.html#user-commands
config : scripts 설정
config-files : Kerberos 설정 sample files
include : kerberos system build에 필요한 파일 넣는곳
kadmin : Kerberos master database에 접근하기 위한 인터페이스
kdc : Kerberos 인증 서비스와 키 배포 센터
lib : Kerberos Lib 모음
plugins : Kerberos Plugins directory
po : Localization Infrastructure
prototype: Template과 MIT copyright Message 수록
slave : slave KDC database에 propagating 하기 위한 유틸(kprop, kpropd)수록 (Forward propagation, back propagation 이런걸 의미하는 건가..)
tests : Test Suite
util : building 하거나, 설정하기위한 다양한 유틸 코드 수록
windows : Windows에서 Kerberos를 Build하기위한 소스 수록
c. Build 해보자. ( 설치과정 a만 하고 올것 a설치 않하고 올경우 정상적인 빌드가 되지않는다.)
Using Autoconf (If you are not a developer, You can skip this section) 음... 지나가도 될까요.
Kerberos V5 source directory에서는 설정 script를 자동적으로 설정해주는 과정이 존재한다.
이 설정 script는 autoconf 을 이용하여 생성 가능하다. 이미 설치 되어있으면.
사용자라면 autoconf를 할 필요가 없다. 이미 설정 script는 먼저 빌드가 되어있을것이다.
이 명령어는 반드시 source 디렉토리 최상위에서 실행 되어져야 한다.
ex) cd /root/krb5-1.14.2/src
./util/reconf --force
그리고 source package를 build해야 한다.
ex) make all
make install DESTDIR=somewhere-else
하면 빌드가 완성 된다~?
않되는데... (make *** no rule to make target all'. stop. ) 이러한 에러 발생 검색해보니
Build within a single tree
Kerberos build를 하나의 플랫폼에서 구성하고자 하면 이 명령으로 진행하면 된다.
그러나 Kerberos를 통해 많은 숫자의 플랫폼을 구성하려 한다면 이 명령어는 적합하지 않다.
separate build trees for each platform 을 이용하여 진행해라.
ex) cd /root/krb5-1.14.2/src
./configure
make
끝이다..
ps) make check를 통해 make된걸 검사해보았다. 그랬더니 이전에 내가 지정한 hostname kdc.cw.com 이게 not known error가 발생 되어졌다.
vi /etc/hosts
127.0.0.1 에 kdc.cw.com 을 추가하니 문제는 해결되었다.
재 빌드 하고싶을경우
make clean
make distclean
이용하여 clean 한후 빌드 하자.
(3) Kerberos 설치
빌드되어진 package를 이용하여 설치를 진행해보자.
kdc.cw.com - master KDC
kclient.cw.com - slave KDC
CW.COM - realm name
.k5 hsa.cw.com - stash file
admin/admin - admin principal
a. build 과정 이전에 Key Distributed center를 설치 해야 한다.
RHEL/ CentOS
: yum install krb5-server krb5-libs krb5-workstation
Ubuntu
: sudo apt-get install krb5-kdc krb5-admin-server
명령을 이용하여 설치를 진행하면 된다.
b. Build 과정 진행
c. KDC 설치가 완료 되어지면 다음 단계는 적절한 KDC 환경설정을 진행해야한다.
Build에서도 보시다시피 Master Slaves 관계를 맺을수 있지만,
지금은 Master 단독 Node 관계로 진행하겠다.
vi /etc/krb5.conf
[libdefaults]
default_realm = CW.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = true
udp_preference_limit = 1000000
default_tkt_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1
default_tgs_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1
permitted_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[realms]
CW.COM = {
kdc = kdc.cw.com:88
admin_server = kdc.cw.com:749
default_domain = cw.com
}
[domain_realm]
.cw.com = CW.COM
cw.com = CW.COM
[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
하둡 커버로스 인증 설정 단계
(1) HDFS, 맵리듀스, YARN Principal 생성
(2) HDFS, 맵리듀스, Yarn Keytab 생성
(3) 모든 슬레이브로 키탭 복사
(4) 키탭 파일을 위한 적절한 권한 설정
(5) 하둡 환경설정 업데이트
(6) 보안된 데이터노드와 테스크 트래커 설정
g.모든 하둡 노드에 Kerberos Client 설치
yum install krb5-libs krb5-workstation
'Cloud Service > Kerberos' 카테고리의 다른 글
Hadoop과 Kerberos (3) | 2016.05.10 |
---|---|
Kerberos란? (0) | 2016.05.09 |