【セキュリティ】海外からのWebアクセスを拒否する方法【.htaccess】

最近、海外からのWeb攻撃が一日30件くらい来てて、WAFの通知が止まらないんだよ。どうにかならない?

しばいぬ

のどかもめ

じゃあ、.htaccessファイルでアクセス拒否をしよう!

みなさんも、しばいぬくんみたいにサーバのログを確認したら、海外からブルートフォースアタックとか、よくわからないPOSTの攻撃を受けていた、WordPressにログインされて不正にWeb改ざんをされていた、なんてことはありませんか?

正しくセキュリティ設定を行っていなければ、 いつの間にかサーバが乗っ取られていた。。なんてこともあるかもしれません。

そこで、今回はセキュリティ対策の一つ、.htaccessで海外からのアクセスを拒否する方法をご案内します。

※本ページでは、日本に割り当てられているIPアドレスをAPNICから取得し、そのIPアドレスからのみ接続ができるように設定します。事前に、IPアドレスの拒否設定などを.htaccessでされていた場合は、.htaccessファイルのバックアップを行い、今回ご紹介するファイルの内容と合体させてみてください。

参考記事

本記事は、以下のURLを参考にさせていただきました。

参考 海外からのアクセス(IP)を拒否するhtaccessの設定Qiita

 

.htaccessって何?

.htaccessとは、「Apache(アパッチ)」というソフトウェアを使用しているWebサーバーの設定を制御することができるファイルです。

この.htaccessというファイルをサーバー内に設置することで、Webブラウザからのリクエストに対して、Webページをそのまま表示するか、別のページを代わりに出すか、表示するために条件を提示するか、というように、どのようにリクエストを返すのかをコントロールすることができます。

.htaccessが使える条件

.htaccessはどのWebサーバー、どのWebサイトでも利用できるファイルではありません。利用を検討する場合は、以下の条件に当てはまっているかを確認する必要があります。

「Apache(アパッチ)」を使用しているWebサーバーかどうか

WebサーバーがWebサーバーとして機能するためにはWebサーバーのソフトウェアというものが必ず必要になります。Apache以外にもIISといったマイクロソフトのソフトウェアも存在しています。IISなどの他のソフトウェアを使用している場合は、.htaccessのファイルをWebサーバーに置いても機能しません。
そのため、まずWebサーバーがApacheによって動いているかを確認しましょう。

.htaccessが使用可能な設定になっているかどうか

「Apache(アパッチ)」を使用しているWebサーバーであっても、サーバー側の設定により.htaccessが使えない場合もあります。レンタルサーバーなど、自社で管理していないサーバーは元々の設定で.htaccessを制限していることがあります。使えない場合は、別でコントロールできる手段が用意されている可能性もありますが、サーバーを借りる前に確認しておくことをおすすめします。

日本のIPアドレスのみ許可する設定

方法は簡単です。Webサイトを公開しているフォルダに.htaccessファイルを設置するだけです。

以下のURLから.htaccessのファイルをダウンロードしてください!

▼日本国外からのアクセスを制限する.htaccess
http://www.cgis.biz/tools/access/

例えば、Apacheのデフォルトの設定であれば、/var/www/html です。ダウンロードした.htaccessファイルを設置するだけで、日本からのIPアドレスのみ許可することができます。

つまり、海外からのWebアクセスが拒否され、攻撃を受けることは無くなります。

なお、.htaccessファイルは設置した階層以下全てに適用されるため、複数のフォルダに分けている際はご注意ください。

例:/var/www/htmlの中に、aaa.comとbbb.comというフォルダに分けていた場合に、/var/www/htmlに設置すれば両方のフォルダに適用されます。

以下が実際の.htaccessファイルの中身です。ご自身の設定が記載されている場合は、カスタムしてご使用ください。

HTML

#########  海外IPを許可しないための設定  #########

### 検索エンジンをまとめて許可するためにenv化する (Must)
SetEnvIf User-Agent "Googlebot" allowbot
SetEnvIf User-Agent "msnbot" allowbot
SetEnvIf User-Agent "bingbot" allowbot
SetEnvIf User-Agent "Slurp" allowbot

### いったん全てを拒否する (Must)
order deny,allow
deny from all

### 検索エンジンからのアクセスを許可 (Must)
allow from env=allowbot

### SearchConsoleのプロパティが確認出来るためにの対策 (使っていなければ不要)
### https://support.google.com/webmasters/answer/80553?hl=ja
allow from googlebot.com
allow from google.com

### vagrantなどのアクセス許可 (使っていなければ不要)
### vagrantなど使っていれば許可にしないと開発環境が使えないため
allow from 192.168.xx.xx/24

### 日本国内のIPを許可 (Must)
### http://www.cgis.biz/tools/access/
### 2018.12.1時点 割り当て個数 203,957,760
allow from 1.0.16.0/20
allow from 1.0.64.0/18
allow from 1.1.64.0/18
allow from 1.5.0.0/16
allow from 1.21.0.0/16

(中略)

allow from 223.223.164.0/22
allow from 223.223.208.0/21
allow from 223.223.224.0/19
allow from 223.252.64.0/19
allow from 223.252.112.0/20

記載している内容としては、いったん全てのアクセスを拒否してから、自分がアクセスを許可するIPアドレスやサイトを記載していきます。

以下、日本向けのWebサイトを公開するうえで、許可するべきものを記載しました。こちらの内容を元に.htaccessファイルを作成しました。

  1. 検索エンジン
  2. Google Search Console
  3. 日本国内のIPアドレス

 

3つ目の日本国内からのIPアドレスですが、最初に全てのアクセスを拒否しているため、日本のIPの全て記載する必要があります。

下記のサイトが、日本国外(海外/外国)からのアクセスを制限する(禁止する)ために
日本に割り当てられているIPアドレスをAPNICより取得してリスト化してくれていますのでこちらからコピると良いと思います。
http://www.cgis.biz/tools/access/

あとがき

いかがでしたでしょうか。正しく設定することができましたか?ぜひ、本記事を参考にセキュリティ対策をしてみてください!

え、これだけでいい???めっちゃ簡単やん

しばいぬ

のどかもめ

せやでWebサイトのセキュリティは安全・安心が一番だね!

 

今後も、VPSで当サイトのようなブログサイトを構築する方法をご紹介します。
おすすめなので、ぜひ以下のリンクから商品を見てください!


コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA