LoginSignup
0
1

More than 3 years have passed since last update.

Ubuntu18.04のapache2.4でActiveDirectory認証

Last updated at Posted at 2020-01-20

エンタメ系企業の社内もろもろを担当している、最近チックチックチックのある曲にどはまり中のakibinです。

やってみたこと

ローカル端末のVMに起てたUbuntuのApacheの特定ディレクトリにアクセスした際にBasic認証を発生させ、認証をActiveDirectoryのユーザで実施する。
AD環境は別途作成済み、またApacheは既にインストール済みとする

作業内容

1.ApaheでLDAP認証に必要なモジュールを有効化

以下実行で必要なモジュール(authnz_ldap.load, ldap.conf, ldap.load)を有効化

User@Local-VirtualBox:~$ sudo a2enmod ldap authnz_ldap

有効化されているか確認

User@Local-VirtualBox:~$ ls /etc/apache2/mods-enabled/
# ここに追加されていればOK
access_compat.load  authnz_ldap.load  deflate.conf  ldap.conf       negotiation.conf  status.conf
alias.conf          authz_core.load   deflate.load  ldap.load       negotiation.load  status.load
alias.load          authz_host.load   dir.conf      mime.conf       reqtimeout.conf
auth_basic.load     authz_user.load   dir.load      mime.load       reqtimeout.load
authn_core.load     autoindex.conf    env.load      mpm_event.conf  setenvif.conf
authn_file.load     autoindex.load    filter.load   mpm_event.load  setenvif.load

2.Apaheのデフォルトの設定ファイル(000-default.conf)をコピー(バックアップ)

000-default.confをコピーしてauth-ad.confというファイルを作成

User@Local-VirtualBox:~$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/auth-ad.conf

auth-ad.confが作成されているか確認

User@Local-VirtualBox:~$ ls /etc/apache2/sites-available/
000-default.conf  auth-ad.conf  default-ssl.conf

3.作成した設定ファイル(auth-ad.conf)にAD認証用の設定を追記

前提条件: ※こちらの内容を自身の環境に置き換えてください

・認証対象のディレクトリ: /var/www/html/himitu
・ADサーバ: test-ad.hoge.co.jp
・Basic認証を許可するou: testou
・ADへアクセス時に認証するユーザ: admin
・ADへアクセス時に認証するユーザもパスワード: adminpw

User@Local-VirtualBox:~$ sudo vi /etc/apache2/sites-available/auth-ad.conf
# 以下を追記
 <Directory "/var/www/html/himitu">
    AuthName "User/Password"
    AuthType Basic
    AuthBasicProvider ldap
    # AuthzLDAPAuthoritative  off   
    AuthLDAPURL "ldap://test-ad.hoge.co.jp:389/ou=testou,dc=test-ad,dc=hoge,dc=co,dc=jp?sAMAccountName?sub?(objectClass=*)"
    AuthLDAPBindDN "cn=admin,dc=test-ad,dc=hoge,dc=co,dc=jp"
    AuthLDAPBindPassword "adminpw"
    require valid-user
 </Directory>

AuthzLDAPAuthoritativeで、LDAP認証で失敗した場合に他の認証サービスに移るかどうかを指定可能ですが、2.2(?)あたりからバグでエラーになるので削除(ここではコメントアウト)。こちらの記事を参照させていただきました!

AuthLDAPURLのsAMAccountNameについて、Linux+OpenLDAPで運用されているLDAPサーバーの場合は、アカウント名を示す属性はuidなのですが、ADのLDAPディレクトリの場合にはこの属性はありません。
ADで同様な意味を持つ属性は、sAMAccountNameこちらの記事を参照させていただきました!
ちなみにメールアドレスの属性はmailでした。(そのまんま)

4.デフォルトの設定ファイルを無効化、新しい設定ファイルを有効化

# デフォルトの設定ファイルを無効化
User@Local-VirtualBox:~$ cd /etc/apache2/sites-available
User@Local-VirtualBox:/etc/apache2/sites-available$ sudo a2dissite 000-default.conf

# 新しい設定ファイルを有効化
User@Local-VirtualBox:/etc/apache2/sites-available$ sudo a2ensite auth-ad.conf

# 有効化の状況確認
User@Local-VirtualBox:/etc/apache2/sites-available$ cd ../
User@Local-VirtualBox:/etc/apache2$ ls sites-enabled/
auth-ad.conf

5.Apache再起動

User@Local-VirtualBox:/etc/apache2$ sudo /etc/init.d/apache2 reload

6.動作検証

該当のディレクトリ(himituディレクトリ。VMのIPは192.168.57.111)へブラウザからアクセスしてみると…
スクリーンショット 2020-01-20 14.47.18.png

ベーシック認証画面が表示され、ADの認証用のOU(testou)の中のユーザのIDとパスワードを入れると…
スクリーンショット 2020-01-20 14.47.48.png

認証が通り、テストページが表示されました!

設定ファイルのAuthLDAPURLの書き方がなかなかわからず、苦戦しました…疲れたのでおやつでも食べようと思います。

****************************************
◆ Twitterアカウント
@AkibinMusic

◆ Youtubeチャンネル
https://www.youtube.com/channel/UC-JOpwEnJn3gCrUA4NdCYgg

0
1
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
0
1