19-3. LDAP によるユ−ザID管理 (1) 総合ユ−ザID管理へ向けて `28/03〜 `2b/02〜 * LDAP を使う場面での検討 [ ログオンにて ] パソコンのログオンも LDAP でやっていくか。たとえ既に Active Directory がホスト系 業者によって導入されていてもだ。しかしパソコンの操作ログ監視やパソコンの資産管理 にも Active Directory が関係してしまっているかも知れない。 しかしiPad みたいなマ イクロソフト製でないのも急速に出回ってきている。もはや Windows ではない気がする。 LDAP を使ってシングルサインオンのID管理はどうか。 どこまで何を統合するのかはよ くよく考えないといけない。LDAPサ−バが動いてなくてもパソコンにはログオンできるの か、メ−ルは使えるのか。外に持ち出すノ−トパソコンはどうなるのか。部門用の文書サ −バの利用とかを想定すると、部門毎で異なるユ−ザの振る舞いも LDAP で制御するとか。 [ ファイル共有 ] ファイル共有ソフトで LDAP と連動するのはないか。 LDAP でユ−ザの所属や部署名を変 えたら、ファイル共有の方も変わるという代物。基本的に LDAP はユ−ザのアカウント管 理ができるのであってアクセス制御はできない。ファイルの読み書きなどの権限は別な話 である。しかし LDAP で持てる様々な情報を利用すれば、何かできそうな気はするが。 部門用のファイル共有サ−バヘのアクセス制御は LDAP のアカウント登録情報による。パ ソコンをどこに持って行っても構わない。ただし他の部門用の文書サ−バにはアクセスで きない。インタ−ネットと全社文書サ−バにはアクセスできる。メ−ルは使える。部門用 の文書サ−バには、その部門内ネットワ−クでないとアクセスできないようにしたい。 [ SSL-VPN にて ] SSL-VPN で利用メニュ−を出す場合は。つまりこれまで、ハ−ドディスク付きのノ−トパ ソコンを外から SSL-VPN 経由で、 社内のメ−ルサ−バやファイル共有などを利用する形 態。ユ−ザ認証に LDAP を使ってもいい。メニュ−のファイル共有をアクセスしたら、そ のまま自分のユ−ザ権限にて利用できるのが望ましい。現在は既にそうなっている。 SSL-VPN で RDP をやる場合は。"20-6.シンクライアントで安全安心"で検討した形である。 LDAP は使わない。シンクライアントそのものログオン、それに SSL-VPN にアクセスする 際のログインは指紋認証で共通のアカウントを用いる。SSL-VPN に入って社内の自分のパ ソコンに RDP アクセスによるログオンは自分のアカウントを入れる。 [ メ−ル周りで ] メ−ルソフトのパスワ−ドを自分で変えれるようにする。変えたはいいがパスワ−ドがプ レ−ンテキストでネットワ−クを流れるのではあまり意味がないというか、よろしくない。 パスワ−ドは暗号化されて流れないとまずい。セキュリティポリシ−で定期的にパスワ− ドを変更するかしないかは、とりあえず関係ない。暗号化すれば変更しなくてもいいか?。 メ−ル転送は自分で設定できるようにすること。メ−ルを全部保存するようにしたのでメ −ル転送は自由にやってもらって構わないことにする。いわゆる飴と鞭。転送はProcmail を使うのかな。Procmail の記述で添付ファイルを消すとか。 かなりやっかいなスクリプ トのようだが。添付ファイルを消すぐらいは簡単に記述できるのでないか。 * メ−ル周りに LDAP を使う MTA を LDAP 対応にする --- Mail-Store と Mail-Relay どちらかの sendmail で。社内 に存在しないユ−ザへのメ−ルを排除できる、らしい。SMTP AUTH を組み入れること。 sendmail でなく Postfix の方がよく対応しているみたいである。 POP3 を LDAP 対応にする --- POP3 はマシンのアカウントを利用している。POP3 アクセ ス時のユ−ザ認証に LDAP が利用される。この時に流れるパスワ−ドは暗号化されて いることが望ましい。 InterScan7 の隔離領域 --- 迷惑メ−ルの誤検知の対処で。各ユ−ザ毎にメ−ルを隔離し、 各自でチェックできるようにする。InterScan7 の LDAP連携が必要。ただしこれをや ると管理者が一括ではチェックできなくなる。 アカウント管理ソフト --- 改めてメ−ル転送やパスワ−ド変更のツ−ルの提供。Usermin の他にフリ−ソフトはあるか。パスワ−ドの一元管理をしたい。Usermin でできるか、 LDAP 用のフリ−ソフトが1つ2つある、調べてみよう。 * ユ−ザ認証の現実的なこと Active Directory は各企業に結構、入り込んでいるようである。 どうもホスト系業者が Windows NT から Windows 2000 Server に置き換えるとか、 その際に Active Directory を使うように変更している。また他の社内で使っているソフトで、別にそんなことをやっ ている場合がある。いつの間にか幾つもの Active Directory が社内にできているという 状況である。本当は1つの Active Directory で様々なユ−ザ情報を管理をしなけばいけ ないはずが乱立してしまっている。 Active Directory のことを社内で理解している人が いなくて、業者が設置設定したのがそのまま、手を付けられることなく半分放置されてい る。すでにこんな話はだいぶ前に聞いたことである。 Active Directory を設置する意味 はまるでない。 業者任せにするのでなく、ちゃんと自分らで勉強して Active Directory を設定設置しないことにはだめだ。しかし一般企業ではそういう発想はまるでない。 * DN と LDIF の構造の設計 後から DN の構造は変更できない。これができればあまり構造を最初に考える必要はない。 というかエントリを全部、さらきに登録しなおせばいいだけのこと。 LDAP で何万、何十 万人と登録するわけではない。よい子で想定するのは、たかだか500程度のものである。 LDAP はリレ−ショナルデ−タベ−スじゃない。 単独のデ−タがずっと並んでいるだけで ある。RDBだとデ−タを最初から入れ直すという訳にはいかない。デ−タの関係を元の 通りに付けるのはできない相談だと思う。LDIF については、 設計なんて大それたもので はない。 LDAP 連携させるアプリケ−ションで必要とするエントリ?、デ−タ?、項目?。 これが入っているスキマ−ファイルをインクル−ドするだけだ。だいたい使う構造は大方 分かったものである。構造はスキムのファイルで使用可否になる。設計と名のつくものは DN の構造のみである。DN 構造も特にどうこういうものではない。 * LDAP サ−バについて諸々 LDAP は難しく考えないで NIS の代わりだと思えばいい。NIS は Sun Microsystems 社が 作ったのだが、Sun 自体 NIS はもう使わないようにする方向である。 NIS もできの悪い アカウント管理ソフトだった。NIS が動いてないとマシンのログアウトさえできなかった。 OpenLDAP はデ−タベ−スにフリ−ソフトの Berkeley DB を使う。Berkeley DB はデ−タ ベ−スのソフトであり、デ−タベ−スの中核部分が実装されている。ただし普通の RDBMS のようにSQLコマンドでアクセスするわけではない。 OpenLDAP ではなく Sun Solaris 用の LDAP の方がいいのでないか。安定性の点で Sunの 方がおかしな挙動がないのでないか。登録するアカウントが何千とかになると、OpenLDAP だとかなり応答が遅くなるということらしい。でもこれはもう昔の話。OpenLDAP でいい。 今の Solaris 9 や 10 に載る LDAP、商用のとフリ−のとがあったが、 それに Linux に 載っている Sun の LDAP の違いは。`28/03 に知ったのだが、 Sun の Directory Server は RedHat になった。他のOSに入っているのは RedHat からのOEMになっている。 Sun に入っているプリインスト−ルの LDAP は無料、20万ユ−ザまで。Sun でダウンロ −ドするのは保守費用がいる。プリインスト−ルの LDAP はやや問題があったため、ダウ ンロ−ドの LDAP をSI業者も一時勧めていた。しかし今は特に問題ないとのこと。 メ−ルサ−バのアプライアンスのミラポイントは LDAP サ−バと連携できる。ミラポイン トのWeb画面でユ−ザ自身がパスワ−ドを変更することができる。それが LDAP サ−バ へ反映されるということである。 Sun ONE Directory Serverは同じマシンにサ−バとクライアントは入らないという話。つ まり最低限2台のマシンがないとテストできない。しかし Sunのマシンをクライアントに することは先ずない訳で。LDAP のクライアントはパソコンでテストすればいい。 * LDAP は何で分かりにくいか LDAP の BIND とやらが先ず分かりにくい。LDAP サ−バを利用する認証のことで、2通り ある。1つは管理者用のアカウントで利用するというのと、セルフ認証みたいなのがある。 ユ−ザのパスワ−ドを送って合っていれば、それでも利用させますみたいな話。 LDAPサ−バを利用する認証には、パスワ−ド検索と認証バインドがある。パスワ−ド検索 の方が処理としては素直でまっとうな気がする、管理者用のアカウントで入りユ−ザを調 べる。認証バインドは理解しにくい、セルフ認証みたいな方で、再帰処理的な利用になる。 しかしセルフ認証的な処理は考えてみればOSのログインで、/etc/passwd を見るのと同 じようなことでもある。 ユ−ザ名とパスワ−ドを送り /etc/passwd 内に合致したのがあ ればマシンの利用を許可する。その上でその人のホ−ムディレクトリを調べる、訳だから。 デ−タベ−スではなくトリ−構造になっていて、バックにRDBをもって、そこでデ−タ を保有している。トリ−構造、木構造。上から検索していくと検索対象が多いので時間が かかる。効率よく検索させたいなら、木の途中から調べるように指定するということ。 * 参考 「システム管理者のためのLDAP徹底理解」3,200+税、2009/06/01 発行、2010/01/17 自前 > で購入。いろいろ本や雑誌はあるが、これをなめるようにして読むこと。 「入門 LDAP/OpenLDAP ディレクトリサ−ビス導入・運用ガイド」2,600+税、2007/11発刊。 > 秀和システム行。2009年頃自前購入。自宅から比較的近くにある会社の社長が執筆。 http://gihyo.jp/admin/serial/01/ldap 連載:そろそろ LDAP にしてみないか?。 > 技術評論者のサイトの中満英生氏の記事。非常に充実している。自宅のパソコンで何げ なく見ていて知った。ブックマ−クしていたのを忘れていた。`29/11/30 「日経コミュニケ−ション」 2010/07, P.16〜31, "[特集]クラウド、モバイル利用で直面 > '今できる' 最善のユ−ザ−認証を考える"。P.28の記事で、現状では多くの企業がシス テムごとに別々の認証基盤をもち運用し続けている。どこもそんなもんだろう。 他に、http://www.ldap.jp/doc 日本LDAPユ−ザ会のホ−ムペ−ジ 2007/04/01発足、中満 氏のセミナ−資料。2005/10/05 "OpenLDAPソフトウェア 2.3 管理者ガイド"和訳:稲地氏。 (2) LDAP ソフトのインスト−ル `29/12 * OpenLDAP インスト−ルの一発目 ソ−スファイルは http://www.openldap/org/software/downloadにある。2009年11 月時点 "Release 2.4.19" と "Stable 2.4.19(20091028)" が最新。release 版は stable 版が安定したもの。ファイルのサイズが偉い小さい、1分ぐらいでダウンロ−ドした。 # cd /usr2/local/source # gunzip -c openldap-stable-20091028.tgz | tar xvfB - # ls -F openldap-2.4.19/ openldap-stable-20091028.tgz ファイルのサイズは 5474200。 # cd openldap-2.4.19; ls -F ANNOUNCEMENT LICENSE build/ contrib/ servers/ CHANGES Makefile.in clients/ doc/ tests/ COPYRIGHT README configure* include/ INSTALL aclocal.m4 configure.in libraries/ # ./configure 先ずは一発やってみた。エラ−になった。 | checking for db.h... no configure: error: BDB/HDB: BerkeleyDB not available README -------------------------------------------------------------------- |REQUIRED SOFTWARE | Base system (libraries and tools): 抜粋 | Cyrus SASL 2.1.21+ (recommended) | OpenSSL 0.9.7+ (recommended) | SLAPD: | BDB and HDB backends require Oracle Berkeley DB 4.4, 4.5, | 4.6, or 4.7. It is highly recommended to apply the patches | from Oracle for a given release. * BerkeleyDB を入れての二発目 BerkeleyDB は今は Oracle 社の管轄になっている。Oracle のサイトからダウンロ−ドす る。4.8.24 が最新だった。OpenLDAP では 4.4 から 4.7 が必要と上の README に書かれ ていたので、ともかく一番新しいのを入れることにする。 "BerkeleyDB 4.7.25.zip with AES encryption (13M)"、4.7 の最新です。/usr2/local/source/ で zip ファイルを展開。 とりあえずテストする一連のソフトは /usr2/local/ ディレクトリに入れることにする。 # unzip db-4.7.25.zip マシンに既にBerkeley DB を入れいても # cd build_unix << この中は空だった。 問題はない。コンパイルする際にどれを # ../dist/configure --prefix=/usr2/local 使うかということである。多分sendmail # make << /usr/ccs/bin/make。 が Berkeley DB を見ていたのでないか。 # make install # ls /usr2/local インスト−ル前はOpenLDAPやBerkeleyDB bin/ docs/ include/ lib/ source/ 等のソ−スを置いた source/だけだった。 # /bin/csh # setenv LD_LIBRARY_PATH /usr2/local/lib:$LD_LIBRARY_PATH gcc の lib も前から # setenv CPPFLAGS -I/usr2/local/include LD_LIBRARY_PATHに入 # setenv PATH /usr2/local/bin:$PATH れてあるとする。 # cd /usr2/local/source/openldap-2.4.19 再度 OpenLDAP をコンパイルしてみる。 # ./configure --prefix=/usr2/local # make depend # make # make install ちゃんと終了すると `install' is up to date. と出る。 # ls -F /usr2/local だいぶ増えた。 bin/ etc/ lib/ sbin/ source/ docs/ include/ libexec/ share/ var/ * OpenLDAP がインスト−ルされた状態 # cd /usr2/local/etc/openldap; ls -F DB_CONFIG.example ldap.conf.default slapd.conf ldap.conf.default と ldap.conf schema/ slapd.conf.default ldap.conf は中身一緒。 全部コメントだった。 # ls /usr2/local/var/openldap-data DB_CONFIG.example 上のディレクトリの DB_CONFIG.example と中身は一緒。 slapd.conf インスト−ルしたまま、コメントをほぼ除いた。 ------------------------------------------------------------- |include /usr2/local/etc/openldap/schema/core.schema |pidfile /usr2/local/var/run/slapd.pid |argsfile /usr2/local/var/run/slapd.args |database bdb |suffix "dc=my-domain,dc=com" |rootdn "cn=Manager,dc=my-domain,dc=com" |# Cleartext passwords, especially for the rootdn, should |# be avoid. See slappasswd(8) and slapd.conf(5) for details. |rootpw secret |directory /usr2/local/var/openldap-data # Mode 700 recommended. |index objectClass eq # Indices to maintain # ls /usr2/local/etc/openldap/schema README duaconf.schema nis.schema collective.schema dyngroup.schema openldap.ldif corba.schema inetorgperson.ldif openldap.schema core.ldif inetorgperson.schema pmi.schema core.schema java.schema ppolicy.schema cosine.ldif misc.schema cosine.schema nis.ldif * LDAP の動作を確認してみる /usr2/local/etc/openldap/slapd.conf --------------------------------------------------------------------- |include /usr2/local/etc/openldap/schema/core.schema |include /usr2/local/etc/openldap/schema/cosine.schema << 追加。 |include /usr2/local/etc/openldap/schema/inetorgperson.schema << | | |suffix "dc=nix,dc=co,dc=jj" << 変更。 |rootdn "cn=manager,dc=nix,dc=co,dc=jj" << | | |index objectClass eq # cd /usr2/local/var/openldap-data << LDAP のデ−タベ−スはここにできる。 # cp DB_CONFIG.example DB_CONFIG << これやっておかないと slaptest がエラ−に。 # /usr2/local/sbin/slaptest << slapd.conf の記述が間違っているかチェック。 bdb_monitor_db_open: monitoring disabled; configure monitor database to enable config file testing succeeded # /usr2/local/libexec/slapd << OpenLDAP の LDAP サ−バがこれ。 # ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts << 先ずは確認。 init.ldif ----------------------------------- とりあえず動作が確認できるだけのデ−タを |dn: dc=nix,dc=co,dc=jj 入れる。DN構造は一般的なのを記述してみる。 |objectClass: top |objectClass: dcObject |objectClass: organization |o: NIX CORP << 組織名を書く。 |dc: nix << "dn: dc=nix" と一致させること。 | |dn: cn=manager,dc=nix,dc=co,dc=jj |objectClass: top |objectClass: organizationalRole |cn: manager << "dn: cn=manager" と一致させること。 | |dn: ou=People,dc=nix,dc=co,dc=jj |objectClass: top |objectClass: organizationalUnit |ou: People << "dn: ou=People" と一致させること。 person.ldif --------------------------------------------- |dn: uid=tkatou,ou=People,dc=nix,dc=co,dc=jj |objectClass: top |objectClass: person |objectClass: inetOrgPerson |uid: tkatou << "dn: uid=tkatou" と一致させること。 |cn: Katou Tarou |sn: Katou |mail: tkatou@nix.co.jj |userPassword: naisyo | |dn: uid=jsatou,ou=People,dc=nix,dc=co,dc=jj |objectClass: top << top と次の person はコメントでもいい。 |objectClass: person |objectClass: inetOrgPerson |uid: jsatou |cn: Satou Mieko << Satou Jirou に後で書き直してみる。 |sn: Satou |mail: jsatou@nix.co.jj |userPassword: naisyo << 必須ではないのでコメントにしてもエラ−にならない。 [ 登録 ] # ldapadd -x -D 'cn=manager,dc=nix,dc=co,dc=jj' -W -v -f init.ldif ldap_initialize( ) << -v は細かく処理を表示する指示。 Enter LDAP Password: secret << slapd.conf の rootpw の secret。 | adding new entry "ou=People,dc=nix,dc=co,dc=jj" 問題がなければ、途中で止まる modify complete ことなくすっと処理は終わる。 # ldapadd -x -D 'cn=manager,dc=nix,dc=co,dc=jj' -W -f person.ldif [ 表示 ] 登録した init.ldif、person.ldif 全部のエントリを表示する。 # ldapsearch -x -b 'dc=nix,dc=co,dc=jj' 'objectclass=*' 登録した全エントリから uid=tkatou に合致するのを表示する。 # ldapsearch -x -b 'dc=nix,dc=co,dc=jj' 'uid=tkatou' << '(uid=tkatou)' でも "(uid=tkatou)" OK。 [ 削除 ] エントリ jsatou を消してみる。できた。 # ldapdelete -x -D 'cn=manager,dc=nix,dc=co,dc=jj' -W 'uid=jsatou, 続く Enter LDAP Password: ou=People,dc=nix,dc=co,dc=jj' deleting entry "uid=jsatou,ou=People,dc=nix,dc=co,dc=jj" 先のままの person.ldif で、消した jsatou エントリをまた追加してみる。tkatou は既 にあるため "ldap_add: Already exists (68)" と出て終わってしまった。tkatou はその まま登録されていた。jsatou エントリの追加はできなかった。 # ldapadd -x -D 'cn=manager,dc=nix,dc=co,dc=jj' -W -f person.ldif * Outlook Express でも確認してみる [ツ−ル]->[アカウント] の画面をだして [ディレクトリ サ−ビス] をクリックする。ア カウントに "Active Directory" を始め"VeriSign インタ−ネット ディレクトリ サ−ビ ス" などが既にある。ここに作成した LDAP サ−バを登録する。画面右の [追加] で下記 のように設定する。[ LDAP_test ] の名前はただの識別のためで何でもよい。 -------------------------------------------- ---------------------------------- |全般 | |詳細設定 | | ディレクトリ サ−ビス アカウント | | サ−バ−のポ−ト番号 | | [ LDAP_test ] | | ディレクトリサ−ビス [389] | | | | □このサ−バ−はセキュリティで | |サ−バ−情報 | | 保護された接続(SSL)が必要 | | サ−バ−名 [ 192.168.1.9 ] | |検索 | | □このサ−バ−はログオンが必要 | | | | | | 検索ベ−ス [dc=nix,dc=co,dc=jj]| | □メ−ル送信時に名前をサ−バ−で確認する | | □簡易検索フィルタを使用する | -------------------------------------------- ---------------------------------- [ツ−ル]->[アドレス帳] 画面を出して {人の検索}をクリック。別画面が出てくる。そこ で 探す場所:[ LDAP_test ] を選ぶ。名前:[ tkatou ] と入れて [検索開始] をクリック。 画面の下に検索結果がすぐに表示される。[プロパティ]をクリックするとたくさんの属性 情報の項目を見ることができる。まさにディレクトリ情報を管理するサ−バであることを 実感する。パスワ−ドは表示する項目自体がなかった。検索は 名前:[ katou ] でも出て きた、名前:[ tou ] では出て来なかった。検索ベ−ス [dc=nix,dc=co,dc=jj] を [dc=Pe ople,dc=nix,dc=co,dc=jj] としてもできた。 * OpenSSL もコンパイルしました ( `2h/11/M 付録からここに移しました ) http://openssl.org/source/ から "2009 Nov 5, openssl-0.98l.tar.gz, [LATEST] " を 取った。ファイルのサイズは 4179422。 # gunzip -c openssl-0.9.8l.tar.gz | tar xf - # cd openssl-0.9.8l # ./Configure 先ずはコンパイルするOSの名前を調べる。 Usage: Configure [no- ...] [enable- ...] [experimental- with scope baseObject # filter: (objectclass=*) # requesting: namingContexts 詰めて表示した。 # dn: namingContexts: dc=nix,dc=co,dc=jj # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 このように出たら正常。 (3) OpenLDAP の制御いろいろ * 実行環境に注意 # cd /usr2/local/sbin 下のように出たらライブラリのパスを設定すること。 # ./slaptest ld.so.1: slapd: 重大なエラー: libdb-4.7.so: open に失敗しました: ファイルもディ レクトリもありません。Killed # /bin/csh # setenv LD_LIBRARY_PATH /usr2/local/lib:$LD_LIBRARY_PATH * slapd << OpenLDAP の LDAP サ−バ >> # /usr2/local/libexec/slapd slapd は OpenLDAP サ−バのデ−モン。389/TCP,UDP を使う。デ−モンを止める際はいき なり殺さない。デ−タの整合性がくずれる。# kill -INT slapd-pid とやること。 * slaptest << slapd デ−モンはいらない >> # /usr2/local/sbin/slaptest bdb_monitor_db_open: monitoring disabled; configure monitor database to enable config file testing succeeded # slaptest -v だと少し詳しくでてくる。 * ldapdelete << slapd は動いていること >> # ldapdelete -x -D "cn=manager,dc=nix,dc=co,dc=jj" -W "uid=jsatou,ou=People,dc=n Enter LDAP Password: ix,dc=co,dc=jj" ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1) slapd は動いてない。 # ldapdelete -x -D "cn=manager,dc=nix,dc=co,dc=jj" -W "uid=jsatou,ou=People,dc=n Enter LDAP Password: ix,dc=co,dc=jj" deleting entry "uid=jsatou,ou=People,dc=nix,dc=co,dc=jj" slapd は動いている。 * slapcat << slapd デ−モンは見ない >> デ−タベ−スの登録デ−タを LDIF 形式で吐き出す。これで登録したデ−タをバック アップができる。slapd にはアクセスせず、直接デ−タベ−スをみて吐き出す。 ldapadd, ldapdelete, slapadd などでエントリを追加操作などした後、これで確認。 * slapadd << オフライン登録するのに >> エントリ "uid=jsatou,ou=People,dc=nix,dc=co,dc=jj" を消して。 person.ldif を jsatou だけのデ−タにする。tkatou のとこはコメントに。 # /usr2/local/sbin/slapadd -l person.ldif パスワ−ドを聞いてこない。 bdb_monitor_db_open: monitoring disabled; configure monitor database to enable _#################### 100.00% eta none elapsed none fast! Closing DB... slapd が動いているとどうなる?。ダメ。 # /usr2/local/sbin/slapadd -l person.ldif bdb_db_open: database "dc=nix,dc=co,dc=jj": database already in use. backend_startup_one (type=bdb, suffix="dc=nix,dc=co,dc=jj"): bi_db_open failed! (-1) slap_startup failed * インデックスのこと /usr2/local/etc/openldap/slapd.conf ----------------------------------- | | |index objectClass eq << 最初からあったの。 |index uid pres,eq << 追加したの。 # slapindex slapd を止めて作業すること。#kill -INT slapd-pid。 検索を高速化するためにインデックスを作成するはずである。 別に uid を使うからと言 って必ず、追加しなくてもいいのでないか。 * システムログのこと /etc/syslog.conf local4.* ではログはでて来なかった。 -------------------------------------- ログのレベルがある。 |local4.debug /usr2/local/etc/ldaplog # cd /usr2/local/etc Outlook で受信しようとしたらエラ−になった。これ # touch ldaplog で ldaplog にログがでた。syslogd とは関係なく、 # kill -HUP syslogd-pid /usr2/local/etc/dovecot_info.log にもログがでる。 * OpenLDAP のコマンド slapd が LDAP サ−バである。以下の ldapadd などは LDAPのクライアント用のソフトで ある。ldapadd、ldapdelete、ldappasswd はエントリの追加、削除、パスワ−ド変更を行 なう。ldapmodrdn はエントリの DN の中身を変える。"uid=jack,..." を "uid=tomy,.." というように。ldapadd は ldapmodify へのハ−ドリンクになっている。 # ls /usr2/local/bin ldapcompare ldapdelete ldapexop ldapmodify ldapmodrdn ldappasswd ldapsearch ldapurl ldapwhoami ldapadd -> ldapmodify 注.最初からマシンに入っていた Solaris 9 の /usr/bin/ldapsearch と間違わないこと。 (4) FortiGate で LDAP 連携を試す1 * 試してみること FortiGate のユ−ザ認証で LDAP と連携させてみるか。許可したユ−ザしかホ−ムペ−ジ にアクセスできないようにするということでやってみるか。一気にやってしまおう。3月 末までにやってしまおう。実際にメ−ル環境を LDAP サ−バを使うかどうかは、今のとこ ろ未定である。十分安定して動かせるかどうかの見極めにかかっている。 FortiGate のLAN側からWAN側に HTTP などアクセスする際に、利用ユ−ザを許可す るのに LDAP 制御を用いることにする。これなら簡単にテストできるぞ。既に FortiGate 自体でのユ−ザ認証はテストしてみた。RDP パケットに対してはアプリケ−ション制御に おけるユ−ザ認証がきかなかったというのを体験した話である。 WWW MS Sun PC1 PC1 で FortiGate □ □ FortiGate-80C □ □ の設定をしている。 |.1 |.2 --------.3 |.9 |.4 ---------------|透過型|---------------------------- 192.168.1.0 --------LAN LDAPサ−バ katou LOCAL tkatou 前回のテストで作った。 katou01 LDAP katou01 今回のテストで作った。 * FortiGate のユ−ザ制限の設定 [ファイアウォ−ル]->[ポリシ−]->[ポリシ−] -------------------------------------------------------------------------------- |ステ−タス ID 送信元 宛先 スケジュ−ル サ−ビス プロファイル アクション | |------------------------------------------------------------------------------| |▽internal -> wan1(1) | |------------------------------------------------------------------------------| | 〆 1 all all always ANY Test1 ACCEPT § ☆| 以下なし 編集の☆をクリック。{認証ル−ルの編集} 画面で、選択されたユ−ザ−グル−プ Group1、 選択されたサ−ビス ANY、プロファイルは Test1 とする。 FortiGate はグル−プ単位で LDAP 制御する。[ユ−ザ]->[ロ−カル]の新規作成でユ−ザ 名 katou、パスワ−ドを記入する。次に [ユ−ザ]->[ユ−ザグル−プ] で新規作成、タイ プはファイアウォ−ルでグル−プ名 Group1、ロ−カルユ−ザ katou を加える。 いったんどこかのサイトにアクセスしようとして FortiGateがユ−ザ認証したら、ブラウ ザを閉じてもしばらく有効になる。[ユ−ザ]->[オプション]はデフォルトで、認証タイム アウト5分、プロトコルサポ−トは HTTP,HTTPS,FTP,Telnet 全部に〆が入っている。 外に >ftp 1.2.3.4 というようにかけると、まずは FortiGate が横取りして、FortiGate に登録したユ−ザのアカウントを入れる。ここでは katouを入れる。何も起こらない。そ してもう一度 >ftp 1.2.3.4 とやり、そこのアカウントをいれるとログインができる。 ftp でも HTTP でも1つユ−ザ認証したら、他でも有効になる。つまり朝日新聞のサイト にアクセスしようとすると、FortiGate からユ−ザ認証画面がでてくる。そこをクリアし たら、すぐに ftp 1.2.3.4 やれば FortiGate からユ−ザ認証は求められないということ。 幾つか確認のテスト。[ユ−ザ]->[オプション] のプロトコルサポ−トで FTP だけ〆を外 してみた。>ftp 1.2.3.4 とやったら無反応になった。テストの際は認証タイムアウトは1 分にするとテストでの確認がやり易い。 * これはどういうことか メ−ルソフトの Outlook で送受信をクリックしたら認証画面がでてきた。ただし認証画面 は Outlook のものである。ユ−ザ名は katou と出ていたので、 パスワ−ドを FortiGate に登録したのを下の画面で入れた。しかし反応はなかった。メ−ルは取って来なかった。 -------------------------------------------------------- |インタ−ネット電子メ−ル | |------------------------------------------------------| | 次のサ−バ−のユ−ザ−名とパスワ−ドを入力してくだい | | | | サ−バ−: [ 192.168.1.2 ] | | ユ−ザ−名: [ katou ] | | パスワ−ド: [ ******* ] | | □パスワ−ドを保持する | | [ OK ][ キャンセル ] | -------------------------------------------------------- --------------------------------------------------------------------------------- |要求されたタスクを処理中に、エラ−が発生しました。詳しくは、エラ−の一覧を | |参照してください。 | |-------------------------------------------------------------------------------| |メ−ルサ−バ−にログオンできませんでした。ユ−ザ−名が拒否されました。サ−バ− | |の応答:'-ERR FortiGate firewall user authentication is needed.'.(アカウント | |192.168.1.2',POP3 サ−バ−: 192.168.1.2',エラ−番号:0x800ccc91). | --------------------------------------------------------------------------------- * FortiGate で LDAP の設定に関係しそうな所 [ユ−ザ]->[リモ−ト]->[LDAP]の(新規作成) ------------------------------------------------ | LDAPサ−バを追加 | |----------------------------------------------| |サ−バ名 [ ] | << LDAP1、適当に名前を付ける。 |ホスト名/IPアドレス [ ] | << 192.168.1.9 を入れた。 |サ−バポ−ト [ 389 ] | << デフォルトで入っていたの。 |コモンネ−ム [ cn ] | << デフォルトで入っていたの。 |識別名 [ ]@ | << dc=nix,dc=co,dc=jj と入れた。 |バイドタイプ [ シンプル ▼] | << 匿名とレギュラ−もあり。 |セキュアな接続 □ | << 暗号化の SSL を使う場合。 | ( OK ) ( キャンセル ) | ------------------------------------------------ 識別名のところ。インタ−ネットで FortiGate バ−ジョン 3.0 の日本語マニュアルを見 たら ou=shipping,dc=fortinet,dc=com と例あり。FortiGate が見る LDIF の構造は、そ んなの関係ない。LDAP の利用はそんなことは関係ないということ。 先ずは Sun のマシンで LDAP サ−バを起動しておかないといけないみたい。 上でサ−バ 名とIPアドレスをいれて、識別名の @ をクリックすると、サ−バに尋ねに行った。見つ からないとでてしまった。LDAP サ−バの slapd を起動してやってみたら、でてきました。 [ユ−ザ]->[ロ−カル]->[ロ−カル]の(新規作成) ------------------------------------------ | ユ−ザを追加 | 各ユ−ザそれぞれを、どの認証情報で認 |----------------------------------------| 証するか指定する。FortiGate ではここ | ユ−ザ名 [ katou01 ] | のユ−ザ設定がポイントということにな | □ 無効 | る。LDAPサ−バを参照するにしても該当 | ○パスワ−ド [ ] | ユ−ザは FortiGate内にも登録しておく | ●LDAP [ LDAP1 ▼] | いうこと。ダブルでユ−ザが登録されて | ○RADIUS [ ▽] | いるかチェックするという訳である。こ | ○TACACS+ [ ▽] | こでは、ユ−ザ katou01が入力されたら | ( OK ) ( キャンセル ) | LDAPサ−バにそれが有るか問い合わせる。 ------------------------------------------ [ユ−ザ]->[ロ−カル]->[ロ−カル] << ユ−ザのアカウント登録の状況 >> ------------------------------ | ユ−ザ名 タイプ | -------------- Sun の OpenLDAP |----------------------------| |LDAPサ−バ内| | katou LOCAL ☆| |に tkatou と| | katou01 LDAP § ☆| |katou01 あり| ------------------------------ -------------- [ユ−ザ]->[リモ−ト]->[LDAP] -------------------------------------------------------------------------------- | サ−バ名 ホストアドレス ポ−ト番号 コモンネ−ム 識別名 | |------------------------------------------------------------------------------| | LDAP1 192.168.1.2 389 cn dc=nix,dc=co,dc=jj ☆ | -------------------------------------------------------------------------------- [ユ−ザ]->[ユ−ザグル−プ]->[ユ−ザグル−プ] ------------------------------------------ | グル−プ名 メンバ | |----------------------------------------| |▼ファイアウォ−ル | | Group1 katou, LDAP1 ☆| |----------------------------------------| |▼ディレクトリサ−ビス | | FSAE_Guest_Users | ------------------------------------------ これだけの設定をしておいて、これでパソコン PC1などから外のホ−ムペ−ジにアクセス しようすると、FortiGate のユ−ザ認証画面がでてくる。 そこで多分 katou といれれば、 そのまま FortiGate 内に登録したユ−ザのアカウントを参照するということ。katou01と 入れると、LDAP サ−バを参照しに行くのだと思う。 どこかログを見ないことには、いい のか悪いのかまるで分からん。LDAP のログがありました、すぐ下で見てみた。 * わざと jkatou なんて適当なアカウントをユ−ザ認証画面でいれてみた # tail /usr2/local/etc/ldaplog Feb 17 17:08:19 netv slapd[19904]: [ID 218904 local4.debug] conn=36 op=1 UNBIND Feb 17 17:08:19 netv slapd[19904]: [ID 952275 local4.debug] conn=36 fd=11 closed ここまでは1つ前に出たログ。以下では表示を省略した。 Feb 17 17:31:46 .. conn=37 fd=11 ACCEPT from IP=192.168.1.9:1054 (IP=0.0.0.0:389) Feb 17 17:31:46 .. conn=37 op=0 BIND dn="cn=jkatou,ou=People,dc=nix,dc=co,dc=jp" Feb 17 17:31:46 .. conn=37 op=0 RESULT tag=97 err=49 text= method=128 Feb 17 17:31:46 .. conn=37 op=1 UNBIND Feb 17 17:31:46 .. conn=37 fd=11 closed この5つが問い合わせに応答したログ。 次に FortiGate 内に登録した katou を入れてみた。ldaplog にはログはでてこなかった。 最初にFortiGate 内に登録したアカウント情報を見て、それに合致すれば終わりという処 理になっているということみたい。 * FortiGate の操作豆知識 なんかの拍子にユ−ザ認証が効かなくなる場合があった。PC1 でそうなった。そういう場 合は下の画面で、ごみ箱のアイコンをクリックすると、このユ−ザを認証解除する、と出 てすぐに有効になる。 [ユ−ザ]->[モニタ]->[ファイアウォ−ル] -------------------------------------------------------------------------------- |ユ−ザ名 ユ−ザグル−プ ポリシ−ID 期間 IPアドレス トラフィック量 メソッド| |------------------------------------------------------------------------------| | katou Group1 1 01時間19分 192.168.1.5 991 KB FW-auth §| -------------------------------------------------------------------------------- ごみ箱 * ForiGate で Active Directory を使うには Active Directory のことは 2013/05 末頃から検討を始めた。話をSI業者のエンジニア に聞いた際、Active Directory 連携のことをちらっと言っていた。Active Directory が 稼働する Windows サ−バに FSAE ソフトをインスト−ルすれば、 FortiGate で対応でき るとのこと。FSAE ソフトは Fortinet 社が作っているものらしく、Fortinet 社のテクニ カル サポ−トから入手すること。 しかし FortiGate-310B にはユ−ザ認証のメニュ−に Active Directory を選択するのがあった、ひょっとすると FortiGate-310B では FSAEソ フトはいらないのかも知れない。参考は「FortiGate バ−ジョン3.0 MR4 管理ガイド」の 369〜405 ペ−ジ、FSAE( Fortinet Server Authentication Extension)。 << FortiGate-50B では >> [ユ−ザ]->[Windows AD] で (新規作成) をクリック ファ−ムウェアバ−ジョン 3.00 ------------------------------------------------------------------ | New | |----------------------------------------------------------------| | Name [ ] | | FASE Collector IP [ ] Port[8000] Password[ ] | | FASE Collector IP [ ] Port[8000] Password[ ] | | FASE Collector IP [ ] Port[8000] Password[ ] | | FASE Collector IP [ ] Port[8000] Password[ ] | | FASE Collector IP [ ] Port[8000] Password[ ] | |----------------------------------------------------------------| | ( OK ) ( キャンセル ) | ------------------------------------------------------------------ << FortiGate-80C では >> [ユ−ザ]->[ユ−ザグル−プ]->[ユ−ザグル−プ] で FortiOS 5.0 では FSSO ポ (+)新規作成 −リングモ−ドというユ− ------------------------------------------------------ ザ認証機能もある。 □| グル−プ名 | メンバ | Ref. ------------------------------------------------------ ▼Fortinetシングルサインオン(FSS0) □| FSS0_Guest_Users | | 0 ------------------------------------------------------ [ユ−ザ]->[シングルサインオン(FSS0)]->[FSS0エ−ジェント] (+)新規作成 ------------------------------------------------------ □ | 名前 | FSS0エ−ジェントIP/名前] | Ref. ------------------------------------------------------ (5) FortiGate で LDAP 連携を試す2 * LDAP の制御ファイルはこれ /usr2/local/etc/openldap/slapd.conf ------------------------------------------------------------------------ |include /usr2/local/etc/openldap/schema/core.schema |include /usr2/local/etc/openldap/schema/cosine.schema |include /usr2/local/etc/openldap/schema/inetorgperson.schema | |pidfile /usr2/local/var/run/slapd.pid |argsfile /usr2/local/var/run/slapd.args | |access to dn.subtree="ou=People,dc=nix,dc=co,dc=jj" attrs=userPassword | by dn="cn=madmin,ou=People,dc=nix,dc=co,dc=jj" read | by anonymous auth | by * none | |access to attrs=userPassword | by self write | by anonymous auth | by * none | |access to * | by self write | by * read | |database bdb |suffix "dc=nix,dc=co,dc=jj" |rootdn "cn=manager,dc=nix,dc=co,dc=jj" |rootpw {CRYPT}yAZ/QU1SiS1a7 << 本なんかでは rootpw secret と | よく書かれている。 |directory /usr2/local/var/openldap-data |index objectClass eq |index uid pres,eq |password-hash {CRYPT} * ユ−ザを LDAP に追加する ユ−ザのエントリを追加するコマンドが /usr2/local/bin/ にあるので、エントリを追加 するための LDIF ファイルも、このディレクトリにおくことにする。 # cd /usr2/local/bin katou01.ldif ファイル名は別に何でもいい。 ---------------------------------------------- |dn: uid=katou01,ou=People,dc=nix,dc=co,dc=jj |objectClass: top |objectClass: person |objectClass: inetOrgPerson |uid: katouu01 << 記述を間違えた。正しくは katou01。 |cn: katou01 Ikken |sn: katou01 |mail: katou01@nix.co.jj << メ−ルアドレス。 |userPassword: henomohe << ユ−ザ katou のパスワ−ド。 # ./ldapadd -x -D 'cn=manager,dc=nix,dc=co,dc=jj' -W -f katou01.ldif << 追加する。 Enter LDAP Password: secret << パスワ−ドを入れる。 adding new entry "uid=katou01,ou=People,dc=nix,dc=co,dc=jj" # ./ldapsearch -x -b 'dc=nix,dc=co,dc=jj' << これだと全部のエントリがでてくる。 # ./ldapsearch -x -b 'dc=nix,dc=co,dc=jp' 'uid=katou01' << 追加されたのを確認す # extended LDIF る。katou01 だけ出す。 # LDAPv3 # base with scope subtree # filter: uid=katou01 # requesting: ALL # katou01, People, nix.co.jj dn: uid=katou01,ou=People,dc=nix,dc=co,dc=jj objectClass: top objectClass: person objectClass: inetOrgPerson uid: katouu01 << 間違えた分が出ている。 uid: katou01 << 気を利かして訂正してくれた?、のもあった。 cn: katou01 Ikken << Outlook のアドレス帳で検索すると、これが表示名で sn: katou01 出てきた。 mail: katou01@nix.co.jj ※パスワ−ドのエントリは出てこないことに注意。 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 * FortiGate の LDAP サ−バの指定 [ユ−ザ]->[リモ−ト]->[LDAP] -------------------------------------------------------------------------------- | サ−バ名 ホストアドレス ポ−ト番号 コモンネ−ム 識別名 | |------------------------------------------------------------------------------| | LDAP1 192.168.1.9 389 cn dc=nix,dc=co,dc=jj ☆ | ----------------------------------------------------------------------------|-- | ------------------------------------------------- ←――― クリック ― | LDAPサ−バを編集 | |-----------------------------------------------| |サ−バ名 [ LDAP1 ] | |ホスト名/IPアドレス [ 192.168.1.9 ] | |サ−バポ−ト [ 389 ] | |コモンネ−ム [ cn ] | << cn を uid に変更する。 |識別名 [ dc=nix,dc=co,dc=jj ]@ | << @ をクリックする。 |バイドタイプ [ シンプル ▼] | | |セキュアな接続 □ | | | ( OK ) ( キャンセル ) | | ------------------------------------------------- | | --------------------------------------- | | LDAP識別名のクエリ | ← クリック ― |LDAPサ−バ: 192.168.1.9:389 | |-------------------------------------| | サ−バ名 エントリ | |-------------------------------------| | cn=manager 0 | | >ou=People 3 | << cn=madmin と uid=katou01 それに前 | cn=admin 0 | に登録した uid=tkatou の3つ。 |-------------------------------------| |識別名: [ dc=nix,dc=co,dc=jj ] | << ou=Peopleのとこをクリックすると識 | (OK) (キャンセル) | 別名 ou=People,dc=nix,dc=co,dc=jj --------------------------------------- になる。ともかくそうすること。 * ハイハイできましたよ [ユ−ザ]->[リモ−ト]->[LDAP] -------------------------------------------------------------------------------- |サ−バ名 ホストアドレス ポ−ト番号 コモンネ−ム 識別名 | |------------------------------------------------------------------------------| |LDAP1 192.168.1.9 389 uid ou=People,dc=nix,dc=co,dc=jj ☆| -------------------------------------------------------------------------------- LDAP の検討を1年ぶりに再開して3日でできた。FortiGate の LDAPサ−バの設定画面で、 cn でなく uid にして、識別名を ou=People,dc=nix,dc=co,dc=jj にしたら直ぐにできた。 IEのアイコンをクリックするなり、出ているブラウザでどこか、例えば朝日新聞のサイ トにアクセスしようとすると、ブラウザ内に FortiGate がユ−ザ認証画面をだしてくる。 ------------------------------------------------------- | Authentication Required | | | ここで katou と入れると | Please enter your username and password to continue | FortiGate内の登録情報を | Username: [ katou01 ] | 参照する。katou01と入れ | Password: [ henomohe ] | る LDAPサ−バを参照する。 | [ Continue ] | ------------------------------------------------------- ブラウザにすぐにこんなメッセ−ジがでる。3秒ぐらいして朝日新聞のサイトが出てくる。 -------------------------------------------------------------------------------- |Authentication was successfull. Click here if your are not redirected within 5 |  ̄ ̄ ̄ ̄ ̄ seconds. ちゃんとユ−ザを認証した時の LDAP サ−バのログはこんなのが出てくる。 # tail -20l /usr2/local/etc/ldaplog | Feb 18 09:27:10 .. conn=48 fd=11 ACCEPT from IP=192.168.1.9:1082 (IP=0.0.0.0:389) Feb 18 09:27:10 .. conn=48 op=0 BIND dn="uid=katou01,ou=People,dc=nix,dc=co,dc=jj" method=128 Feb 18 09:27:10 .. conn=48 op=0 BIND dn="uid=katou01,ou=People,dc=nix,dc=co,dc=jj" mech=SIMPLE ssf=0 Feb 18 09:27:10 .. conn=48 op=0 RESULT tag=97 err=0 text= Feb 18 09:27:10 .. conn=48 op=1 UNBIND Feb 18 09:27:10 .. conn=48 fd=11 closed * LDAP の制御ファイルの読み方 /usr2/local/etc/openldap/slapd.conf ---------------------------------------------- |(userPassword に関してのアクセス制限の設定) | |access to attrs=userPassword | by dn="cn=admin,dc=nix,dc=co,dc=jj" write LDAP管理者は書き込みできる。 | by anonymous auth 匿名からは認証できたら userPassword を参照できる。 | by self write 自分自身は書き込みできる。 | by * none その他のユ−ザは何もできない。 | | |(userPassword 属性以外のアクセス制限の設定) | |access to * | by dn="cn=admin,dc=nix,dc=co,dc=jj" write LDAP管理者は書き込みできる。 | by self write 自分自身は書き込みできる。 |# by self =rwcsx こんな指定の仕方もあるみたい。 | by * read ------------------------------------------------------------------------------------ [ 付録 ] OpenLDAP のコンパイルの様子 ● openldap-2.4.19 を展開したところ # cd /usr2/local/source/openldap-2.4.19 # ls -F ANNOUNCEMENT Makefile clients/ contrib/ servers/ CHANGES Makefile.in config.log doc/ stamp-h COPYRIGHT README config.status* include/ tests/ INSTALL aclocal.m4 configure* libraries/ LICENSE build/ configure.in libtool* # ls -F contrib ConfigOIDs ldapc++/ slapd-modules/ slapi-plugins/ README ldaptcl/ slapd-tools/ # ls -F tests Makefile README progs/ run.in Makefile.in data/ run* scripts/ # ls -F doc Makefile devel/ guide/ man/ Makefile.in drafts/ install/ rfc/ # ls -F doc/guide COPYRIGHT README images/ preamble.sdf LICENSE admin/ plain.sdf release/ # ls -F doc/guide/admin Makefile intro.sdf README.spellcheck intro_dctree.png abstract.sdf intro_tree.png access-control.sdf ldap-sync-refreshandpersist.png admin.sdf ldap-sync-refreshonly.png ../openldap-2.4.19/README --------------------------------------------------------------- |OpenLDAP 2.4 README | For a description of what this distribution contains, see the | ANNOUNCEMENT file in this directory. For a description of | changes from previous releases, see the CHANGES file in this | directory. | | This is 2.4 release, it includes significant changes from prior | releases. | |REQUIRED SOFTWARE | Building OpenLDAP Software requires a number of software packages | to be preinstalled. Additional information regarding prerequisite | software can be found in the OpenLDAP Administrator's Guide. | | Base system (libraries and tools): | Standard C compiler (required) | Cyrus SASL 2.1.21+ (recommended) | OpenSSL 0.9.7+ (recommended) | Reentrant POSIX REGEX software (required) | | SLAPD: | BDB and HDB backends require Oracle Berkeley DB 4.4, 4.5, | 4.6, or 4.7. It is highly recommended to apply the patches | from Oracle for a given release. | | ● おもいっきりはまったこと * 初期 LDIF ファイルが登録できない # /usr2/local/libexec/slapd それなりの制御ファイルなども用意して。 # ldapadd -x -D "cn=Manager,dc=nix,dc=co,dc=jj" -W -f init.ldif Enter LDAP Password: | adding new entry "dc=nix,dc=co,dc=jj" | adding new entry "cn=Manager,dc=nix,dc=co,dc=jj" ここから終わらない。仕方ないので Ctrl+C で抜けた。 これで slapd プロセスを # kill ProcessID とやっても消えない。 多分プロセスが中途 半端な状態になっている。それでプロセスを消そうとしても消えないとか、おかしなこと が起きているのでないか。# kill -9 ProcessID これで slapd を強制終了させた。 # cd /usr2/local/var/openldap-data;ls DB_CONFIG __db.003 __db.006 id2entry.bdb __db.001 __db.004 alock log.0000000001 __db.002 __db.005 dn2id.bdb objectClass.bdb # rm *db* init.ldif の記述でどこか間違いがないか。記述の順番に意味があるの # rm alock はないかとか、3日間ぐらい延々と繰り返しテストをやった。テストす # rm log* るには毎度 DB_CONFIG ファイルだけ残して後は消した。 * OpenLDAP の make test がおかしい もうやることないので、改めて OpenLDAP の README なりドキュメントを見てみることに した。http://www.openldap.org/devel/admin/quickstart.html を見た。confgigureをや って make depend、make をやる。その次に make test をやっている。それで現状インス ト−ルのままで # make test かけてみた。 これでようやくデ−タベ−スがきちんとして ないらしい、BerkeleyDB がどこかおかしいのでないかと思った。 この線で調べてみたら BerkeleyDB 4.7.25 のバグで、パッチを patch4.7.25.1〜patch4.7.25.4 を当てる事とい うのが分かった。パッチが必要ですではなくて、パッチを当てたものを置いておけよ!。 # cd /usr2/local/source/openldap-2.4.19; ls -F ANNOUNCEMENT Makefile clients/ contrib/ servers/ CHANGES Makefile.in config.log doc/ stamp-h COPYRIGHT README config.status* include/ tests/ INSTALL aclocal.m4 configure* libraries/ LICENSE build/ configure.in libtool* # make test cd tests; make test Initiating LDAP tests for BDB... | >>>>> Starting test001-slapadd for bdb... running defines.sh Running slapadd to build slapd database... << ここまで出て終わらない。 ※バグの知らせ "(ITS#6229) make test blocked on test001-slapadd" http://www.openldap.org/lists/openldap-bugs/200907/msg00143.html * BerkeleyDB にパッチをあてる BerkeleyDB version 4.7.25 にはパッチがある。BerkeleyDB がある ORACLE のサイトで http://www.oracle.com/technology/software/prodoucts/berkele-db/db/index.html に ソ−スファイルがある。2009/11 時点、4.x Releases 4.7.25 のすぐ下に patch(4) とい うのがある。これをクリックすると、パッチの記述そのものが4つ並んである。しかしこ れで一体どうせぇ−というのだ。仕方ないので、カット&ペ−ストで1つずつファイルに 切り出した。Windowd パソコンでみているので、そのファイルを FFFTP で Solaris にフ ァイル転送した。切り出したファイルが p47251.txt など。 # cd /usr2/local/source/db-4.7.25;ls LICENSE db185/ dbinc/ hsearch/ p47251.txt README db_archive/ dbinc_auto/ java/ perl/ btree/ db_checkpoint/ dbm/ libdb_java/ php_db4/ build_brew/ db_codegen/ dbreg/ lock/ qam/ build_s60/ db_deadlock/ dist/ log/ rep/ build_unix/ db_dump/ docs/ mod_db4/ repmgr/ build_vxworks/ db_dump185/ docs_src/ mp/ rpc_client/ build_wince/ db_hotbackup/ env/ mutex/ rpc_server/ build_windows/ db_load/ examples_c/ os/ sequence/ clib/ db_printlog/ examples_cxx/ os_brew/ tcl/ common/ db_recover/ examples_java/ os_qnx/ test/ crypto/ db_stat/ fileops/ os_s60/ test_micro/ cxx/ db_upgrade/ hash/ os_vxworks/ txn/ db/ db_verify/ hmac/ os_windows/ xa/ # patch < p47251.txt << /usr/bin/patch コマンド。どうもこ 新しい形式のコンテキスト diff のようです。 れでは不足ならしい。GNUのコマンド 終了 をインスト−ルして、 やった方がい いみたい。しかし、これで OpenLDAP # patch < p47252.txt を再コンパイルして、うまく行った。 新しい形式のコンテキスト diff のようです。 1 番目のパッチ内容の適用に 1271 行目で成功しました (オフセット 4 行)。 2 番目のパッチ内容の適用に 1460 行目で成功しました (オフセット 3 行)。 該当する場所にはパッチが見当たりません。 # patch < p47253.txt この2つもちゃんとパッチが当ったのやらどうやら。ネッ # patch < p47254.txt トで patch -p0 -b < file という指定しているのも見た。 # cd build_unix # ../dist/configure --prefix=/usr2/local # make # make install また後で GNU の patch をインスト−ルしてやること。 * OpenLDAP の再コンパイルとインスト−ル # cd /usr2/local/source/openldap-2.4.19 # make clean # ./configure --enable-crypt --prefix=/usr2/local | configure: WARNING: Could not locate Cyrus SASL configure: WARNING: SASL authentication not supported! configure: WARNING: Strong authentication not supported! | cd slapi; make depend ../../../build/mkdep -l -d "." -c "gcc" -m "-M" ... slapi_ext.c slapi_overlay.c plugin.c:33:18: ltdl.h: ファイルもディレクトリもありません。 | 少しワ−ニングが出たがその後の結果は問題なし。 # make make test やったらログが一杯出て、最後にエラ−めいたのが出たが問 # make test 題なし。一杯 ldapadd プロセスができていたみたいだが、まあいいか。 | slapd-modrdn PID=27164: ldap_rename_s: Can't contact LDAP server (-1) PID=27164 - Modrdn done (-1). 制御ファイルなどを改めて確認する。DB_CONFIG は先にテストで DB_CONFIG.example を コピ−して使っていたファイル。DB_CONFIG.example は今回インスト−ルされたファイル。 # ls /usr2/local/var/openldap-data DB_CONFIG DB_CONFIG.example /usr2/local/etc/openldap/slapd.conf ---------------------------------------------------------------------- |include /usr2/local/etc/openldap/schema/core.schema |include /usr2/local/etc/openldap/schema/cosine.schema |include /usr2/local/etc/openldap/schema/inetorgperson.schema | | |suffix "dc=nix,dc=co,dc=jj" |rootdn "cn=Manager,dc=nix,dc=co,dc=jj" | | # /usr2/local/sbin/slaptest slapd.conf の記述のチェック。これが正常。 bdb_monitor_db_open: monitoring disabled; configure monitor database to enable config file testing succeeded * LDAP の基本的な動作を確認してみる # ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1) << slapdが動いてない。 # /usr2/local/libexec/slapd << slapd を動かす。 # ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts # extended LDIF # LDAPv3 -b '' を -b ' ' とブランクをあけるとエラ−。 # base <> with scope baseObject # filter: (objectclass=*) # requesting: namingContexts 詰めて表示した。 # dn: namingContexts: dc=nix,dc=co,dc=jj # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 このように出たら正常。