Google Code Prettify

2007年11月28日

OpenDirectory で FreeBSD/NetBSDを認証

なんかシリーズ化して申し訳ないが、とりあえず設定してみた。

  1. FreeBSD 6.2-Release + ports (portsnap使って最新?)
  2. 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 ディレクトリが無ければ作成。

追記

Open Directory の設定のまとめ 2008Q1

0 件のコメント:

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...