読者です 読者をやめる 読者になる 読者になる

はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

.htaccessでAuth認証かけてみる

Apache セキュリティ

f:id:secret_hamuhamu:20150922182102j:plain
.htaccessは、Apacheの設定ファイルです。
Apacheの設定ファイルは、2種類あります。

  • httpd.conf (Apache全体の設定
  • .htaccess (ディレクトリ単位の設定

.htaccessを用いて、Auth認証をかけてみます。

環境構成

  • CentOS 7.1.1503
  • Apache 2.4.6

.htaccessとは?

.htaccessは、ディレクトリ単位でApacheの設定を記述したい際に、用います。
ただhttpd.confでも、ディレクトリ単位の設定できます。

どちらに記述するか悩んだ時は、httpd.confに書きましょう。

参考

http://httpd.apache.org/docs/2.2/howto/htaccess.html#when

いつ .htaccess ファイルを使う(使わない)か。

一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けてください。

理由は、2点あります。

  • サーバの性能の問題
  • セキュリティの問題

Apacheのドキュメントにそのことが記載されているので、知らない方は読んでおくといいです。

つまり.htaccessを使わざるを得ない状態としては、httpd.confの編集権限がないが、Apacheの設定を変えたい場合である。

httpd.confの設定

.htaccessの使用は極力避けるという話だったが、ケースバイケースで使用することもある。

.htaccessは、設定を記述し配置すればすぐさま設定が反映されるものではない。
まず、httpd.confにて.htaccessの使用を許可せねばならない。

sudo vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"

DocumentRootが、上記の設定になっている状態で、Directoryコンテナ指示子のAllowOverrideディレクティブにAuthConfigの設定を許可する。
AllowOverrideが、httpd.confの設定の書き換えをゆるすかどうかというもの。
AuthConfigは、認証周りの設定を書き換えるという意味である。

<Directory "/var/www/html">
  AllowOverride All
</Directory>

Apache再起動

sudo /usr/sbin/httpd -k restart

再起動成功すれば、設定は反映されている。

.htpasswdの作成

DocumentRootを/var/www/htmlとしているので、/var/www/htmlに移動。

cd /var/www/html

Auth認証するために、.htpasswdを作成する。
Basic認証で使用されるユーザ名とパスワードが記述されたファイルである。

Usage
htpasswd -c ファイル名 ユーザ名

htpasswd -c .htpasswd hoge-user
New password:
Re-type new password:
Adding password for user hoge-user

.htpasswdというファイルが作成されました。

.htaccessの作成

vim .htaccess

設定内容

AuthUserFile /var/www/html/.htpasswd
AuthName "Basic Auth"
AuthType Basic
Require valid-user

以上の記述で、Basic認証が有効になる。
.htaccessの記述を変更しても、Apacheを再起動する必要性はない。
リクエストをさばくときに、.htaccessを参照するからだ。

ブラウザからwebサーバにアクセスしてBasic認証されたら成功である。

まとめ

.htaccessは、本当にに必要な場合以外、使用しない。
使用する場合は、AllowOverrideディレクティブで必要最低限の権限のみ与える。

おすすめの本

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集

Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集

Apacheセキュリティ

Apacheセキュリティ

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか