~~ ここから ~~
ProxyRequests off
ProxyPreserveHost on
<Proxy *>
order deny,allow
Allow from all
</Proxy>
<Proxy balancer://distauth>
BalancerMember http://sol10-distauth1.openam.net:8080 retry=300 route=server1
BalancerMember http://sol10-distauth2.openam.net:8080 retry=300 route=server2
ProxySet lbmethod=byrequests
ProxySet stickysession=APLBCOOKIE
</Proxy>
Header add Set-Cookie "APLBCOOKIE=APACHE.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED
ProxyPass / balancer://distauth/
ProxyPassReverse / http://sol10-distauth1.openam.net:80/
ProxyPassReverse / http://sol10-distauth2.openam.net:80/
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 1
HostnameLookups Off
~~ ここまで ~~
distauth.warをdistauth1号機、2号機のTomcatのwebapps配下に配備して、Tomcat再起動する。
※ここではdistauth.warをTomcatで動作させることを前提。
次にdistauthのセットアップを行う。 ※1号機、2号機の違いはDistauth Server HostとAncryption Keyのみ。
<例:2号機>
OpenAM管理コンソールの [アクセス制御] - [/(root)レルム] - [一般] タブのDNSエイリアスにdistauth2台と仮想distauth(sol10-lb)のFQDNを登録する。
http://sol10-lb.openam.net:80/distauth/UI/Login?goto=http://sol10-openam-core.openam.net:8080/openam にアクセスする。 ※gotoパラメタでOpenAM管理コンソールのアドレスを指定。
OpenAM管理コンソールにログインできることを確認する。
次に、OpenAM管理コンソールの [設定] - [サーバーおよびサイト] - [サーバー名(http://sol10-openam-core.openam.net:8080/openam)] - [高度] タブに以下を追加。
プロパティ名:com.sun.identity.authentication.client.ipAddressHeader
プロパティ値:X-Forwarded-For
OpenAM管理コンソールの [設定] - [サーバーおよびサイト] - [デフォルトのサーバー設定値] - [高度] タブで以下を変更。
プロパティ名:openam.retained.http.request.headers
プロパティ値:X-DSAMEVersion ⇒ X-DSAMEVersion,X-Forwarded-For
[高度] タブを編集する場合はTomcat再起動する。
※ここではopenam.warをTomcatで動作させることを前提。
次に、distauth1号機、2号機の{Tomcat実行ユーザ}/FAMDistAuth/_usr_local_apache-tomcat-6.0.35_webapps_distauth_AMDistAuthConfig.propertiesファイルを開いて、以下を編集して、Tomcat再起動する。
<1号機>
・変更
#openam.retained.http.request.headers=X-DSAMEVersion
openam.retained.http.request.headers=X-DSAMEVersion,X-Forwarded-For
・追記
com.sun.identity.authentication.client.ipAddressHeader=X-Forwarded-For
com.sun.identity.distauth.cluster=http://sol-distauth1.openam.net:8080/distauth/UI/Login,http://sol-distauth2.openam.net:8080/distauth/UI/Login
<2号機>
・変更
#openam.retained.http.request.headers=X-DSAMEVersion
openam.retained.http.request.headers=X-DSAMEVersion,X-Forwarded-For
・追記
com.sun.identity.authentication.client.ipAddressHeader=X-Forwarded-For
com.sun.identity.distauth.cluster=http://sol-distauth2.openam.net:8080/distauth/UI/Login,http://sol-distauth1.openam.net:8080/distauth/UI/Login
snoopを仕掛ける。
bash-3.00# snoop -o /tmp/out1.txt port 8080 host sol10-distauth1.openam.net
bash-3.00# snoop -o /tmp/out2.txt port 8080 host sol10-distauth2.openam.net
DistAuth経由でdemo/changeitでログイン。
キャプチャを取ると、X-Forwarded-ForにクライアントのIPアドレスが含まれている。
bash-3.00# snoop -i /tmp/out1.txt -x 50 > /tmp/distauth1.txt
bash-3.00# snoop -i /tmp/out2.txt -x 50 > /tmp/distauth2.txt
~~ キャプチャ(ここから) ~~
<例:2号機>
320 0: 19f5 0000 504f 5354 202f 6469 7374 6175 ....POST /distau
16: 7468 2f55 492f 4c6f 6769 6e20 4854 5450 th/UI/Login HTTP
32: 2f31 2e31 0d0a 486f 7374 3a20 736f 6c31 /1.1..Host: sol1
48: 302d 6c62 2e6f 7065 6e61 6d2e 6e65 740d 0-lb.openam.net.
64: 0a55 7365 722d 4167 656e 743a 204d 6f7a .User-Agent: Moz
80: 696c 6c61 2f35 2e30 2028 5769 6e64 6f77 illa/5.0 (Window
96: 7320 4e54 2036 2e31 3b20 574f 5736 343b s NT 6.1; WOW64;
112: 2072 763a 3237 2e30 2920 4765 636b 6f2f rv:27.0) Gecko/
128: 3230 3130 3031 3031 2046 6972 6566 6f78 20100101 Firefox
144: 2f32 372e 300d 0a41 6363 6570 743a 2074 /27.0..Accept: t
160: 6578 742f 6874 6d6c 2c61 7070 6c69 6361 ext/html,applica
176: 7469 6f6e 2f78 6874 6d6c 2b78 6d6c 2c61 tion/xhtml+xml,a
192: 7070 6c69 6361 7469 6f6e 2f78 6d6c 3b71 pplication/xml;q
208: 3d30 2e39 2c2a 2f2a 3b71 3d30 2e38 0d0a =0.9,*/*;q=0.8..
224: 4163 6365 7074 2d4c 616e 6775 6167 653a Accept-Language:
240: 206a 612c 656e 2d75 733b 713d 302e 372c ja,en-us;q=0.7,
256: 656e 3b71 3d30 2e33 0d0a 4163 6365 7074 en;q=0.3..Accept
272: 2d45 6e63 6f64 696e 673a 2067 7a69 702c -Encoding: gzip,
288: 2064 6566 6c61 7465 0d0a 5265 6665 7265 deflate..Refere
304: 723a 2068 7474 703a 2f2f 736f 6c31 302d r: http://sol10-
320: 6c62 2e6f 7065 6e61 6d2e 6e65 742f 6469 lb.openam.net/di
336: 7374 6175 7468 2f55 492f 4c6f 6769 6e3f stauth/UI/Login?
352: 676f 746f 3d68 7474 703a 2f2f 736f 6c31 goto=http://sol1
368: 302d 6f70 656e 616d 2d63 6f72 652e 6f70 0-openam-core.op
384: 656e 616d 2e6e 6574 3a38 3038 302f 6f70 enam.net:8080/op
400: 656e 616d 0d0a 436f 6f6b 6965 3a20 4a53 enam..Cookie: JS
416: 4553 5349 4f4e 4944 3d37 3133 4230 3538 ESSIONID=713B058
432: 3633 3539 4244 3645 4438 3841 3630 3342 6359BD6ED88A603B
448: 4342 3335 3838 3937 463b 2061 6d6c 6263 CB358897F; amlbc
464: 6f6f 6b69 653d 3031 3b20 414d 4469 7374 ookie=01; AMDist
480: 4175 7468 436f 6f6b 6965 3d22 6874 7470 AuthCookie="http
496: 3a2f 2f73 6f6c 3130 2d64 6973 7461 7574 ://sol10-distaut
512: 6832 2e6f 7065 6e61 6d2e 6e65 743a 3830 h2.openam.net:80
528: 3830 2f64 6973 7461 7574 682f 5549 2f4c 80/distauth/UI/L
544: 6f67 696e 223b 2044 6973 7441 7574 684c ogin"; DistAuthL
560: 4243 6f6f 6b69 654e 616d 653d 4469 7374 BCookieName=Dist
576: 4175 7468 4c42 436f 6f6b 6965 5661 6c75 AuthLBCookieValu
592: 653b 2041 504c 4243 4f4f 4b49 453d 4150 e; APLBCOOKIE=AP
608: 4143 4845 2e73 6572 7665 7232 0d0a 436f ACHE.server2..Co
624: 6e74 656e 742d 5479 7065 3a20 6170 706c ntent-Type: appl
640: 6963 6174 696f 6e2f 782d 7777 772d 666f ication/x-www-fo
656: 726d 2d75 726c 656e 636f 6465 640d 0a58 rm-urlencoded..X
672: 2d46 6f72 7761 7264 6564 2d46 6f72 3a20 -Forwarded-For:
688: 3139 322e 3136 382e 3131 2e34 0d0a 582d 192.168.11.4..X-
704: 466f 7277 6172 6465 642d 486f 7374 3a20 Forwarded-Host:
720: 736f 6c31 302d 6c62 2e6f 7065 6e61 6d2e sol10-lb.openam.
736: 6e65 740d 0a58 2d46 6f72 7761 7264 6564 net..X-Forwarded
752: 2d53 6572 7665 723a 206c 622e 6f70 656e -Server: lb.open
768: 616d 2e6e 6574 0d0a 436f 6e6e 6563 7469 am.net..Connecti
784: 6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a on: Keep-Alive..
800: 436f 6e74 656e 742d 4c65 6e67 7468 3a20 Content-Length:
816: 3231 330d 0a0d 0a49 4454 6f6b 656e 313d 213....IDToken1=
832: 6465 6d6f 2649 4454 6f6b 656e 323d 6368 demo&IDToken2=ch
848: 616e 6765 6974 2649 4442 7574 746f 6e3d angeit&IDButton=
864: 2545 3325 3833 2541 4425 4533 2538 3225 %E3%83%AD%E3%82%
880: 4230 2545 3325 3832 2541 3425 4533 2538 B0%E3%82%A4%E3%8
896: 3325 4233 2667 6f74 6f3d 6148 5230 6344 3%B3&goto=aHR0cD
912: 6f76 4c33 4e76 6244 4577 4c57 3977 5a57 ovL3NvbDEwLW9wZW
928: 3568 6253 316a 6233 4a6c 4c6d 3977 5a57 5hbS1jb3JlLm9wZW
944: 3568 6253 3575 5a58 5136 4f44 4134 4d43 5hbS5uZXQ6ODA4MC
960: 3976 6347 5675 5957 3025 3344 2667 6f74 9vcGVuYW0%3D&got
976: 6f4f 6e46 6169 6c3d 2653 756e 5175 6572 oOnFail=&SunQuer
992: 7950 6172 616d 7353 7472 696e 673d 2665 yParamsString=&e
1008: 6e63 6f64 6564 3d74 7275 6526 6778 5f63 ncoded=true&gx_c
1024: 6861 7273 6574 3d55 5446 2d38 harset=UTF-8
~~ キャプチャ(ここまで) ~~
OpenAM 11のマニュアルにないが、sunRemoteAuthSecurityEnabledのパラメタが必要。
# ./ssoadm set-attr-defs -u amadmin -f /tmp/pwd.txt -s iPlanetAMAuthService -t Global -a "sunRemoteAuthSecurityEnabled=true"
スキーマのデフォルト属性値が設定されました。
ここで試したところ、DistAuthの定義ファイルの設定値と"sunRemoteAuthSecurityEnabled"の値によって、ログに記録されるIPアドレスに変化があった。
●LBのIPアドレスが出る場合
openam.retained.http.request.headers=X-DSAMEVersion,X-Forwarded-For
#com.sun.identity.authentication.client.ipAddressHeader=X-Forwarded-For
"sunRemoteAuthSecurityEnabled=true"
<例:192.168.11.5はLB>
"2014-11-30 14:45:25" ログインに成功しました|isNoSession=false id=demo,ou=user,dc=openam,dc=forgerock,dc=org 5237d414e4b8b7101 192.168.11.5 INFO dc=openam,dc=forgerock,dc=org "cn=dsameuser,ou=DSAME Users,dc=openam,dc=forgerock,dc=org" AUTHENTICATION-100 DataStore "Not Available"192.168.11.5
"2014-11-30 14:45:27" ログアウト id=demo,ou=user,dc=openam,dc=forgerock,dc=org 5237d414e4b8b7101 192.168.11.5 INFO dc=openam,dc=forgerock,dc=org "cn=dsameuser,ou=DSAME Users,dc=openam,dc=forgerock,dc=org" AUTHENTICATION-300 DataStore "Not Available" 192.168.11.5
●クライアントのIPアドレスが出る場合
openam.retained.http.request.headers=X-DSAMEVersion,X-Forwarded-For
com.sun.identity.authentication.client.ipAddressHeader=X-Forwarded-For
"sunRemoteAuthSecurityEnabled=true"
<例:192.168.11.4はクライアント>
"2014-11-30 14:51:19" ログインに成功しました|isNoSession=false id=demo,ou=user,dc=openam,dc=forgerock,dc=org 561402e350fe9ae801 192.168.11.4 INFO dc=openam,dc=forgerock,dc=org "cn=dsameuser,ou=DSAME Users,dc=openam,dc=forgerock,dc=org" AUTHENTICATION-100 DataStore "Not Available"192.168.11.4
"2014-11-30 14:51:22" ログアウト id=demo,ou=user,dc=openam,dc=forgerock,dc=org 561402e350fe9ae801 192.168.11.4 INFO dc=openam,dc=forgerock,dc=org "cn=dsameuser,ou=DSAME Users,dc=openam,dc=forgerock,dc=org" AUTHENTICATION-300 DataStore "Not Available" 192.168.11.4
●DistAuthのIPアドレスが出る場合
openam.retained.http.request.headers=X-DSAMEVersion,X-Forwarded-For
com.sun.identity.authentication.client.ipAddressHeader=X-Forwarded-For
"sunRemoteAuthSecurityEnabled=false"
<例:192.168.11.15はDistAuth1号機>
"2014-11-30 15:18:25" ログインに成功しました|isNoSession=false id=demo,ou=user,dc=openam,dc=forgerock,dc=org ee680ef4404d6f0301 192.168.11.15 INFO dc=openam,dc=forgerock,dc=org "cn=dsameuser,ou=DSAME Users,dc=openam,dc=forgerock,dc=org" AUTHENTICATION-100 DataStore "Not Available"192.168.11.15
"2014-11-30 15:18:30" ログアウト id=demo,ou=user,dc=openam,dc=forgerock,dc=org ee680ef4404d6f0301 192.168.11.15 INFO dc=openam,dc=forgerock,dc=org "cn=dsameuser,ou=DSAME Users,dc=openam,dc=forgerock,dc=org" AUTHENTICATION-300 DataStore "Not Available" 192.168.11.15
結論として、ロードバランサをとおしてクライアントのIPアドレスをログ(audit log)に出すには以下が必要。
・DistAuthの定義ファイルに以下を設定
openam.retained.http.request.headers=X-DSAMEVersion,X-Forwarded-For
com.sun.identity.distauth.cluster=http://sol-distauth1.openam.net:8080/distauth/UI/Login,http://sol-distauth2.openam.net:8080/distauth/UI/Login
com.sun.identity.authentication.client.ipAddressHeader=X-Forwarded-For
・DistAuthの定義とOpenAM管理コンソールの[高度]タブの設定を合わせる
・ssoadmコマンドで"sunRemoteAuthSecurityEnabled=true"を設定
・Tomcat再起動(distAuth、OpenAMとも)
0 件のコメント:
コメントを投稿