LoginSignup
0
0

More than 1 year has passed since last update.

Webサイトへのアクセスを制限する方法

Posted at

Webサイトをアクセスする人を制限する場合、いくつかの方法がある。

①Webサイトにたどり着きづらくする

Webサイトへのアクセスは、以下によって行われる。

  • 他サイトからのリンク(検索エンジン含む)
  • URLの直接入力

GoogleやYahoo!などの検索エンジンからのアクセスを防ぐためには、robot.txt(検索エンジンのロボット(クローラー)に対し、指示するテキスト。)などをドキュメントルートに設定して、検索エンジンに拾われないようにする方法がある。
ただし、この方法ではURLがバレたらアクセスできてしまいます。

もっと有効な方法としてはApacheの設定(Requireの設定)もしくは、ファイアウォールの設定などで、特定のIPアドレスからしか操作できないように制限することが考えられる。

社内サーバーなどでクライアントのIPアドレスを固定できる場合によく使われる。

②Webサイト内部に入れないようにする

会員制のWebサイトなど、接続元のIPアドレスが固定できない場合は、ユーザー認証が使われるのが一般的。

JavaScriptやPerl・PHPなどを使って、プログラムでログインの仕組みを作ったり、Apacheの機能を利用したBasic認証やDigest認証でユーザー名やパスワードを確認したりする。※Webサービスの場合は、Basic認証をあまり用いない。

Basic認証とDigest認証の仕組み

Apacheでは、「.htaccess」を使ったBasic認証とDigest認証に対応している。どちらもサーバー側にユーザー名とパスワードのファイルを置いて、それを認証に利用する仕組み。

Basic認証は、それだけだと平文で通信されるため、盗聴されてしまうと、パスワードが漏れることがある。そのため、SSLでの暗号化とセットであることが多い。

一方、Digest認証はチャレンジ&レスポンスという方式を使用しており、パスワードを直接通信網に流すことなく、1回限り有効な計算値をもって認証する。ただし、一部ブラウザやレンタルサーバーで対応していないケースもある。

Basic認証とDigest認証ともに、ユーザー名とパスワードを問う「.htaccess」ファイルと、正しいユーザー名とパスワードを記載したパスワードファイルを使用して認証を行う。パスワードファイルはBasic認証の場合は「.htpasswd」、Digest認証の場合は「.htdigest」。

ApacheでBasic認証やDigest認証を設定する

デフォルトでは「.htaccess」は有効になっていないので、Basicn認証やDigest認証を有効にするには、「.htaccess」を有効にする必要がある。
これらは、Apacheの設定ファイル(etc/httpd/conf/httpd.conf)で変更する。設定ファイルの<Directory "var/www/html">以下に「AllowOverride None」となっている箇所を書き換える。

この「None」を「All」に書き直して保存すると、「.htaccess」が使えるようになる。変更を保存後、systemctl reload httpdコマンドでApacheを再起動する。

パスワードファイルを作る

認証では、ユーザー名とパスワードの組み合わせが記述されたパスワードファイルをサーバーに置き、入力された情報と合致するかを確かめる。

パスワードファイルは以下の名称にするのが一般的。

  • Basic認証の場合、「.htpasswd」
  • Digest認証の場合「.htdigest」

このとき、サーバー側には生の状態ではなく、ハッシュ化されたパスワードが保存される。

ハッシュ化とは、あんが桜花の一種で元のデータが予測できないよう、特別の計算式を使って変換した値のこと。生のパスワードの漏洩を防ぐ目的で使う。

Basic認証のファイルの書式

ユーザー名:ハッシュ化されたパスワード

Digest認証のファイルの書式

ユーザー名:レルム:MD5でハッシュかした値

例)

banana:Please input password:4c24626e523af2ee637d45161544d538

実際にBasic認証で使うパスワードファイルを作る方法

Apacheの機能(htpasswdコマンド)を使うことで、パスワードをハッシュ化することができる。ちなみにハッシュ化には「bcrypt」「MD5」「SHA1」「CRYPT」の4つの方式に対応している。

  • 「.htpasswd」ファイルを生成するコマンド(/var/www/html/にbananaユーザーを記述しつつパスワードファイルを作成する
# htpasswd -c /var/www/html/.htpasswd banana
  • すでに存在するパスワードファイルにユーザー名とパスワードを追記する場合は「-c」は不要。

ユーザーとパスワードを設定する方法

制限をかけたいディレクトリに「.htaccess」ファイルを置いて、認証機能を有効化する。全てのページに制限をかけたいのであれば「/var/www/html」ドキュメントルートに「.htaccess」ファイルを置く

  • ファイルの書き方(Basic認証)
AuthType Basic
AuthName "Please input password"
AuthUserFile /var/www/html/.htpasswd
Require valid-user
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0