.htaccess でアクセス制限をする方法

.htaccess でアクセス制限をする方法
ホームページを運営していると迷惑な投稿を行なうスパムや、不正なアクセスに悩まされることがあります。
そこで、.htaccessを利用し、アクセスを制限したいことがあるかと思います。
そのアクセス制限のメモを残したいと思います。


□ UserAgentで制限する。
ブラウザや検索クローラーなどはUserAgentという情報を残す事があります。
たとえば、Googleでは「Googlebot-Image/1.0」や「Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)」などがそれに当たります。

次の例では、Googleの検索クローラーのUserAgentを利用して制限します。
Order allow,deny
allow from all
deny from env=deny_ua
SetEnvIf User-Agent "Googlebot/2.1" deny_ua

・「SetEnvIf User-Agent "[UserAgent]" deny_ua」を改行区切りで増やしていくことが出来ます。

こちらの制限方法ですが、問題点もあります。UserAgentは自由に変更出来る点です。そのため偽りのUserAgentを通知することができるので、思った制限が出来ない場合があります。


□ Referer で制限する。
リンク元のページ情報が書かれた「Referer」を利用して制限します。
次の例では、Googleの検索から来たアクセスを制限します。
Order allow,deny
allow from all
deny from env=deny_referer
SetEnvIf Referer "^https://www.google.co.jp/" deny_referer

・「SetEnvIf Referer "^[URL]" deny_referer」を改行区切りで増やしていくことが出来ます。
こちらの制限方法も問題があります。アクセス元も偽装できるため、効果は微妙です。


□ IPアドレスで制限する。
IPアドレスを元に制限する方法です。問題を起こすユーザは、Accesslogなどに記録されますので、そちらのIPを利用して制限します。
IPアドレスを一つずつ指定する方法もありますが、ネットマスク(/12や/24と記述するもの)を範囲を指定する方法もあります。

IPアドレスを調べるには、次の「IPひろば」の検索フォームからIPアドレスを入れて下さい。
http://www.iphiroba.jp/index.php
画面をスクロールすると「WHOIS情報」があり、「IPネットワークアドレス」記述されています。
サイトでの記述方法は、「xxx.xxx.xxx.xxx/12」や「xxx.xxx.xxx.xxx - yyy.yyy.yyy.yyy」となっています。次の計算ソフトを使うと、「xxx.xxx.xxx.xxx - yyy.yyy.yyy.yyy」と書かれているIPネットワークアドレスを「xxx.xxx.xxx.xxx/12」として出力してくれます。

ネットマスクの計算は、「IPアドレス変換計算」というソフトを利用すると便利です。
※ HTML表示エラーがでますが、IPアドレスの計算はできます。


次の例は、百度(Baidu)を制限しています。
Order allow,deny
allow from all
deny from 119.63.192.0/24
deny from 119.63.193.0/24
deny from 119.63.194.0/24
deny from 119.63.195.0/24
deny from 119.63.196.0/24
deny from 119.63.197.0/24
deny from 119.63.198.0/24
deny from 119.63.199.0/24

※ 以前には、絨毯爆撃のようにクローリングしてきましたが、私のサイトでは落着いていると思います。しかし、このサーチエンジンからの流入は「皆無」でしたので、制限したままとなっています。


□ 指定した拡張子のファイルのみアクセス制限する。
HTMLや画像などは表示させるが、CGIやPHPなどの実行ファイルは、アクセスを禁止したい場合があると思います。
次の例では、CGIとPHPに対して、IPアドレス「xxx.xxx.xxx.xxx/12」を制限しています。
<Files ~ "\.(cgi|php)$">
Order allow,deny
allow from all
deny from xxx.xxx.xxx.xxx/12
</Files>

・deny from [IPアドレス] を改行区切りで複数指定することができます。


スパムだけでなく、情報を盗もうとする不正アクセスを防ぐ方法の一つですので、積極的にブロックしていくことをオススメいたします。
最近はよく分からないスパムが届いたりしますので、ご参考になれば幸いです。


□ 関連記事
ブログのデザインを変えてみました。
さくらインターネットで大きいファイルを split を使って分割する方法
にゃ〜〜ん!
JavaScript BASE64 変換
CSS3で文字をぶるぶる震わす!
パラメータ付URLを.htaccessでリダイレクトするメモ
またまたアクセス制限
アドレス変更と.htaccessのHTTPリダイレクト。

2016.11.10

コメント投稿フォーム

 

カテゴリ

最近

フィギュア

カプセルトイ

初音ミク

アーカイブ

RSS Feed RSS Feed Atom Feed TopicXML アイコン
WebBoard

PICUP