Debian系は認証設定のツール群が充実していない。結局は設定ファイルを直に編集するのが近道になる。Debian Policy Manualを見る限り、ローカルユーザとNISなりLDAPなり外部由来ユーザの区別が無い。。。何だが X っぽい。
Ubuntu 7.10 リリース記念なので、こいつの Server 版を、Leopard Server にぶら下げてみた。
参考 OpenDirectory で Feodra/CentOSを 認証
追加パッケージ
# apt-get install libnss-ldap libpam-ldap
# apt-get install libpam-krb5 krb5-user
# apt-get install libpam-cracklib
# apt-get install portmap nfs-common autofs-ldap
Kerberos 5 設定
/etc/krb5.conf
...
[libdefaults]
default_realm = EXAMPLE.COM
...
[realms]
HOME.MOIMOITEI.JP = {
kdc = leopardserver.example.com:88
admin_server = leopardserver.example.com:749
}
...
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
...
これでKerberos5関連のコマンドが有効に機能するので確認するついでに、host/nfsプリンシパルを作成しとく。
# kinit -p diradmin
Authenticating as principal diradmin with password.
Password for diradmin@EXAMPLE.COM:
kadmin: addprinc -randkey host/ubuntu71s.example.com@EXAMPLE.COM
kadmin: addprinc -randkey nfs/ubuntu71s.example.com@EXAMPLE.COM
kadmin: ktadd host/ubuntu71s.example.com@EXAMPLE.COM
kadmin: ktadd -e des-cbc-crc:normal nfs/ubuntu71s.example.com@EXAMPLE.COM
# klist -k -e
keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
3 host/ubuntu71s.example.com@EXAMPLE.COM (Triple DES cbc mode with HMAC/sha1)
3 host/ubuntu71s.example.com@EXAMPLE.COM (ArcFour with HMAC/md5)
3 host/ubuntu71s.example.com@EXAMPLE.COM (DES cbc mode with CRC-32)
3 nfs/ubuntu71s.example.com@EXAMPLE.COM (DES cbc mode with CRC-32)
うまく行かない場合、ネットワーク設定や時間同期を見直す。
LDAP 設定
Debian/etch の libnss-ldap/libpam-ldapの設定ファイルは、別々になっているが、特に分ける必要がないので、シンボリックリンクを張っとく。
# ln -sf /etc/ldap.conf /etc/libnss-ldap.conf
# ln -sf /etc/ldap.conf /etc/pam_ldap.conf
ldap の設定では、ホスト名ではなくIPアドレスを直に設定する。 (XX.XX.XX.XXがleopardserverのアドレス)
/etc/ldap.conf
host XX.XX.XX.XX
uri ldap://XX.XX.XX.XX/
base dc=example,dc=com
ldap_version 3
port 389
#bind_policy [hard|soft]
bind_policy soft
#binddn cn=proxyuser,??,dc=example,dc=com
#bindpw secret
#rootbinddn ???
ssl no
#ssl [no|on|start_tls]
#tls_cacertfile /etc/openldap/cacert
#tls_cacertdir /etc/openldap/cacerts
#tls_checkpeer yes
#tls_ciphers [SSLv2|SSLv3|TLSv1]
#tls_cert mycert
#tls_key mykey
timelimit 60
bind_timelimit 60
idle_timelimit 300
####
scope one
nss_schema rfc2307
nss_base_passwd cn=users,?one
nss_base_shadow cn=users,?one
nss_base_group cn=groups,?one
nss_base_hosts cn=machines,?one
pam_password exop
#pam_filter objectclass=account
pam_login_attribute uid
pam_check_host_attr no
pam_check_service_attr no
NSSの設定
/etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: ldap
automount: files ldap
これで Open Directory 上のユーザ情報が見えれば良し。
PAMの設定
pam の設定は管理者の数だけ書き方があるのだが、2点を留意して設定する。
- Linux-PAM の独自の制御フィールド構文を使わない。
- Debian 系の独自パッチにあまり依存しない。(特に、@include文ってなに?)
管理の簡便性のため、/etc/pam.d/common-* の設定ファイルは /etc/pam.d/system に纏めておく。
# echo "auth include system" > /etc/pam.d/common-auth
# echo "account include system" > /etc/pam.d/common-account
# echo "password include system" > /etc/pam.d/common-password
# echo "session include system" > /etc/pam.d/common-session
/etc/pam.d/system
#
# /etc/pam.d/system - authentication settings common to all services
#
# account
account sufficient pam_unix.so
account sufficient pam_krb5.so
account sufficient pam_ldap.so
account required pam_deny.so
# auth
auth sufficient pam_unix.so nullok_secure
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
# password
password required pam_cracklib.so retry=3 minlen=6 difok=3
password sufficient pam_unix.so use_authtok nullok md5
password sufficient pam_krb5.so use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
# session
session required pam_unix.so
session optional pam_krb5.so
session optional pam_ldap.so
ただし、他のサービスでのcommon-auth/common-account/common-password の取り込み位置がそれぞれのauth/account/passwordタスクエントリの最後になるように調節する必要がある。
autofs の設定
Debian etch / Ubuntu 7.10 は、まだautofs ver 4.x 系なので、rfc2307bisで定義されている automountMap/automountオブジェクトクラスは使えない。従って、nisMap/nisObject オブジェクトクラスのレコードを Open Directory 上に登録しておく必要がある。
/etc/default/autofs
...
LDAPURI=ldap://XX.XX.XX.XX
...
LDAPBASE="dc=example,dc=com"
...
0 件のコメント:
コメントを投稿