Help us understand the problem. What is going on with this article?

apache2.4のIPとdigest認証+GoogleLoadbalancerのhelthcheck通過

More than 1 year has passed since last update.

apache2.4のIPとdigest認証+GoogleLoadbalancerのhelthcheck通過させようとしてちょっとはまったので備忘録です。

要件
$domain3/uri1 
は、特定IPからのみの接続 

$domain1
$domain2
(同じDirectory)
は特定IPからは常時接続可能にして
それ以外はダイジェスト認証

GCPのhttpsLBのバックエンドのhelthcheckのURIは
/check.html

要は固定IPからでない接続を開発期間はdigest認証にしたい
(けどLBからのIPを許可してしまうと全世界のIPを許可した風になってしまうのでそれをなんとかする)

・Digest認証ユーザついか

sudo htdigest -c /path/.htdigest "Digest Auth" user1
sudo htdigest /path/.htdigest "Digest Auth" user2

・モジュールがロードされてることを確認

$ find ../ -type f -name "*conf"|xargs grep basic
../conf.modules.d/00-base.conf:LoadModule auth_basic_module modules/mod_auth_basic.so

$ find ../ -type f -name "*conf"|xargs grep digest
../conf.modules.d/00-base.conf:LoadModule auth_digest_module modules/mod_auth_digest.so

$ find ../ -type f -name "*conf" |xargs grep mod_authz
../conf.modules.d/00-base.conf:LoadModule authz_core_module modules/mod_authz_core.so
../conf.modules.d/00-base.conf:LoadModule authz_dbd_module modules/mod_authz_dbd.so
../conf.modules.d/00-base.conf:LoadModule authz_dbm_module modules/mod_authz_dbm.so
../conf.modules.d/00-base.conf:LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
../conf.modules.d/00-base.conf:LoadModule authz_host_module modules/mod_authz_host.so
../conf.modules.d/00-base.conf:LoadModule authz_owner_module modules/mod_authz_owner.so
../conf.modules.d/00-base.conf:LoadModule authz_user_module modules/mod_authz_user.so

・apache設定追加

$ sudo vi /etc/httpd/conf.d/auth.conf
$ cat auth.conf 
#domain1/2
SetEnvIF X-Forwarded-For "$myip1" AllowIP
SetEnvIF X-Forwarded-For "$myip2" AllowIP
#SetEnvIF Remote_Addr "130.211.0.0/22" HelthchkIP
#SetEnvIF Remote_Addr "35.191.0.0/16" HelthchkIP
SetEnvIf Request_URI "/check.html" Helthchk
<Location />
    <RequireAny>
        AuthType Digest
        AuthName "Digest Auth" 
        AuthUserFile /path/.htdigest
        Require env AllowIP
        Require valid-user
        Require env Helthchk
    </RequireAny>
</Location>
#domain3
<Location /uri1>
    Require env AllowIP
</Location>

$ sudo apachectl configtest
Syntax OK
$ sudo systemctl restart httpd.service
$ sudo systemctl status httpd.service

ちょっとはまったとこ:
VirtualHostDirectoryに書くのだとなんだか<RequireAny>が効かなかったがLocationにしたら効いた
・LBからのIPも許可にするとIPで許可されてしまってダイジェスト認証が効かなくなってしまうのでURI指定さす
・LBのヘルスチェックの到達場所は別でかけてるRewriteもスルーさせててデフォルトのドキュメントルートに来る
・ヘルスチェックのIPはRemote_AddrでクライアントIPはX-Forwarded-Forという差があるが今回は関係なかった
Satisfy any<RequireAny>になった(どれか一致で認証とおすやつ。全部を要求は<RequireAll>

ちなみに直IPとhttpはhttpsにリライト+LBヘルスチェックは通過はこちらにかきました
決済システムへの出口はおそらくデフォルトゲートウェイなので、GCPとAWSは直に行くっぽいのと戻りは直にきたりするのでrewriteしてても名前が一致しないとエラーが出ることがあるっぽいです。AzureはゲートウェイがLBになってるらしい(と先輩に聞いた)。

LBのヘルスチェックの設定についてはURIはデフォルトだと/で、GUIコンソールだとネットワークサービス>負荷分散ではなくコンピュートエンジン>ヘルスチェックに設定する箇所がありました(AWSはLBのとこでヘルスチェックも可能)。

参考:
https://dev.classmethod.jp/cloud/elb-exclude-health-check-url/
https://qiita.com/ysKey2/items/c9f98a3c5d6f2a9cc801
https://qiita.com/mmotoi/items/5d7dcbb9e461feba98cd
https://qiita.com/Ayame/items/1ab7f645b1d77db454e4
https://qiita.com/KurosawaTsuyoshi/items/d9579c9c68666f086e68

smallpalace
プログラミングはしょしんしゃです。サーバインフラはだいたい10年ちょっと。 閲覧ありがとうございます:-)
http://smallpalace.hatenablog.com/
Colorkrew
東京・秋葉原にあるIT企業、株式会社Colorkrew。 ”世界のシゴトをたのしくするビジョナリーカンパニー”をビジョンに掲げています。 管理職0(ゼロ)、階層0(ナシ)、 チーム力∞(無限大)の組織運営、バリフラットモデルを策定・導入。OpenWork(旧Vorkers)が選ぶ自由主義で個性を活かす企業、性格のいい会社に上位ランクイン!
https://www.colorkrew.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした