개요
MacOS에는 이미 kerberos 라이브러리가 설치 되어 있고, 관련 여러 명령어들을 실행 가능
kinit 바이너리를 이용하여 /etc/krb5.conf에 설정되어 있는 realm으로 접속 가능
kerberos에서 사용되는 몇 가지 개념을 정리하고, kinit 이용 시 표준 입력 없이 안전하게 keytab을 이용하여 편리한 인증 방법을 탐색
keytab 생성
kerberos로 인증 시 평문 암호를 그대로 이용하는 것이 아니라, 사전에 설치되어 있는 ktutil을 이용하여 AES로 암호화된 keytab을 만들 수 있음
** 이전에는 아래와 같이 평문 암호를 그대로 이용했음
echo "${PASSWORD}" | kinit --password-file=STDIN ${USER}
Bash
복사
MacOS
MacOS에서는 아래 명령어를 이용하여 keytab 파일을 만들 수 있음
ktutil -k ${FILENAME}.keytab add -p ${USER}@${REALM} -e aes256-cts-hmac-sha1-96 -V 1
Bash
복사
-k : 키탭 파일
-p : Principal
-e : 암호화 타입
-V : 키 버전 지정
Linux
리눅스 상에서 keytab이 필요할 수 있는데 이 때는 아래 명령어를 이용하고, cli 형태의 입력창이 열리면 추가 명령어들을 기입
# 먼저 입력
ktutil
# principal 생성 (addentry == addent)
addentry -password -p ${USER}@${REALM} -k 1 -e aes256-cts-hmac-sha1-96
# principal을 keytab에 작성 (write_kt == wkt)
write_kt ${FILENAME}.keytab
# cli 종료 (quit == q)
quit
Bash
복사
설정 파일
kerberos 설정 파일은 /etc/krb5.conf에 위치해있음
별도의 keytab파일을 지정하지 않으면, /etc/krb5.keytab을 이용하게 되어 있음
기본 키탭 지정
기본으로 사용되는 키탭의 지정 방법은 2가지로 나뉨
Shell Profile
기본 키탭 파일 경로를 KRB5_KTNAME으로 지정하면, kinit -k 명령어로 키탭을 이용한다고 명시했을 떄 자동으로 해당 경로를 이용
~/.bash_profile, ~/.bashrc, ~/.zshrc 등 자신이 사용하는 쉘의 프로필을 열어서 아래 구문을 추가
export KRB5_KTNAME=${KT_PATH}
Bash
복사
디렉티브 작성
쉘 프로필을 이용하는 방식은 이용하고 있는 쉘에 따라서 인증이 안 될 수 있기 때문에, 쉘 종속성을 떼어내기 위해 디렉티브를 이용할 수 있음
/etc/krb5.conf는 kerberos의 설정 파일로, default_keytab_name 을 이용
[libdefaults]
default_keytab_name=FILE:${ABSOLUTE_PATH}
Bash
복사
기타 디렉티브
[libdefaults]
kerberos 라이브러리에서 사용되는 기본 설정
[realms]
kerberos를 적용하려는 대상을 realm (영역)이라고 지칭
여기서 영역은 ${USER}@${REALM}에서의 REALM을 의미
예를 들어 JSEO.COM이라는 realm이 있다면 아래와 같이 표현 가능
[realms]
JSEO.COM = {
kdc = ${KDC_URL}
admin_server = ${ADMIN_URL}
kpasswd_server = ${KPASSWD_URL}
}
Bash
복사
[domain_realm]
kerberos를 이용하면서 domain_realm에 기재된 도메인 이름 혹은 호스트 이름을 사용한다면, 이에 해당되는 영역을 이용할 수 있도록 변환을 정의
예를 들어 .jseo.io와 같은 형태의 도메인이 들어올 때, JSEO.COM 영역을 사용하도록 만든다면 아래와 같이 지정
[domain_realm]
.jseo.io = JSEO.COM
Bash
복사