特定のディレクトリ等でHTTP/1.0によるアクセスを遮断する方法 Apache2.4用

特定のディレクトリ(WordPressの管理画面など)に対するBotのアクセスを封じるためにはHTTP/1.0を使用したアクセスを遮断してしまうことが有効です(人間用のWEBブラウザはHTTP/1.1に対応しているので影響を受けません)。ここではApache2.4を使用している場合のHTTP/1.0によるアクセスを遮断する方法を解説します。

もくじ

  • 使用するもの・前提条件
  • 設定の手順
  • 設定内容の解説

使用するもの・前提条件

このページで解説する設定を行うためには、以下の条件を満たしている必要があります。

  • 設定を行う人が設定対象ディレクトリにが「.htaccess」を配置し、それによって設定を変更できること
  • 設定対象ディレクトリの「AllowOverride」ディレクティブで「FileInfo」の設定変更が許可されていること
  • 「mod_setenvif」モジュールがロードされていること
以下はApache2.4の場合の設定です。

設定の手順

まずは任意の(文字コードUTF-8(BOM無し)、改行コードLFを扱える)テキストエディタで以下の内容を打ち込み、「.htaccess」というファイル名で保存しましょう。

[VIM] SetEnvIf Request_URI “.*” hoge SetEnvIf Request_Protocol “HTTP/1.0” !hoge Require env hoge [/VIM]

後はBotを弾きたいディレクトリに.htaccessをアップロードすればOKです。

設定内容の解説

今回作成した.htaccessはたった3行ですが、もちろん各行にはきちんと意味があります。

[VIM] SetEnvIf Request_URI “.*” hoge SetEnvIf Request_Protocol “HTTP/1.0” !hoge Require env hoge [/VIM]

1行目の「SetEnvIf Request_URI “.*” hoge」は、「どのようなURLをリクエストしてきても「hoge」という環境変数をセットする」という意味のディレクティブです。無条件に環境変数をセットするのであれば「SetEnv」ディレクティブを使用したくなりますが、当方で実験したところ、「SetEnv」ディレクティブを使用してもうまく動きませんでした。なので「SetEnvIf」ディレクティブで強引に代用しています。

2行目の「SetEnvIf Request_Protocol “HTTP/1.0” !hoge」は、「アクセスに使用されているプロトコルがHTTP/1.0だったらセット済みの「hoge」という環境変数を取り除く」という意味のディレクティブです。

そして3行目の「Require env hoge」は、「「hoge」という環境変数がセットされていたらアクセスを許可し、そうでなければ拒否する」という意味のディレクティブです。

参考リンク

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: