2011年1月29日土曜日

メールサーバを新しくする実験 【LDAPサーバを建てる】

まずはbindとOpenDSを使ってDNSサーバとLDAPサーバを作る。
OpenDSは、SSL/TLSともに有効。証明書はとりあえずテスト用。

【bindの設定】
bindの準備は苦手です(;^ω^)
こんな感じのレコードを作成、詳しくは省略

  • 192.168.5.10:dns.
  • 192.168.5.20:mail.
  • 192.168.5.30:www.


【Javaの導入】
Javaが動く環境が必要なので本家から最新版を持ってくる。
この辺も省略
JAVA_HOMEを設定したり、PATHを設定したり。


【OpenDSの展開】
本当は非rootで動かした方が良いんだろうけどめんd、今回の目的はLDAPサーバを作ることじゃ無いのでその辺はわりと適当。
公式サイトから最新版のアーカイブを落として来て展開するだけ~。

$ unzip OpenDS-2.2.1.zip
$ sudo mv OpenDS-2.2.1 /opt/OpenDS
$ cd /opt/
$ sudo chown -R root.root OpenDS
こんな感じで終了。


【OpenDSのインストール】
$ sudo su -
# cd /opt/OpenDS/
# ./setup  --cli
Please set OPENDS_JAVA_HOME to the root of a Java 5 (or later) installation or edit the java.properties file and then run the dsjavaproperties script to specify the Java version to be used
Oh... orz

$ sudo su -
# export OPENDS_JAVA_HOME=/usr/local/JavaSE
一般的な JAVA_HOME は使わないらしいです。

# ./setup --cli
ディレクトリサーバーの初期ルートユーザー DN として使用するものを指定してください。 [cn=Directory Manager]:
初期ルートユーザーに使用するパスワードを指定してください:
確認のためにパスワードをもう一度入力してください:
ディレクトリサーバーが LDAP クライアントからの接続を受け入れるポートを指定してください。 [389]:

管理コネクタはどのポートで接続を受け入れますか ? [4444]:

ディレクトリデータのベース DN として使用するものを指定してください。 [dc=example,dc=com]:
データベース生成用のオプション:
   1)  ベースエントリのみを作成します
   2)  データベースを空のままにします
   3)  LDIF ファイルからデータをインポートします
   4)  自動生成されたサンプルデータを読み込みます
選択肢 [1]:  1

SSL を有効にしますか ? (yes / no) [no]:  yes
証明書サーバーのオプション:

   1)  自己署名付き証明書を生成します (テスト目的のみでの使用を推奨)
   2)  Java 鍵ストア (JKS) に存在する既存の証明書を使用します
   3)  JCEKS 鍵ストアに存在する既存の証明書を使用します
   4)  PKCS#12 鍵ストアに存在する既存の証明書を使用します
   5)  PKCS#11 トークン上の既存の証明書を使用します

選択肢 [1]:  1

構成の完了時にサーバーを起動しますか ? (yes / no) [yes]:  yes


設定の概要
=============
LDAP リスナーポート:   389
管理コネクタポート:      4444
LDAP セキュアアクセス:  StartTLS を有効にする
       LDAP ポート 636 で SSL を有効にする
       自己署名付き証明書の新規作成
ルートユーザー DN:     cn=Directory Manager
ディレクトリデータ:      新しいベース DN dc=example,dc=com を作成します。
       ベース DN データ: ベースエントリのみを作成する (dc=example,dc=com)

構成の完了時にサーバーを起動します


何を実行しますか ?
   1)  上記のパラメータを使ってサーバーを設定する
   2)  設定パラメータを再度指定する
   3)  設定を取り消す

選択肢 [1]:  1

ディレクトリサーバーを構成しています ..... 完了。
証明書を構成しています ..... 完了。
ベースエントリ dc=example,dc=com を作成しています ..... 完了。
ディレクトリサーバーを起動しています ......... 完了。

この操作の詳細なログについては /tmp/opends-setup-1702124262181786369.log を参照してください。

基本的なサーバー構成状態および構成を表示する場合は、/opt/OpenDS/bin/status を起動できます

これでおしまい
とても簡単。

【OpenDSの初期設定】
実は初期状態だと暗号化パスワードが使えないっぽいです。
なので、そいつを修正

# cd /opt/OpenDS/
# bin/dsconfig --advanced -p 4444 -h localhost -D "cn=directory manager" -X

>>>> OpenDS LDAP 接続パラメータを指定します

ユーザー 'cn=directory manager' のパスワード:

>>>> OpenDS 構成コンソールのメインメニュー

何を構成しますか ?

