なんかシリーズ化して申し訳ないが、とりあえず設定してみた。
- FreeBSD 6.2-Release + ports (portsnap使って最新?)
- NetBSD 3.1 + pkgsrc-2007Q3
OpenBSD はPAMでは無くBSD_AUTH とかいう仕組みを使っており、かつ NSS に当たるものが見当たらないので、ちょっと諦めた。
ただ、3つともにはKerberos 5 認証は組み込まれている。。。不思議だ。
追加パッケージ
FreeBSD 6.2-Release
# cd /usr/ports/net/nss_ldap
# make install clean
...
# cd /usr/ports/security/pam_ldap
# make install clean
...
NetBSD 3.1
# cd /usr/pkgsrc/databases/nss_ldap
# make install clean
...
# cd /usr/pkgsrc/security/pam-ldap
# make install clean
...
Kerberos5 設定
FreeBSD/NetBSDともに KTH Heimdal Kerberos 5 が使われているのが、設定ファイルに関してはほぼ流用できる。
/etc/krb5.conf
...
[libdefaults]
default_realm = EXAMPLE.COM
...
[realms]
HOME.MOIMOITEI.JP = {
kdc = leopardserver.example.com:88
}
...
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Open Directoryに使われているのは MIT Kerberos なので FreeBSD/NetBSD 上の kadmin は使えない。適当なマシンで keytab を作成してコピーする。
# kinit -p diradmin
Authenticating as principal diradmin with password.
Password for diradmin@EXAMPLE.COM:
kadmin: addprinc -randkey host/freebsd.example.com@EXAMPLE.COM
kadmin: addprinc -randkey host/netbsd.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/freebsd.keytab host/freebsd.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/netbsd.keytab host/netbsd.example.com@EXAMPLE.COM
...
/tmp/freebsd.keytab, /tmp/netbsd.keytab をそれぞれのマシンの/etc/krb5.keytabにコピー
...
freebsd# chmod 600 /etc/krb5.keytab
freebsd# ktutil list
FILE:/etc/krb5.keytab:
Vno Type Principal
3 des3-cbc-sha1 host/freebsd.example.com@EXAMPLE.COM
3 arcfour-hmac-md5 host/freebsd.example.com@EXAMPLE.COM
3 des-cbc-crc host/freebsd.example.com@EXAMPLE.COM
時間の同期がとれてるかは要確認。
LDAP の設定
LDAP用のPAM/NSS モジュールは、Linux でよく使われている PADL Software Pty Ltd のものなので、完全に同じ設定ファイルが使える。(参照OpenDirectory で Debian系を認証の/etc/ldap.conf)
FreeBSD 6.2-Release
# scp ubutnu71s:/etc/ldap.conf /tmp/ldap.conf
# cp /tmp/ldap.conf /usr/local/etc/ldap.conf
# cp /tmp/ldap.conf /usr/local/etc/nss_ldap.conf
NetBSD 3.1
# scp ubutnu71s:/etc/ldap.conf /tmp/ldap.conf
# cp /tmp/ldap.conf /usr/pkg/etc/pam_ldap.conf
# cp /tmp/ldap.conf /usr/pkg/etc/nss_ldap.conf
NSSの設定
FreeBSD 6.2-Release
/etc/nsswitch.conf
group: files ldap
hosts: files dns
networks: files
passwd: files ldap
shells: files
NetBSD 3.1
/etc/nsswitch.conf
group: files ldap
hosts: files dns
netgroup: files
networks: files
passwd: files ldap
shells: files
これで Open Directory 上のユーザ情報が見えれば良し。
PAM の設定
ユーザのパスワードのタイプが「Open Directory」でのみの運用であれば、/etc/pam.d/system の pam_krb5 をコメントアウトを外してやれば良い。
「暗号化パスワード」も使う場合は pam_ldap を追加する。
FreeBSD 6.2-Release
/etc/pam.d/system
# auth
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient pam_krb5.so no_warn try_first_pass
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass nullok
# account
account required pam_krb5.so
account required pam_login_access.so
account required pam_unix.so
# session
#session optional pam_ssh.so
session required pam_lastlog.so no_fail
# password
password sufficient pam_krb5.so no_warn try_first_pass
password sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
password required pam_unix.so no_warn try_first_pass
NetBSD 3.1
/etc/pam.d/system
# auth
auth sufficient pam_krb5.so no_warn try_first_pass
auth sufficient /usr/pkg/lib/security/pam_ldap.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass nullok
# account
account required pam_krb5.so
account required pam_unix.so
# session
session required pam_lastlog.so no_fail no_nested
# password
password sufficient pam_krb5.so no_warn try_first_pass
password sufficient /usr/pkg/lib/security/pam_ldap.so no_warn try_first_pass
password required pam_unix.so no_warn try_first_pass
ただし、両方のOSともに /etc/pam.d/sshd は上記に設定をincludeしていないので、同様な変更が必要。
try_first_pass よりも use_first_pass を混ぜる方が好みだが、、、BSD 系はこうなんだろうなぁ。
accountタスクにpam_ldapを使ったエントリを加えると、何故かパスワードを変えろとかプロンプトが出るんだが、なんか設定が足らんかも。。。
amd の設定
FreeBSD/NetBSD ともに amd は標準の配布に含まれているが、ldap マップタイプが使えるようには構築されていない。また、amd の ldap 実装で使われる ldap schema は Open Directory には含まれていない。 なので、素直にファイルベースのものを使う。。。
そのうちAutoFS on FreeBSD 6が入ってくるのかなぁ。。。
FreeBSD 6.2-Release
/etc/rc.conf
...
rpcbind_enable="YES"
amd_enable="YES"
amd_flags="-F /etc/amd.conf"
...
NetBSD 3.1
/etc/rc.conf
...
rpcbind=YES
amd=YES
...
FreeBSD 6.2-Release/NetBSD3.1 両方
/etc/amd.conf
[ global ]
browsable_dirs = no
restart_mounts = yes
unmount_on_exit = yes
log_file = syslog
#log_options = all
auto_dir = /amd
map_type = file
mount_type = nfs
search_path = /etc
dismount_interval = 60
[ /home ]
map_name = amd.home
/etc/amd.home
/defaults opts:=rw
fileserver type:=nfs;rhost:=${key};rfs:=/export/home
/amd ディレクトリが無ければ作成。
0 件のコメント:
コメントを投稿