Basic認証をあたらめて調べてみた
はてなブログ初投稿です。
今日は、WEBサイトのBasic認証について書こうと思います。
書こうと思ったきっかけ
脆弱性診断をしていると、開発機が診断対象になることがあります。
特に、WEBアプリケーション診断などは開発中の後半のリリース判定前に診断することが多いです。まあ、診断時期の是非はともかく、公開前のシステムに一定の閲覧制限をかけたいというのが人の情で、簡易的な制限をかけたいって話になります。
そんなわけで、猫も杓子もじゃあBasic認証かけるかってことなんですが、この「簡易的な」ということが結構勘違いされやすい感じがしています。
おさらい
Basic認証の基礎は、こちらの記事がわかりやすいのです。
ポイントは、サーバーからの「WWW-Authenticate」ヘッダ、クライアントからの応答の「Authorization」ヘッダです。
Basic認証の実現方法
Basic認証を使いたいという時、一番簡単で(だから勘違いされやすい)、かつ早い(だから忘れられやすい)のは、「.htaccess(読み方はドッドエイチティアクセスと周りで言う人が多い)」による実現方法です。
これは、サーバーの公開ディレクトリに「.htaccess」と言うファイルにBasic認証のための情報を記載しておくだけで、認証機能が実現できると言うなんとも横着な方法で、パスワードやユーザー名を頻繁に書き換えたり、どのユーザーが認証したかなどは管理しなくての良い場合などに利用されます。
上記の特性から、開発機の簡易的な認証などにもってこいというわけです。
なお、この「.htaccess」はWEBサーバならなんでも良いのではなく、Apache限定の機能のようです。
IPアドレス制限との併用
ところで、開発機にあるWEBアプリケーションへの閲覧を制限したいという時に、IPアドレス制限をかけることもあります。IP層で制限をしてしまえば安心というわけです。UTMやWAFなどでホワイトリスト形式で実現することも多いでしょう。
実は、IPアドレス制限は、「.htaccess」ファイルでも実現できるということはあまり知られていないような気がします。そして、Basic認証とIPアドレス制限は併用して、「.htaccess」ファイルへ記載できるのです。(簡単だから、設定したことを忘れがちです。)
脆弱性診断の前には、疏通確認、ログイン確認を行ったりするのですが、このBasic認証が、お客様の環境ではうまく動いているのに、診断環境だと認証画面が表示されない、そんな時、「Basic認証を設定する際に、同じ設定ファイルにIPアドレス制限をかけてませんか?」そんな疑問を持ってお客様に問いかけてみることで解決するかもしれません。
and条件とor条件
ちなみに、IPアドレス制限とBasic認証が併用できるということは、2つの設定をした場合は、どうなるのだろうかと疑問に感じると思います。ということで実際にやってみました。
1.のand条件は、たとえば「aaa.bbb.ccc.ddd」が許可されていたら「aaa.bbb.ccc.ddd」のIPアドレスからアクセスするとBasic認証の画面が表示されます。しかし、「yyy.zzz.jjj.kkk」のアドレスからだと、認証画面が表示されず、403 Forbiddenの画面が表示されます。
ちなみに、and条件はデフォルトの動作で、特に指定がないときにはこの動作となります。
画像の青く囲ったところは、IPアドレス制限を併用していない通常のBasic認証をローカルプロキシでキャプチャしたものです。一方で、画像の赤く囲ったところが、ローカルプロキシで許可されてたIPアドレス以外からアクセスした様子をキャプチャしたものです。青く囲った部分と比べると、サーバから認証リクエストが発生していないことがわかります。
では、2.のor条件の時の動きはどうなるのでしょうか。or条件ですから、許可されたIPアドレスからのアクセスは認証情報は表示されずに画面が表示されます。許可されてないIPアドレスからのみ、Basic認証の画面となりユーザー名とパスワードの入力が正しく入力することで画面が表示される動きとなります。
あらためて調べてみると、Basicと名前に惑わされて簡単ではないなと思いました。みなさまは、どう感じましたか。次回の記事は未定ですが、また役に立ちそうな話題を書こうと思います。