ApacheのKerberos認証でAD認証連携させる
Apacheの基本認証にActiveDirectory(AD)のユーザ認証と連携する方法は2つあります。利用モジュール | mod_auth_kerb |
---|---|
メリット | Apache-ADサーバ間はKERBEROS経由を利用するため、パスワードが暗号化されます。 |
デメリット | KERBEROS認証の場合は、ActiveDirectory上の有効なユーザ全員が対象となり、ActiveDirectory上の特定OU内のユーザのみにすることは出来ないようです。 特定ユーザのみにする場合は「Require user」か、ユーザを列挙したファイルを用意して「Require group」を使用することになります。 Chromeブラウザからの認証は500エラーが発生する。(IE,FireFoxは正常にアクセスできることを確認) |
DCサーバ側作業
・事前作業
Apacheサーバ側作業
・mod_auth_kerbモジュールインストール
・krb5.confファイルの編集
・ApacheのAD連携設定
# yum install mod_auth_kerb
Windowsドメイン名 | ad.hoge.com |
---|---|
DC(ドメインコントローラ)サーバ | 192.168.2.4 |
# mkdir /var/log/krb5 ;chown apache /var/log/krb5
# vi /etc/krb5.conf
[logging] default = FILE:/var/log/krb5/krb5libs.log kdc = FILE:/var/log/krb5/krb5kdc.log admin_server = FILE:/var/log/krb5/kadmind.log [libdefaults] default_realm = AD.HOGE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] AD.HOGE.COM = { default_domain = ad.hoge.com kdc = 192.168.2.4:88 admin_server = 192.168.2.4:749 } [domain_realm] .ad.hoge.com = AD.HOGE.COM ad.hoge.com = AD.HOGE.COM※大文字小文字は重要です。
# kinit testapache@AD.HOGE.COM Password for testapache@AD.HOGE.COM:※何も表示されず終了すれば、成功!!
# vi /etc/httpd/conf/httpd.conf
LoadModule auth_kerb_module modules/mod_auth_kerb.so
Alias /krb5 /var/www/krb5
<Location /krb5>
AuthType Kerberos
AuthName "Kerberos Login(ActiveDirectory)"
KrbAuthRealms AD.HOGE.COM
KrbVerifyKDC Off
KrbServiceName HTTPS/webdav-01.web.hoge.com
KrbMethodNegotiate off
KrbSaveCredentials off
Require valid-user
Order deny,allow
Deny from none
Allow from all
</Location>
<Directory "/var/www/krb5">
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
KrbMethodNegotiate off
KrbSaveCredentials off
CentOSのActiveDirectory連携(パスワード/認証統合)
Linuxサーバを複数管理する際に、アカウント管理業務が煩雑になってくる。 その場合、アカウント管理を統一を考えると思うが、LDAPの導入は敷居が高い。しかしActiveDirectoryであればGUIで簡単にインストール設定ができユーザ管理が容易です。そのActiveDirectoryとCentOSのパスワード/認証の連携方法を紹介します。CentOSのパスワード統合
パスワード統合方式は、各サーバ上にアカウントを作成する必要がありますが、パスワードはActiveDirectory側で管理するため各サーバ上でのパスワード管理 から解放される方式です。1.pam_krb5によるパスワード統合
2.SAMBによるパスワード統合
CentOSの認証統合方式
1.Windows側にSUAをインストールする方法 ・SUA + NIS
・SUA + LDAP(UNIX属性)
・ Samba + Winbind
SIDを統一させるためマッピングする設定が必要CentOSのAD連携の確認事項
・SID/GIDApache基本認証のAD連携
KERBEROS認証もしくはLDAP認証を用いることで、WindowsのActiveDirectoryを利用したApache基本認証が行えます。利用モジュール | mod_auth_ldap |
---|---|
メリット | ActiveDirectoryのグループ単位で認証を掛けられるため、ActiveDirectory上での一元管理が可能となります。 AuthLDAPUrlオプション内で許可グループを指定する |
デメリット | LDAPの場合は簡易認証となるため、apache-ActiveDirectoryサーバ間のパスワードがクリアテキストで流れてしまいます。 LDAPに接続するためのユーザ(認証対象と別のものでよい)が必要になる。 |
利用モジュール | mod_auth_kerb |
---|---|
メリット | Apache-ADサーバ間はKERBEROS経由を利用するため、パスワードが暗号化されます。 |
デメリット | KERBEROS認証の場合は、ActiveDirectory上の有効なユーザ全員が対象となり、ActiveDirectory上の特定OU内のユーザのみにすることは出来ないようです。 特定ユーザのみにする場合は「Require user」か、ユーザを列挙したファイルを用意して「Require group」を使用することになります。 |
基礎から分かる Samba 4 構築&運用入門 |
Software Design (ソフトウェア デザイン) 2014年 06月号 |
Apache基本認証でAD認証連携させる
HTTP/HTTPSアクセスでアクセス制御する方法として、簡単にユーザ認証制御を行うことができる基本認証が使われることが多いです。利用モジュール | mod_auth_ldap |
---|---|
メリット | ActiveDirectoryのグループ単位で認証を掛けられるため、ActiveDirectory上での一元管理が可能となります。 AuthLDAPUrlオプション内で許可グループを指定する |
デメリット | LDAPの場合は簡易認証となるため、apache-ActiveDirectoryサーバ間のパスワードがクリアテキストで流れてしまいます。 LDAP情報取得するためのユーザ(認証ユーザと別ユーザ)が必要になる。 |
・Apache基本認証をAD連携する。
・ActiveDirectory(AD)に登録したユーザをApache基本認証のユーザとする。
・ADのグループ/ユーザに対して、アクセス制限をかける。
・ADのDCサーバを複数指定し、DCサーバの冗長化に対応する。
・事前作業(DCサーバ側作業)
・Apacheモジュールの読み込み(Apacheサーバ側作業)
・ApacheのAD連携設定(Apacheサーバ側作業)
Apacheモジュールの読み込み(Apacheサーバ側作業)
Apache設定ファイルにLDAP関連のモジュール読み込む設定を行う。# vi /etc/httpd/conf/httpd.conf
LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
ADドメイン名 | ad.hoge.com |
---|---|
DCサーバ1 | dc-01.ad.hoge.com |
DCサーバ2 | dc-02.ad.hoge.com |
AD情報取得のユーザ名 | ad\connuser |
AD情報取得のユーザのパスワード | passwd_01 |
アクセス許可グループ | webadv-gp |
アクセス許可グループの所属OU | clients (ad.hoge.com) |
# vi .htaccess
AuthType Basic AuthName "ActiveDirectory Auth" AuthBasicProvider ldap AuthLDAPURL "ldap://dc-01.ad.hoge.com:389 dc-02.ad.hoge.com:389/OU=clients,DC=ad,DC=hoge,DC=com?sAMAccountName?sub?(objectClass=*)" AuthLDAPBindDN "ad\connuser" AuthLDAPBindPassword "passwd_01" AuthzLDAPAuthoritative Off Require ldap-group CN=webdav-gp,OU=clients,DC=ad,DC=hoge,DC=com
ApacheのAD連携の説明
■AuthLDAPURLについて