2013年1月29日火曜日

ディレクトリ別Basic認証(OpenLDAP連携)


一度Basic認証が通ると本来アクセスさせたくない他のディレクトリにもアクセスできてしまう場合があります。
ディレクトリ別にアクセス可能なユーザ/グループを定義して、OpenLDAPを利用したBasic認証の設定手順をまとめます。

【OpenLDAPサーバ】
OS: CentOS 6.3(64-bit)
openldap-servers: 2.4.23-26.el6_3.2
hostname: openldap
IP: 192.168.77.146

【Webサーバ】
OS: CentOS 6.3(64-bit)
Apache: 2.2.15
hostname: web03
IP: 192.168.77.147


■アクセス制御
ユーザ:en2011001,en2011002 → unit01ディレクトリにアクセス可能
ユーザ:en2012001,en2012002 → unit02ディレクトリにアクセス可能

■OpenLDAPユーザ作成
Apache Directory Studio を利用してユーザをOpenLDAPに登録する。


■OpenLDAPサーバで作成状況確認
[root@openldap ~]# ldapsearch -x -h localhost -b "dc=open_ldap,dc=com" # extended LDIF # # LDAPv3 # base with scope subtree # filter: (objectclass=*) # requesting: ALL # # open_ldap.com dn: dc=open_ldap,dc=com dc: open_ldap o: open_ldap objectClass: dcObject objectClass: top objectClass: organization # unit01, open_ldap.com dn: ou=unit01,dc=open_ldap,dc=com ou: unit01 objectClass: organizationalUnit objectClass: top # en2011001, unit01, open_ldap.com dn: cn=en2011001,ou=unit01,dc=open_ldap,dc=com sn:: 56aP5rKi cn: en2011001 objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top givenName:: 6Kut5ZCJ userPassword:: e1NTSEF9UGN4eHNTakF4U0ltQXB2ZXdaZXNBeUp6cyt4TG5odHNBMXJNaFE9PQ= = mail: yukichi@open_ldap.com # en2011002, unit01, open_ldap.com dn: cn=en2011002,ou=unit01,dc=open_ldap,dc=com sn:: 5aSP55uu cn: en2011002 objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top userPassword:: e1NTSEF9S0dTTEdrWmt3VnN5SWhlbHRtV2dMb2NEV0JEY2R4clpzdWJiM2c9PQ= = givenName:: 5ryx55+z mail: soseki@open_ldap.com # unit02, open_ldap.com dn: ou=unit02,dc=open_ldap,dc=com ou: unit02 objectClass: organizationalUnit objectClass: top # en2012001, unit02, open_ldap.com dn: cn=en2012001,ou=unit02,dc=open_ldap,dc=com userPassword:: e1NTSEF9UGN4eHNTakF4U0ltQXB2ZXdaZXNBeUp6cyt4TG5odHNBMXJNaFE9PQ= = objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top cn: en2012001 sn:: 6YeO5Y+j givenName:: 6Iux5LiW mail: hideyo@open_ldap.com # en2012002, unit02, open_ldap.com dn: cn=en2012002,ou=unit02,dc=open_ldap,dc=com userPassword:: e1NTSEF9S0dTTEdrWmt3VnN5SWhlbHRtV2dMb2NEV0JEY2R4clpzdWJiM2c9PQ= = objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top cn: en2012002 sn:: 5qiL5Y+j givenName:: 5LiA6JGJ mail: ichiyo@open_ldap.com # search result search: 2 result: 0 Success # numResponses: 8 # numEntries: 7 [root@openldap ~]#

■WebサーバBasic認証設定
[root@web03 ~]# vi /etc/httpd/conf/httpd.conf [root@web03 ~]# tail -17 /etc/httpd/conf/httpd.conf <Directory "/var/www/html/unit01/"> AuthName "UserID/Password" AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL ldap://192.168.77.146:389/ou=unit01,dc=open_ldap,dc=com?cn?sub?(objectClass=person) Require valid-user </Directory> <Directory "/var/www/html/unit02/"> AuthName "UserID/Password" AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL ldap://192.168.77.146:389/ou=unit02,dc=open_ldap,dc=com?cn?sub?(objectClass=person) Require valid-user </Directory> [root@web03 ~]# /etc/init.d/httpd restart
※表示の都合上タグを"<"と">"で記載。

■ブラウザで確認
en2011002 で http://192.168.77.147/unit01/ にアクセスしてみる。


アクセス可能。

en2011002 で http://192.168.77.147/unit02/ にアクセスしてみる。


アクセス不可能。(ディレクトリ別の制御ができている)

en2012001 で http://192.168.77.147/unit02/ にアクセスしてみる。


アクセス可能。

■その時のWebサーバのログ
[root@web03 ~]# tail -f /var/log/httpd/access_log --- 192.168.77.21 - - [28/Jan/2013:01:32:29 +0900] "GET /unit01/ HTTP/1.1" 401 481 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - en2011002 [28/Jan/2013:01:33:49 +0900] "GET /unit01/ HTTP/1.1" 200 235 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - - [28/Jan/2013:01:33:49 +0900] "GET /favicon.ico HTTP/1.1" 404 289 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - - [28/Jan/2013:01:42:25 +0900] "GET /unit02/ HTTP/1.1" 401 481 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - en2011002 [28/Jan/2013:01:42:25 +0900] "GET /unit02/ HTTP/1.1" 401 481 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - en2011002 [28/Jan/2013:01:42:31 +0900] "GET /unit02/ HTTP/1.1" 401 481 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - en2011002 [28/Jan/2013:01:42:34 +0900] "GET /unit02/ HTTP/1.1" 401 481 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - en2011002 [28/Jan/2013:01:42:37 +0900] "GET /unit02/ HTTP/1.1" 401 481 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - - [28/Jan/2013:01:43:54 +0900] "GET /unit02/ HTTP/1.1" 401 481 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - en2011002 [28/Jan/2013:01:43:54 +0900] "GET /unit02/ HTTP/1.1" 401 481 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)" 192.168.77.21 - en2012001 [28/Jan/2013:01:44:51 +0900] "GET /unit02/ HTTP/1.1" 200 235 "http://192.168.77.147/unit01/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)"


0 件のコメント:

コメントを投稿