ところで、ここまでのデモでは LDAP のポートに 1389 とか 2389 を使ってきました。実際のところは LDAP ポートが 389 でなければならないケースというのはそれほど多くあるわけではないと思いますが、 一般的に使われる 389 にしたいという要求も場合によっては出てくると思います。

一番簡単なのは、UNIX なら OpenDS を root アカウントでインストールしてしまう方法です。UNIX の場合、一般ユーザーは 1024 以降のポートにしかアクセスできないために 1389 のような番号を使って いるので、root ならこの制約はありません。でも本当にこの方法で良いのでしょうか?root 権限を 不正に取られてしまうと、システムに対していろいろな悪さができてしまうので、できれば避けたいですね。

Solaris 10 でしたら、このような場合に、 Solaris 10 最新セキュリティ技術 - 最小特権モデル に記述されているような方法で、一般ユーザーのままで、1024 より小さなポート番号を使うことも可能です。

OpenDS でこのあたりの設定を行う方法は、 https://www.opends.org/wiki/page/RunningTheServerAsANonRootUser に記述されています。簡単に要約すると、例えば OpenDS を opends というアカウントにインストールし、 実行する場合、この opends アカウントに対して、次の usermod コマンドで必要な役割を設定します。

# usermod -K defaultpriv=basic,net_privaddr,sys_resource,-proc_info,-file_link_any opends
このコマンドでは
  1. basic: 通常のユーザーがもっている特権
  2. net_privaddr: 1023 以下のポートにアクセスできる特権
  3. sys_resource: file descriptor の数を変更する特権(それ以外も)
  4. -proc_info: 多のユーザーのプロセスを見る特権は必要ないので消す
  5. -file_link_any: 多のユーザーのファイルへの hard link は必要ないので消す
といった操作を opends アカウントに対して行っています。これで OpenDS から 389 ポートをつかって LDAP の 通信を行えるようになります。

Linux の場合は、例えば iptables を使って、ポートを変換する方法があります。

# iptables --append PREROUTING --table nat --protocol tcp --dport 389 --jump REDIRECT --to-port 1389
ぜひお試しください。
投稿されたコメント:

コメント
  • HTML文法 不許可

This blog copyright 2008 by shioda