物好きで Solaris8から入手していたので設定してみた。
- Solaris 8 + Admin Pack(SEAMのサーバとか?)
- Solaris 9
- Solaris 10
とりあえず、全部最新パッチを当ててある。
追加パッケージ
Solaris 8 には、標準で SSH が含まれていないので、Freeware for Solarisから入手してインストールする。
Solaris8
# sudo pkgadd -d libgcc-3.4.6-sol8-x86-local
# sudo pkgadd -d zlib-1.2.3-sol8-x86-local
# sudo pkgadd -d libintl-3.4.0-sol8-intel-local
# sudo pkgadd -d libiconv-1.11-sol8-x86-local
# sudo pkgadd -d openssl-0.9.8f-sol8-x86-local
# sudo pkgadd -d openssh-4.7p1-sol8-x86-local
SunFreeware の openssh は GSSAPI が有効になって構築されていない。Admin Pack の SEAM の中の SUNWkr5sv に kerberozied telnetd があるので、とりあえず入れとく。 telnetdはいまさらなので要らないかも。
Solaris9/10 のSSHは、Sun の手によるGSSAPIのサポートが組込まれているので、標準のものを使うようにする。
Kerberos5 設定
Solaris 8-10 は、MIT Kerberos のカスタムバージョンが使われているが、設定ファイルはほぼ同じ。
/etc/krb5/krb5.conf
...
[libdefaults]
default_realm = EXAMPLE.COM
...
[realms]
EXAMPLE.COM = {
kdc = leopardserver.example.com:88
admin_server = leopardserver.example.com:749
}
...
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
...
Solaris8-9ではデフォルトで利用できる暗号化タイプが少なく des-cbc-crc:normal に限定したプリンシプルの鍵を作成する。
Solaris8-9 のkadminは利用できる暗号化タイプのみに限定して keytab に保存ができない(ktaddの-eオプションが使えないみたい)ので、OpenDirectory があるマシン上で生成した方がよい。
Solaris8まではKerberozied NFS を利用する場合のNFSクライアント側で使うものは nfsプリンシプルではなくrootプリンシプルなので、こちらを生成する。
# kinit -p diradmin
Authenticating as principal diradmin with password.
Password for diradmin@EXAMPLE.COM:
kadmin: addprinc -randkey host/solaris8.example.com@EXAMPLE.COM
kadmin: addprinc -randkey root/solaris8.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/solaris8.keytab -e des-cbc-crc:normal host/solaris8.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/solaris8.keytab -e des-cbc-crc:normal root/solaris8.example.com@EXAMPLE.COM
...
kadmin: addprinc -randkey host/solaris9.example.com@EXAMPLE.COM
kadmin: addprinc -randkey nfs/solaris9.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/solaris9.keytab -e des-cbc-crc:normal host/solaris9.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/solaris9.keytab -e des-cbc-crc:normal nfs/solaris9.example.com@EXAMPLE.COM
...
kadmin: addprinc -randkey host/solaris10.example.com@EXAMPLE.COM
kadmin: addprinc -randkey nfs/solaris10.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/solaris10.keytab host/solaris10.example.com@EXAMPLE.COM
kadmin: ktadd -k /tmp/solaris10.keytab nfs/solaris10.example.com@EXAMPLE.COM
それぞれのマシンの /etc/krb5/krb5.keytab にコピーする。
時間の同期がとれてるかは要確認。
LDAP の設定
手動で設定する方法をとる。
- XX.XX.XX.XX は Open Directory があるマシンのIPアドレス
- auto_master マップに関しては、Solaris限定のマップ auto_master_solaris を参照するように変更する。
Solaris8
# ldapclient -v -i \
-d example.com \
-b "dc=example,dc=com" \
-a none \
-o 60 \
-s one \
-S passwd:cn=users,?one \
-S group:cn=groups,?one \
-S automount:cn=automountMap,?one \
-S auto_master:automountMapName=auto_master_solaris,cn=automountMap,?one \
XX.XX.XX.XX
Solaris9-10
# ldapclient -v manual \
-a domainName=example.com \
-a defaultSearchBase="dc=example,dc=com" \
-a defaultServerList=XX.XX.XX.XX \
-a credentialLevel=anonymous \
-a authenticationMethod=none \
-a bindTimeLimit=60 \
-a searchTimeLimit=60 \
-a defaultSearchScope=one \
-a serviceSearchDescriptor=passwd:cn=users,?one \
-a serviceSearchDescriptor=group:cn=groups,?one \
-a serviceSearchDescriptor=automount:cn=automountMap,?one \
-a serviceSearchDescriptor=auto_master:automountMapName=auto_master_solaris,cn=automountMap,?one
ここまでやると nsswitch.conf のほとんどのエントリが ldap を見るようになる。でも、対応するレコード群がないので困ったモード全開になってしまう。
NSSの設定
Solaris 8-10
/etc/nsswitch.conf
...
passwd: files ldap
group: files ldap
...
hosts: files dns
...
automount: files ldap
...
<それ以外のエントリに含まれる ldap は削除>
...
これで Open Directory 上のユーザ情報が見えれば良し。
PAMの設定
ユーザのパスワードのタイプが「暗号化パスワード」のみの運用では、何もする必要が無さそうである。。。ここら辺事情はどうも分からん。
Solairs の PAM は1つのファイルに全部の設定が列挙されている。必要なサービスで変更が必要であるが、雑多なのでloginとother に限って設定例として上げる。
Solaris8-10
/etc/pam.conf
...
login auth sufficient pam_krb5.so.1 use_first_pass
login auth required pam_unix_auth.so.1
...
other auth sufficient pam_krb5.so.1 use_first_pass
other auth required pam_unix_auth.so.1
...
login account required pam_unix_account.so.1
login account optional pam_krb5.so.1
...
other account required pam_unix_account.so.1
other account optional pam_krb5.so.1
...
other session required pam_unix_session.so.1
other session optional pam_krb5.so.1
...
取り敢えず、pam_unix_* 前後ののそれぞれに pam_krb5 を入れ込むようにする。。。でいいと思う。パスワード変更はいまいち分からんので放っとく。
GSSやらnfssecやらの設定
Kerberozied NFS が利用できるように、
- /etc/nfssec.conf の krb5/krb5i/krb5p のコメントアウト部分を外す。
- /etc/gss/mech の kerberos_v5 のコメントアウト部分を外す。
- /etc/gss/gsscred.conf で、files 指定にする。
- 何のためか分からんが gsscred -m kerberos_v5 -a を実行しとく。
Solaris10 が使うNFSのバージョンが気になる場合は /etc/default/nfs で変更する。
以上。
何となく、認証できたり、ホームディレクトリがautomountしたり、、、だなぁ。
$ telnet -f solaris8
Trying 172.30.2.23...
Connected to solaris8.example.com.
Escape character is '^]'.
[ Kerberos V5 accepts you as ``user@EXAMPLE.COM'' ]
[ Kerberos V5 accepted forwarded credentials ]
Last login: Sun Dec 2 22:22:03 from xx.xx.xx.xx
% klist
チケットキャッシュ: /tmp/krb5cc_5000
デフォルトプリンシパル: user@EXAMPLE.COM
有効開始時間 期限切れ サービスプリンシパル
Sun Dec 02 22:22:26 2007 Mon Dec 03 07:21:28 2007 krbtgt/EXAMPLE.COM@EXAMPLE.COM
更新時間(迄) Sun Dec 09 21:21:28 2007
Sun Dec 02 22:22:26 2007 Mon Dec 03 07:21:28 2007 nfs/fileserver.exmaple.com@EXAMPLE.COM
更新時間(迄) Sun Dec 09 21:21:28 2007
% /sbin/mount
...
/home/fileserver on fileserver:/export/home remote/read/write/setuid/sec=krb5i/dev=2f80006 on Sun Dec 2 22:16:36 2007
....
$ ssh solaris9
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Sun Dec 2 21:45:30 2007 from xx.xx.xx.xx
Sun Microsystems Inc. SunOS 5.9 Generic January 2003
....
$ ssh solairs10
....
あぁ、後でautomount 用のレコードもちょっと残しておこう。
0 件のコメント:
コメントを投稿