1) SASL 機構ハンドラ 23) ルート DSE バックエンド
2) アイデンティティーマッパー 24) レプリケーションサーバー
3) アカウントステータス通知ハンドラ 25) レプリケーションドメイン
4) アクセス制御ハンドラ 26) ログパブリッシャー
5) アラートハンドラ 27) ログローテーションポリシー
6) エントリキャッシュ 28) ログ保持ポリシー
7) グループ実装 29) ローカル DB VLV インデックス
8) グローバル構成 30) ローカル DB インデックス
9) デバッグターゲット 31) ワークキュー
10) トラストマネージャープロバイダ 32) ワークフロー
11) ネットワークグループ 33) ワークフロー要素
12) ネットワークグループの QOS ポリシー 34) 仮想属性
13) バックエンド 35) 同期プロバイダ
14) パスワード ポリシー 36) 属性構文
15) パスワードジェネレータ 37) 拡張処理ハンドラ
16) パスワードバリデータ 38) 拡張機能
17) パスワード保存スキーマ 39) 接続ハンドラ
18) プラグイン 40) 暗号化マネージャー
19) プラグインルート 41) 管理コネクタ
20) マッチングルール 42) 証明書マッパー
21) モニタープロバイダ 43) 鍵マネージャープロバイダ
22) ルート DN

q) 終了

選択肢: 14

>>>> パスワード ポリシー 管理メニュー

何を実行しますか ?

1) 既存の パスワードポリシー を一覧表示します
2) 新規 パスワード ポリシー を作成します
3) 既存の パスワード ポリシー を表示および編集します
4) 既存の パスワード ポリシー を削除します

b) 戻る
q) 終了

選択肢 [b]: 3

>>>> 次のリストから パスワード ポリシー を選択します:

1) Default Password Policy
2) Root Password Policy

c) 取消し
q) 終了

選択肢 [c]: 1

>>>> パスワード ポリシー のプロパティーを構成します

プロパティー 値
--------------------------------------------------------------------
1) account-status-notification-handler -
2) allow-expired-password-changes false
3) allow-multiple-password-values false
4) allow-pre-encoded-passwords false
5) allow-user-password-changes true
6) default-password-storage-scheme Salted SHA-1
7) deprecated-password-storage-scheme -
8) expire-passwords-without-warning false
9) force-change-on-add false
10) force-change-on-reset false
11) grace-login-count 0
12) idle-lockout-interval 0 s
13) last-login-time-attribute -
14) last-login-time-format -
15) lockout-duration 0 s
16) lockout-failure-count 0
17) lockout-failure-expiration-interval 0 s
18) max-password-age 0 s
19) max-password-reset-age 0 s
20) min-password-age 0 s
21) password-attribute userpassword
22) password-change-requires-current-password false
23) password-expiration-warning-interval 5 d
24) password-generator Random Password Generator
25) password-history-count 0
26) password-history-duration 0 s
27) password-validator -
28) previous-last-login-time-format -
29) require-change-by-time -
30) require-secure-authentication false
31) require-secure-password-changes false
32) skip-validation-for-administrators false
33) state-update-failure-policy reactive

?) ヘルプ
f) 完了 - すべての変更を パスワード ポリシー に適用します
c) 取消し
q) 終了

選択肢 [f]: 4

>>>> "allow-pre-encoded-passwords" プロパティーを構成しています

ユーザーが事前にエンコードされた値を指定することによってパスワードを変更できるかどうかを示します。

この場合、平文パスワードが不明であるために妥当性検査を適用できないため、セキュリティー上の危険にさらされる可能性があります。

"allow-pre-encoded-passwords" プロパティーを変更しますか ?

1) デフォルト値を維持します: false
2) これを次の値に変更します: true

?) ヘルプ
q) 終了

選択肢 [1]: 2

あとは保存して戻っていくだけ。


【OpenDSの起動】
Redhat的な感じで。
/etc/init.d/opendsあたりに

#!/bin/sh
#
# Startup script for the Open Directory Server
#
# chkconfig: - 85 15
# description: This script starts your OpenDS server

# Source function library.
. /etc/rc.d/init.d/functions

opends=/opt/OpenDS

RETVAL=0

# See how we were called.
case "$1" in
start)
echo -n "Starting OpenDS: "
$opends/bin/start-ds
RETVAL=$?
echo
;;
stop)
echo -n "Shutting down OpenDS: "
$opends/bin/stop-ds
RETVAL=$?
echo
;;
status)
$opends/bin/status
RETVAL=$?
;;
restart)
$opends/bin/stop-ds --restart
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac

exit $RETVAL
を作成しておいて

$ sudo /sbin/chkconfig opends on
でOK。


ここまで来れば、あとはApache Directory Studioあたりを使ってGUIで操作できるはず。

0 件のコメント: