ウェブサイトの運営をしていると、海外からの不正アクセスやスパムコメントに悩まされている方も多いのではないでしょうか。そんなお悩みを解決する最新の方法を解説します。
- Apache 2.4 に対応した新しい記法で設定します。
- Google関連のアクセスはGoogleが公開しているIPアドレスリストを使用してアクセスを許可します。
- 日本に割り当てられた最新のIPアドレスリストを使用してアクセスを許可します。
海外からのアクセスを拒否する .htaccess 生成ツール
- [データ取得] ボタンを押すと日本に割り当てられた最新のIPアドレスリストを取得して .htaccess 用の設定を生成します。10秒程度の時間がかかります。
- これを .htaccess ファイルにコピー&ペーストしてサーバ上のアクセス制限をしたいディレクトリに設置してください。
設定の説明
ウェブクローラのアクセスを許可する
海外からのアクセスを拒否する場合でも、ウェブクローラのアクセスは許可しなければなりません。これをしないとあなたのサイトは検索エンジンにインデックスされなくなってしまいます。
# ウェブクローラに環境変数を設定
SetEnvIf User-Agent "msnbot" searchbot
SetEnvIf User-Agent "bingbot" searchbot
SetEnvIf User-Agent "Slurp" searchbot
<RequireAny>
# ウェブクローラのアクセスを許可
Require env searchbot
...
</RequireAny>
SetEnvIf User-Agent "msnbot" searchbot
-
User-Agent が msnbot という文字列を含むアクセスに searchbot という印をつけておきます。(難しく言うと環境変数 searchbot(=true) を設定します。)
<RequireAny> ... </RequireAny>
-
このディレクティブ内のいずれかの条件に一致するとアクセスは許可されます。
Require env searchbot
-
searchbot という印がついているアクセスを許可する設定です。
ここでは3つのウェブクローラ(MSN, Bing, Yahoo!)の設定をしていますが、他のクローラも許可したい場合はこちらのサイトを参考にしてクローラの名前を確認し、設定を追加してください。
Google関連サービスのアクセスを許可する
Googleが使用するIPアドレスのリストは https://www.gstatic.com/ipranges/goog.json で公開されています。このリストから情報を取得して設定します。
<RequireAny>
...
# Google関連のアクセスを許可
Require ip 8.8.4.0/24
Require ip 8.8.8.0/24
...
</RequireAny>
Require ip 8.8.4.0/24
-
IPアドレスが 8.8.4.0/24 のアクセスを許可する設定です。Googleが使用するすべてのIPアドレスを列挙して設定します。
国内からのアクセスを許可する
日本からのアクセスのみを許可することで海外からのアクセス拒否を実現します。
<RequireAny>
...
# 日本国内からのアクセスを許可
Require ip 1.0.16.0/20
Require ip 1.0.64.0/18
Require ip 1.1.64.0/18
...
</RequireAny>
Require ip 1.0.16.0/20
-
IPアドレスが 1.0.16.0/20 のアクセスを許可する設定です。日本に割り当てられたすべてのIPアドレスを列挙して設定します。
アクセス制限をするためのディレクティブは Apache2.2 で使われていた allow from ...
deny from ...
を使う方法と Apache2.4から採用された Require ...
を使う方法があります。
現在はほとんどのレンタルサーバーで Apache2.4 の方法が使えますが、互換性のために Apache2.2 の方法も使えるようになっていることが多いです。
どちらでも動作するのですが、せっかくなので新しい設定方法に慣れましょう。将来的に古いやり方は廃止されるかも知れません。その時になって焦っても遅いですよ(脅し)。
でわでわ
コメント