10. セキュリティの考慮

OpenLDAP ソフトウェアは、厳密に制御された閉じたネットワークからグローバルネットワークまで広範囲なコンピュータ環境で動作するよう設計されています。したがって OpenLDAP ソフトウェアは多くの異なるセキュリティ機構をサポートします。この章では、これらの機構について述べ、 OpenLDAP ソフトウェアについてのセキュリティの考慮について説明します。

10.1. ネットワークセキュリティ

10.1.1. 特定の受けつけアドレス

デフォルトで slapd(8) は IPv4 と IPv6 の「どんな」アドレスででも受けつけています。しかし slapd が受けつけるアドレスとポートのペアを限定しておくことが望ましい場合もよくあります。たとえば、IPv4 アドレス 127.0.0.1 に限定すれば、ディレクトリサーバへのリモートアクセスができなくなります。これは次のように指定します。

        slapd -h ldap://127.0.0.1

これにより、サーバが特定のインタフェースアドレスで受けつけるように設定できますが、このインタフェースを介してアクセス可能なネットワークだけにサーバへのアクセスを制限するとは必ずしも言えません。リモートアクセスを選択的に制限するには IP ファイアウォール の利用を勧めます。

より詳しい情報についてはコマンドラインオプションslapd(8) を参照してください。

10.1.2. IP ファイアウォール

サーバシステムの IP ファイアウォール機能は、クライアントの IP アドレスやクライアントと通信するのに用いるネットワークインタフェースを基にアクセスを制限するのに使えます。

一般に slapd(8) は ldap:// セッションではポート 389/tcp、 ldaps:// セッションではポート 636/tcp で受け付けます。 slapd(8) では他のポートで受け付けるようにも設定できます。

IP ファイアウォールの設定方法は、利用する IP ファイアウォールの種類に依存するので、ここには例を提示しません。利用する IP ファイアウォールに関する文書を参照してください。

10.1.3. TCP Wrappers

slapd(8) は TCP Wrappers をサポートします。 TCP Wrappers はサーバへの TCP/IP アクセスを制御するためののルールベースのアクセス制御システムです。たとえば host_options(5) ルールは次のようなものです。

        slapd: 10.0.0.0/255.0.0.0 127.0.0.1 : ALLOW
        slapd: ALL : DENY

これはディレクトリサービスへにアクセスするプライベートネットワーク 10.0.0.0 とローカルホスト(127.0.0.1)からの接続だけを許可します。IP アドレスを使うのは、slapd(8) が普通は逆引きをするように設定されていないからです。

TCP wrappers では接続が受け付けられる必要があることに注意してください。厳密な取扱いにおいては接続の拒否でさえも必要となるので、そのような場合には一般に TCP wrappers を使うのではなく IP ファイアウォールによる保護を勧めます。

TCP wrapper ルールのより詳しい情報については hosts_access(5) を参照してください。

10.2. データの完全性と機密性の保護

Transport Layer Security (TLS) はデータの完全性と機密性の保護を提供するのに使えます。 OpenLDAP は StartTLS と ldaps:// の両方で TLS (SSL)をサポートしています。より詳しい情報についてはTLS の使用法の章を参照してください。 StartTLS は Standard Track 機構です。

DIGEST-MD5 や GSSAPI などの Simple Authentication and Security Layer (SASL) 機構もデータの完全性と機密性の保護を提供します。より詳しい情報についてはSASL の使用法の章を参照してください。

10.2.1. セキュリティ強度係数

サーバは保護の相対的な強度を示すのにセキュリティ強度係数 (Security Strength Factor: SSF)を使います。SSF が 0 であることは保護されていないことを示します。SSF が 1 であることは完全性が保護されていることを示します。SSF が 1 より大きい場合には有効な暗号鍵長とおおよそ関連しています。たとえば DES は 56、3DES は 112、 AES は 128, 192, 256 になります。

多くの管理上の制御が LDAP セッションに対する TLS や SASL の保護と関連した SSF を利用します。

security 制御は保護が適切でない操作を許可しません。たとえば次のように設定します。

        security ssf=1 update_ssf=112

この場合、すべての操作に完全性保護、更新操作(追加、削除、更新など) に 3DES と同等の暗号化保護を要求します。詳細は slapd.conf(5) を参照してください。

きめ細かい制御のために SSF はアクセス制御で利用できます。より詳しい情報についてはslapd の設定ファイルの章の アクセス制御の節を参照してください。

10.3. 認証方式

10.3.1. 「簡易」方式

LDAP の「簡易」方式には次の3つの操作モードがあります。

匿名アクセス権は「簡易」バインド操作に名前もパスワードも与えないことにより得られます。非認証アクセス権はユーザ名を与えるがパスワードを与えないことにより得られます。認証アクセス権はユーザ名とパスワードを与えることにより得られます。

匿名バインドは結果として匿名認可関連となります。匿名バインド機構はデフォルトで利用できますが、 slapd.conf(5) に "disallow bind_anon" を指定することにより利用できなくなります。

非認証バインドは結果として匿名認可関連となります。非認証バインドはデフォルトでは利用できませんが、 slapd.conf(5) に "allow bind_anon_cred" を指定することにより利用できるようになります。多くの LDAP アプリケーションにおいて、認証アクセス権を得るつもりがミスにより非認証バインドを行ってしまうことがあり得るので (つまりアプリケーションがパスワードの提供を保証しないので)、この機構は一般に利用できないようにしておきます。

ユーザ名/パスワード認証が成功すると、渡したユーザ名がユーザ認可IDとなり、セッションに関連づけられます。ユーザ名/パスワード認証バインドはデフォルトで利用できます。しかし、この機構自体は盗聴からの保護を提供していないので(たとえばパスワードを平文で設定する)、厳重に管理されたシステム、あるいは LDAP セッションが他の仕組(TLS や IPSEC など)で保護されている場合にのみ利用することを勧めます。管理者がパスワードの保護を TLS に頼っている場合には保護されていない認証を利用できなくすることを勧めます。これは slapd.conf(5) に "disallow bind_simple_unprotected" を設定することにより行えます。ディレクティブ securitysimple_bind オプションは、 簡易ユーザ名/パスワード認証に要求する機密性保護のレベルについてきめ細やかな制御を提供します。

ユーザ名/パスワード認証バインド機構は "disallow bind_simple" の設定により完全に利用できなくなります。


注記:成功しなかったバインドは結果的に匿名認可関連を持ったセッションになります。

10.3.2. SASL 方式

LDAP SASL 方式は、どのような SASL 認証機能も利用できるようにします。 SASL については SASL の使用法 で説明します。