最新コラム
-
-
-
Webサイト制作
【2023年版】国内・海外のおすすめVPS10選
-
Webサイト制作
初心者でも5分で分かる!SSL/TLSとは何か?
-
SEO外部対策SEO対策
Googleが推奨するnofollowの正しい使い方とは?
「アクセス制限用の.htaccessファイルは、コードの書き方が難しそう…」と思っているWeb担当者も多いようです。
確かに、パッと見は何を書いているのか分かりにくいのも事実。
そこで今回は、目的に合わせたケースごとに記述例を提示したうえで、コードの意味や書き方のコツについてまとめてみました。
.htaccessシリーズの関連記事
大きく分けて2種類の方法で実現します。
❶特定のホスト、IPからのアクセスのみ拒否、その他のホスト、IPからのアクセスは許可
❷特定のホスト、IPからのアクセスのみ許可、その他のホスト、IPからのアクセスは拒否
アクセス制限とは、特定の相手に対して閲覧を拒否または許可するために、サーバーの設定を変更するセキュリティ対策の一種です。
例えば「ブログ荒らしのIPをブロックしたい!」、反対に「本来は社外秘だがクライアントにだけは見て欲しい!」といった場合に、設定ファイルである「.htaccess」を使用してアクセス制限をかけます。
ちなみに、ユーザーIDとパスワードによって制御するベーシック認証もアクセス制限の一種です。
BASIC認証用.htaccessの書き方については、下記の記事で詳しく解説しております。
関連記事
アクセス制限に.htaccessを用いる場合は、下記の3ステップで設定します。
.htaccessを使ったアクセス制限の手順
2番でテキストエディタを表す拡張子「txt」が消せない場合は、サーバーにアップロードした後でファイル名を「.htaccess」に修正すれば問題ありません。
なお、パーミッションは「604」が一般的ではあるものの、サーバーごとに異なっているため確認が必要です。
ここからは、下記の4項目について個別に見ていきましょう。
特定IP・ドメインに対するアクセス制限
「掲示板を荒らしている利用者をブロックしたい!」など、一般ユーザーからのアクセスは許可しつつ、特定のIPアドレス・ドメインからのアクセスだけを拒否したい時は、下記の構文を.htaccessファイルに記述します。
アクセス拒否の記述例
order allow,deny allow from all deny from 111.222.333.444 deny from .tokyo.example.ne.jp
書き方のコツ
一方、「社内スタッフだけに公開したい!」など、不特定多数からのアクセスを拒否し、特定のIPアドレス・ドメインからのアクセスだけを許可したい時は、下記の構文を.htaccessファイルに記述します。
アクセス許可の記述例
order deny,allow deny from all allow from 111.222.333.444 allow from .tokyo.example.ne.jp
書き方のコツ
ここでは、初めて.htaccessを作成する方でも分かりやすいよう、書き方のヒントについてまとめてみました。
allow/deny | allow→許可 deny→拒否 |
---|---|
order | 判定順を指定する。 「order allow,deny」なら、許可allowに該当→拒否denyを判定(特定の相手だけ拒否する) 「order deny,allow」なら、拒否denyに該当→許可allowを判定(特定の相手だけ許可する) |
allow | 許可(allow)の条件を指定。 「allow from all」は、すべて許可するという意味。 |
deny | 拒否(deny)の条件を指定。 「deny from all」は、すべて拒否するという意味。 |
deny from | アクセス制限・許可するIPやホスト名の指定。 複数指定する場合は、改行して1行ずつ指定する。 |
下記は、対象者を指定する方法についてまとめた一覧表です。
deny from(拒否の対象)またはallow from(許可の対象)以下を記述する際には、下記の一覧表を参考にしてください。
ホスト名 | 意 味 |
---|---|
all | 全て |
111.111.333.444 | IPアドレスの完全一致 |
111.222.333.444/555 | IPアドレスの範囲(サブネットマスク)の指定 |
111.222.333. | IPアドレスの先頭一致 |
sample.com | アクセスを許可する特定ドメイン アクセス元のドメインが、 sample.comに後方一致する場合のみ許可 |
「公開してネット上でチェックしたいが、また担当者以外には見られたくない!」という場合もあるでしょう。
もちろん、経営者にとっては社員に見せたくない資料もあるはずです。
そんな時は、下記の手法を試してみてはいかがでしょうか。
特定のファイルに対するアクセス制限
下記のコードは、見られたくないファイル・ディレクトリ・ログなどをピンポイントで指定して、アクセスを拒否する時に使います。
記述例
<Files ~ "^sample.dwt$"> Deny from all </Files>
書き方のコツ
上記のコードを応用して、複数ファイルへのアクセスを拒否することも可能です。
ポイントは、1行目にアクセスを拒否したいファイル名をパイプ( |)で繋げて増やすだけ。
たとえば、下記の記述例では「sample1.dwt」と「sample2.dwt」の両方に対し、アクセスを拒否することができます。
記述例
<Files ~ "^(sample1.dwt|sample2.dwt)$"> Deny from all </Files>
ここからは、下記の項目について解説します。
海外IPに対するアクセス制限
海外からの接続をすべてアクセス制限で拒否し、反対に国内IPからは自由に閲覧できるようにするには、.htaccessファイルに下記のコードを記述します。
記述例
SetEnvIf User-Agent "Googlebot" allowbot SetEnvIf User-Agent "msnbot" allowbot SetEnvIf User-Agent "bingbot" allowbot SetEnvIf User-Agent "Slurp" allowbot order deny,allow deny from all allow from env=allowbot allow from googlebot.com allow from google.com allow from 1.0.16.0/20 allow from 1.0.64.0/18 中略 allow from 223.252.64.0/19 allow from 223.252.112.0/20
書き方のコツ
ロシア(.ru)と中国(.cn)だけをアクセス制限によって拒否し、日本を含めたその他の国からは自由に閲覧できるようにするには、.htaccessファイルに下記のように記述します。
記述例
order Allow,Deny Allow from all Deny from .ru Deny from .cn
書き方のコツ
海外からのアクセスを全てブロックするには、日本に割り当てられているIPアドレスを1つ残らず調べておかなければなりません。
そんな時に便利なのが、APNICから取得したIP情報をリスト化して公開している「IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccess CGI’s」というサイトです。
ダウンロードファイルには4,000件以上もの膨大なIPアドレスが含まれていますが、そのまま全てを.htaccessファイルに記述しましょう。
その際、必ず行の先頭に「allow from」を付けたうえで1行ごとに改行して下さい。
特定の国を指定してアクセ制限を設定したい時は、あらかじめ対象国のコード(CC)を調べておく必要があります。
Fetusが提供している「国/地域別IPアドレス割り振り一覧」なら、国別のコードだけでなくIPアドレスも掲載されていてとっても便利。
こちらのサイトを参照しながら、用途に合わせてアクセス制限用の.htaccessファイルを作成してみましょう。
海外IPに対して設定したアクセス制限が有効になっているか確認するには、下記のような無料サイトが便利です。
出展:WebPageTwst
確認する手順
表示されたテスト結果の画面に切り替わり、「Screenshot」の欄が下記のどちらかになっていれば成功です。
成功した時の表示
今回は、.htaccessを使ってアクセス制限を設定する方法についてご紹介してきましたが、いかがだったでしょうか。
一見、難解にも思える.htaccessのコードも、各パートの意味さえ分かれば書き方に悩む必要はありません。
本記事では特にニーズの高いケースをピックアップしていますので、ぜひ参考にしてください。