Apache 2.4 LDAP 検索が遅い

Apache 2.4 LDAP 検索が遅い

サーバーは RHEL 7 と Apache 2.4.6 を実行しています。これはかなり新しい (約 1 週間前の) 問題です。私の部門のイントラネットは大学の Active Directory 環境に対する認証を使用しており、エンドユーザーの認証には 30 秒以上かかります。その後のページ読み込みはほぼ瞬時に行われますが、しばらくすると (タイムアウトだと思います)、問題が再発します。

<Directory /var/www/html/intranet>
  AuthType Basic
  AuthName "Restricted files"
  AuthBasicProvider ldap
  AuthLDAPBindDN CN=dept-binder,OU=Generic-Logon,OU=Generic,DC=example,DC=edu
  AuthLDAPBindPassword lamepassword
  AuthLDAPURL ldaps://ldap-ad.example.edu:636/dc=example,dc=edu?sAMAccountName?sub

  <RequireAny>
    require ldap-group CN=ug-dept-intranet,OU=Deoartment,OU=Dept-Groups,DC=example,DC=edu
  </RequireAny>
</Directory>

以下は error_log からの関連行の一部です。

AH02034: Initial (No.1) HTTPS request received for child 36 (server dept.example.edu:443)
AH01626: authorization result of Require ldap-group CN=ug-psy-employees,OU=Dynamic,OU=Psychology,OU=FSU-Dept-Groups,DC=fsu,DC=edu: denied (no authenticated user yet)
AH01626: authorization result of Require ldap-group CN=ug-dept-intranet,OU=Dept,OU=Dept-Groups,DC=example,DC=edu: denied (no authenticated user yet)
AH01691: auth_ldap authenticate: using URL ldaps://ldap-ad.example.edu:636/dc=example,dc=edu?sAMAccountName?sub
AH02001: Connection closed to child 11 with standard shutdown (server dept.example.edu:443)

# 37 seconds pass

AH01697: auth_ldap authenticate: accepting jsmith
AH01713: auth_ldap authorize: require group: testing for group membership in "CN=ug-dept-intranet,OU=Department,OU=Dept-Groups,DC=example,DC=edu"
AH01714: auth_ldap authorize: require group: testing for member: CN=jsmith,OU=PEOPLE,DC=example,DC=edu (CN=ug-dept-intranet,OU=Department,OU=Dept-Groups,DC=example,DC=edu)
AH01715: auth_ldap authorize: require group: authorization successful (attribute member) [Comparison true (adding to cache)][6 - Compare True]

答え1

Apache 2.4 の Fedora 33 でもまったく同じ問題が発生しましたが、以下を追加することで解決しました。

LDAPConnectionTimeout 1

Apache グローバル設定に以下を追加します: 参考: Apache 2.4 の mod ファイルは、http://www.apache.org/docs/mod/mod_ldap.html からダウンロードできます。

上記のパラメータは、LDAP 接続タイムアウトを 1 秒に設定します。
私は TLS で LDAPS を使用しており、Apache が名前を解決しようとしたり、Active Directory/DC の非修飾 (自己登録) 証明書を検証しようとしたりしたことで遅延が発生したと思われます。

答え2

ディレクトリが大きい場合 (大学など)、そのままではクエリが遅くなる可能性があります。微調整が必​​要です。特効薬はありませんが、いくつかヒントがあります:

  • インデックス属性のフィルタリング
  • 属性がグローバルカタログ複製としてリストされている場合は、グローバルカタログポートを使用してみてください。
  • サブスコープ検索は(可能であれば)避けてください。もちろん常に可能というわけではありませんが、多くの場合は可能です。

他にもたくさんありますマイクロソフトのドキュメント

あなたが試すことができますmod_ldap のデバッグそうすれば、明らかな問題が見つかるかもしれませんが、デバッグ ログに資格情報が表示される可能性があることに注意してください。

関連情報