LoginSignup
2
2

More than 3 years have passed since last update.

CentosのApacheで、ActiveDirectory連携のベーシック認証ができなくなった

Posted at

はじめに

普段はDebian系のOSを使っているのですが、久しぶりにCentOSを使う必要があり、SELinuxにやられたので書きます。

getenforce 0をしてSELinuxを無効化すればいいよ、的な記事が世の中にはたくさんあるみたいですが、SELenuxの無効化はしません。

今回起きたこと

閲覧を特定の人に制限するために、ApacheでActiveDirectory(LDAP認証)と連携してベーシック認証をおこなうページを作成しました。
だいたい以下のような感じの構成で順調に動いていました。ADは同じLAN内の別サーバです。

環境
- CentOS 7.7
- Apache2.4
- mod_auth_ldap

ある日、社員さんから「なんか認証できなくなったんだけど」と報告がありました。確認すると、ベーシック認証のダイアログは表示されますが、認証はできず 500 Internal Server Error と表示されます。

確かに動いていません。「なんか変更しましたか?」と聞きましたが、「何もしていない」とのことでした。

調査

「何もしてないのに壊れることはないだろう」と思いつつ、調査をはじめました。

Apacheのログの確認

とりあえず、ログを見てみます。特に何もありません。

PHPのプログラムの確認

Apacheでのベーシック認証は完了しているが、PHPのプログラムのエラーだと考えてPHPのプログラムを確認してみました。
ログの設定をして確認しましたが、プログラムには問題なさそうです。

LDAPモジュールのエラーの確認

LDAPモジュールのデバッグオプションを有効にしてみます。Apacheの設定ファイルに以下を追加します。

LDAPLibraryDebug 7



以下のようなログが表示されました。正しく通信できてないぽいですね。

ldap_create
ldap_simple_bind
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP <ip_address>
ldap_new_socket: 16
ldap_prepare_socket: 16
ldap_connect_to_host: Trying <ip_address>
ldap_pvt_connect: fd: 16 tm: 10 async: 0
ldap_ndelay_on: 16
attempting to connect: 
connect errno: 13



「ldap connect errno: 13」とかで検索すると、StackOverflowののページ が出てきます。ページに記載があるように、以下のコマンドを実行してみると、無事解決しました。

setsebool -P httpd_can_network_connect on

httpd_can_network_connectは、Apacheプロセスで動作するHTTPスクリプト・モジュールから外部への通信についてのポリシーのようです。

おわりに

別の社員さんに確認すると、OSのアップデートをしたとのことでした。OSのアップデートで何かしあったんだろうなと思っておきます。

CentOSで困ったときは、だいたいSELinuxです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2