一般ユーザーで動かした OpenDS で LDAP のポート 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このコマンドでは
- basic: 通常のユーザーがもっている特権
- net_privaddr: 1023 以下のポートにアクセスできる特権
- sys_resource: file descriptor の数を変更する特権(それ以外も)
- -proc_info: 多のユーザーのプロセスを見る特権は必要ないので消す
- -file_link_any: 多のユーザーのファイルへの hard link は必要ないので消す
Linux の場合は、例えば iptables を使って、ポートを変換する方法があります。
# iptables --append PREROUTING --table nat --protocol tcp --dport 389 --jump REDIRECT --to-port 1389ぜひお試しください。