https://help.ubuntu.com/community/ActiveDirectoryHowto : 이 문서가 아주 vital. 우분투용 문서지만 데비안계니까 통한다.
http://awayand.wordpress.com/2009/02/01/integrating-debian-lenny-into-active-directory-w2k3-server/
https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto#Kerberos
https://help.ubuntu.com/community/ActiveDirectoryHowto : 이 문서의 특정 패키지가 결정적. gssapi 이거
어렵진 않은데... 설정이 하나라도 삐끗하면 안된다. ㅡ,.ㅡ
윈도우쪽은, Windows 2003 R2다. 더 최근 AD는, RFC2307을 준수하니까 (2307? 맞나?) 더 잘 될 것이다.
PAM 설정
가장 나중에 해도 되는데 미리 적는다. 왜? 간단하니까.
/etc/pam.d/common-auth:
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
어려운 건 아니고, 그냥 원래 참고 문서 그대로다.
common-account:
account sufficient pam_ldap.so
account required pam_unix.so
Kerberos 설정
# apt-get install heimdal-clients libsasl2-modules-gssapi-heimdal
필자가 참고한 위키에서는, mit kerberos 로 설치했는데... 필자는 heimdal로. 별다른 이유는 없다.
http://awayand.wordpress.com/2009/02/01/integrating-debian-lenny-into-active-directory-w2k3-server/
여기서 본 게 heimdal 계통으로 먼저 갔기 때문.
설치하면 kerberos정보를 묻는데, 이 때 서버 정보로는, prime.sohee.xxx.ac.kr 이런 식으로 대답해야 한다. 그게 안 되고 부정확하게 되면...
/etc/krb5.conf 를 열어서 뜯어고쳐야 한다.
[libdefaults]
default_realm = SOHEE.XXX.AC.KR
[realms]
SOHEE.XXX.AC.KR = {
kdc = sohee.xxx.ac.kr
admin_server = sohee.xxx.ac.kr
}
다른 내용은 다 생략했다. 자동으로 생성되어 있는 내용은 빼놓지 않았다.
http://forcecore.tistory.com/notice/828
이 글에서 필자의 서버 구조가 나오는데... 이 그림을 보면 왜 저런 값을 입력했는지 알 수 있을 것이다.
잘 되었으면,
$ kinit [SOHEE의사용자ID]
명령어가 성공해야 한다. AD계정의 administrator같은 계정이 대표적.
nss-ldap 등 관련 패키지 설치
# apt-get install libnss-ldap ldap-utils libpam-ldap
# dpkg-reconfigure libnss-ldap libpam-ldap
libnss-ldap 질문 단계가 몇년 전 자료보다 늘었고, 첫번째 설치시 묻는 질문과 reconfigure때 묻는 질문이 다르다 -_-^ reconfigure기준으로 여기 기록하겠다.
첫번째 질문: LDAP server Uniform Recource Identifier:
ldap://sohee.xxx.ac.kr
두번째: Distinguished name of the search base:
dc=SOHEE,dc=xxx,dc=ac,dc=kr
LDAP version to use: 3
Does the LDAP database require login? : yes (T.T)
Special LDAP privileges for root? : no (유닉스 시스템의 root랑 AD는 아무 상관이 없으니까)
Make the configuration file readable./writable by its owner only? : no
(yes라고 하면, id가 제대로 안 뜨게 됨)
즉... 아무나 읽을 수 있는 파일에 비번이 적히는 것이다. hash할 수 있던가? 중요하지 않고 실제 사용은 못 하도록 처리한 계정으로 bind하도록 하자.
Unprivileged database user:
cn=proxyuser,cn=builtin,dc=sohee,dc=xxx,dc=ac,dc=kr
비번: 입력한다 ㅡ,.ㅡ
nsswitch.conf 는 니가 수정해야 한다고 알려주는 창이 뜬다... ok를 누른다.
libpam-ldap의 경우.
첫번째 질문: LDAP server Uniform Recource Identifier:
ldap://sohee.xxx.ac.kr
두번째: Distinguished name of the search base:
dc=SOHEE,dc=xxx,dc=ac,dc=kr
LDAP version to use: 3
Make local root Database admin : no
Does the LDAP database require login? : yes (T.T)
Unprivileged database user:
cn=proxyuser,cn=builtin,dc=sohee,dc=xxx,dc=ac,dc=kr
비번: 입력한다 ㅡ,.ㅡ
비번을 바꿀때 pam이 행동해야 하는 방식을 묻는데... ad로 선택.
근데 아직 손으로 많이 설정해야 한다.
/etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldaphosts: files dns
networks: filesprotocols: db files
services: db files
ethers: db files
rpc: db filesnetgroup: nis
/etc/libnss-ldap.conf
이게 가장 결정적이다.
파일 내에..
debug를 1로 설정해두면 디버깅 정보가 뜬다. 그 상태로
$ getent passwd 유저명
을 계속 해서 정보가 뜰 때 까지 설정을 바꿔야 한다 ㅠㅠ
몇시간을 해서 얻은 설정이다.
# debug 1base dc=SOHEE,dc=xxx,dc=ac,dc=kr
uri ldap://sohee.xxx.ac.kr
ldap_version 3
binddn cn=proxyuser,cn=builtin,dc=sohee,dc=xxx,dc=ac,dc=kr
bindpw secret
scope sub# 이 부분의 코멘트를 보면, base 는 생략해도 된다고 하는데, 천만의 말씀이다. 이것으로 몇 시간을 해메었음.
nss_base_passwd ou=NormalUsers,dc=SOHEE,dc=xxx,dc=ac,dc=kr?sub
nss_base_shadow ou=NormalUsers,dc=SOHEE,dc=xxx,dc=ac,dc=kr?sub
nss_base_group ou=NormalUsers,dc=SOEHE,dc=xxx,dc=ac,dc=kr?sub# RFC2307의 schema
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
nss_map_objectclass posixGroup group
nss_map_attribute uniqueMember member
pam_login_attribute sAMAccountName
pam_filter objectclass=user
pam_password adsasl_secprops maxssf=0
정리하니까 쉬운듯 한데 막상 해보면, 할때마다 헤맨다. T.T
getent passwd에 액티브디렉토리 사용자들이 뜨긴 하는데,
아직 ssh 로그인이 안 되는 문제가 있을 수 있다.