【.htaccess】国ごとのIPアドレスでサイトアクセスを拒否する

   2019/03/27   icon-clock-o読了時間:約10分15秒

以前の記事【.htaccess】特定の相手のアクセスを拒否・サイトに制限をかける にて
IPアドレスやドメインを使って、サイトへのアクセスをブロックする方法をご説明しました。
今回は、特定の国からのアクセスを全て弾く設定についてご説明します。
国ごとアクセス拒否

 目次 

まずは不審な相手を見極める
.htaccess(エイチティーアクセス)ファイルでアクセス制限をかける
今の.htaccess ファイル状態を保存・確認
.htaccess ファイルに記述する内容
 国ドメイン指定でブロックする場合
 国ごとのIPアドレスでブロックする場合


まずは不審な相手を見極める

最近特定の国からのWordPress管理画面に対する不正アクセスが異常に多く
総当たり攻撃でパスワードを解除しようとしている痕跡がログに残っていました。
うちのパスワードはとても長くしている上に、何度もパスワード入力をミスると
サイト自体にアクセスできなくするプラグインを入れているので別に問題は無いのですが、
不正アクセスの頻度によってはサーバーに負担が掛かってサイトの表示速度が遅くなることもありますし、
他にも迷惑メールを送ってきたり、以前お話したネイバーからの不正リンクの件があったり、
といったことが重なったので、国ごとまとめてブロックすることにしました。

※国ごとのアクセス拒否を設定する場合には慎重に!

もし自分がWordPressで使用しているプラグインや、
データバックアップ先になっているサーバーがある国を
間違えてブロックすると、それらが正常に動作しなくなります。
また、GoogleやBingなどの検索エンジンのクローラーも国外IPのことが多いので
その国やIPアドレスは本当に弾いても良いものか確認してからブロックしてください。


.htaccess(エイチティーアクセス)ファイルでアクセス制限をかける

サーバーの挙動を制御するApacheというプログラムソフトに対する
様々な設定を行うためのファイルが.htaccess です。

こうして言葉にすると何を言っているのか良く分かりませんね。
要するに、自分がサイトを置くために間借りしているサーバーに対して
『 こういう時はこうしてほしい 』 というお願いを記述するファイルが.htaccessです。

今回ご紹介するのは、その.htaccessファイルに、怪しいドメインや
来てほしくないホストを記入して、サーバーでアクセスを弾いてもらう方法です。
うっかり一般の人も使っているドメインを弾くとその人達も入れなくなってしまうので、
ドメイン指定をする場合は慎重に行ってください。

また、.htaccess ファイルは記述やアップロード方法を間違えると
サイトそのものがエラーで表示されなくなったりするので取り扱いは慎重になさってください。
何か間違えてしまった時にすぐ元に戻せるように
念のため元の.htaccess ファイルのコピーを保存しておいてくださいね。


今の.htaccess ファイル状態を保存・確認

いつも.htaccess ファイルを編集して使っている方なら良いのですが、
今まではテンプレートを借りてそのまま運営していて、今回初めて
htaccess ファイルを編集する方は、まず現状の確認とコピー作成を行ってください。

FFFTPなどのFTPクライアントソフトを使って、現状の.htaccess ファイルをダウンロードします。
htaccessファイル状態を保存・htaccessファイルコピー
ファイルが保存されているフォルダを開き、ダウンロードした.htaccess ファイルを見つけてください。
右クリックでコピー&貼り付けして複製を作り、ファイルの名前と拡張子を変更します。
『 .(ドット) 』 から始まる名前のままだと、編集・保存ができないので、
ドットは削除して、テキスト用の拡張子『.txt』を最後に付けてください。
これがいざという時のバックアップなので、間違えて編集・削除しないようご注意ください。

次に元のファイルの名前を変更します。
これも『 .(ドット) 』 から始まる名前のままだと、編集・保存ができないので、
一時的に名前を変更して、テキスト用の拡張子『.txt』を付けてください。

テキストファイルとして保存されたら、ダブルクリックで開くか、テキストエディタを選択して開きます。
テンプレートでくっついている.htaccess ファイルは
ほぼデフォルトの状態で何も記載されていないと思います。
既に何かが記載されている場合は、何が書かれているのかこの機会に調べてみてもいいですね。


.htaccess ファイルに記述する内容

『deny from 』の後に拒否したい相手のドメインやIPアドレスを入れます。
メモ帳やTeraPadなどのテキストエディタで拒否内容を記述して保存しましょう。


国ドメイン指定でブロックする場合

『 deny from .●● 』の形式で記述します。
国ドメインの一覧はこちら⇒日本ネットワークインフォメーションセンター

国ドメインで拒否
# 😺<ここからサイトへのアクセスについて書いてるよ。
# 😺<最初に許可(allow)、次に拒否(deny)について書くのでヨロシクね、というお願い。
Order allow,deny
# 😺<基本的に全てのアクセスを許可(allow)する。いらっしゃいませ。
allow from all
# 😺<こっからは拒否(deny)。うちのサイトへの訪問を許可しないのでサーバーで弾いてね。
# 😺<拒否する国ドメイン ↓
deny from .ru
deny from .cn
deny from .kr
deny from .ro
deny from .hr
deny from .il

# 😺←この行は分かりやすいように説明コメントを入れただけなので、
実際の.htaccessファイルには記述しないようにしてくださいね。
英数字や一部記号以外を記述するとエラーが起きます。
また、半角スペース(空白)や半角ピリオド(.)の部分を全角にしないようにご注意ください。

上から順に ru(ロシア)、cn(中国)、kr(韓国)、
ro(ルーマニア)、hr(クロアチア)、il(イスラエル)となっています。

しかしどうもログを詳しく確認すると、これを掻い潜って
うちのWordPress管理画面に不正アクセスしようとしているIPアドレスがいるようなので、
念には念を入れ、IPアドレスでも国を丸ごと拒否してみました。


国ごとのIPアドレスでブロックする場合

国や企業には、それぞれのいわば持ち分のように
IPアドレスが被らないように割り振られています。
そのため、その国に割り振られているIPアドレスを調べて
その範囲でまとめてIPアドレスでブロックすることもできます。



まずCreate ACLにアクセス。
①拒否したいIPアドレス所属国にチェックを入れ、
②【 Apache .htaccess Deny 】にチェックを入れて
③【 Create ACL 】ボタンをクリック。
countryipblocks使い方
該当国に割り振られているIPアドレスの一覧が画面右側に表示されるので、
これを.htaccessファイルに丸ごとコピペします。
countryipblocks使い方2

IPアドレスでブロック
# 🐥<ここからサイトへのアクセスについて書いてるよ。
# 🐥<最初に許可(allow)、次に拒否(deny)について書くのでヨロシクね、というお願い。
Order allow,deny
# 🐥<基本的に全てのアクセスを許可(allow)する。いらっしゃいませ。
allow from all
# 🐥<以下は拒否(deny)。うちのサイトへの訪問を許可しないのでサーバーで弾いてね。
# 🐥<ここから先が拒否するIPアドレス ↓
deny from 57.73.224.0/19
# 🐥 …(ずらーっとIPアドレスが並ぶ)…
# 🐥 …(国まるごとなので、かなり数が多くなります)…
deny from 223.255.192.0/19
# 🐥<ここまでが拒否するIPアドレス ↑

# 🐥←この行は分かりやすいように説明コメントを入れただけなので、
実際の.htaccessファイルには記述しないようにしてくださいね。
英数字や一部記号以外を記述するとエラーが起きます。
また、半角スペース(空白)や半角ピリオド(.)の部分を全角にしないようにご注意ください。

説明コメントを省くとこうなります。

IPアドレスでブロック
Order allow,deny
allow from all
deny from 57.73.224.0/19
deny from 223.255.192.0/19

 良かったら押してみてください♥

  • このエントリーをはてなブックマークに追加
  • Pocket