サイト運営していると外部からの攻撃によってマルウェアに感染するリスクは常にあります。
残念ながら、これをやれば外部から侵入を防げるという手段はありません。大事なのは如何にリスクを減らすかです。
個人的に最低限必要だと思うのは、以下の3点です。
- パスワードを複雑にする⇒総当たり攻撃対策
- ログインURLを変更する⇒入り口を分からなくする
- プラグインを常に最新に保つ⇒不正侵入できる入り口を作らない
せっかくログインURLを変更しても、それを使わないXML-RPC経由のアクセスには対応できないのでパスワードは複雑にするのはマストです。
この記事ではサイト改竄の被害にあったときにサイト復旧して、対策したのに同じように改竄されてしまって、サイト改竄の原因がわからないという時の最後の手段についてまとめています。
外部からphpファイルにアクセスされなければ感染は広がらないのではないか?
感染したサイトのアクセスログを見ていて気が付いたことがあります。感染によって設置されるのはバックドア系のphpファイルですが、そのphpファイルに外部からアクセスすることで他のファイルも改竄されていくという流れが見えました。
侵入者は、外部からアクセスできるようにファイルを設置して、あとは外部からサイトを改竄していくようです。
そもそも海外IPの訪問者には外部からphpファイルにアクセスできないようにしたら感染は広がらないのではないかと思いました。
個人的には国外とか国内とかで管理画面へのアクセスを禁止している国内のサーバー会社はナンセンスだと思っていました。海外ではそのような制限でセキュリティ対策をしているサーバー会社は無いからです。WordPress管理画面アクセスの海外IP禁止でも海外からのサイト侵入はほとんど防げていないのが現状です。
しかし、侵入者が海外IPの場合、サイト自体を海外IPから表示されなくすることは、最初の感染を防ぐことにもなり、最悪感染した後にも侵入者が設置したファイルに外部からアクセスさせない効果があり、かなり効果的な手法だと思います。
最近、Xserverの日本人のサイトで海外IPからは403になるサイトが増えています。なんでこんな無駄なことをするのだろうか?と思っていましたが、日本にあるサイトでは海外IPにサイトを表示させないのはマルウェア感染対策としては効果があるというのが広まりつつあるのだと思います。
一言でいうならサイトを鎖国するということです。
国外IPからのアクセスを完全に遮断する
海外IPからのアクセスを完全に遮断してしまうと、検索botなどもアクセスできなくなるので除外設定が必要です。
国外IPからのアクセスを完全に遮断するための.htaccess
以下の記事に詳しく書いてあります。
前半部分はコピペすれば大丈夫でしょう。作業が必要なのは許可する国内IPアドレスの部分です。

許可する国内IPアドレスはどこで調べる?
日本国外からのアクセスを制限する.htaccess
IPアドレスだけ表示しても、.htaccessにそのまま貼り付けられないので、.htaccessをダウンロードボタンを押すと.htaccessにそのままコピペできる形式でダウンロードできます。
とても便利です。

.htaccessは改竄されていないことを確認してから適用すべし
不正アクセスがあると、.htaccessが改ざんされるのが普通です。
例えばこんな感じで、FileMatchが付け足されて特定のファイルへのアクセスを許可するような内容が追加されていたりします。
この状態で、ファイル先頭、つまりWordpress部分の記述の前に海外IPアクセスを禁止する記述を追加してしまうと、改竄コードが最後にあるので、最終的に許可されてしまうので意味がなくなります。
#
# 海外IPアクセス禁止をここに追加
#
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<FilesMatch ".*\.(phtml|php|PhP)$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch "(index).php$">
Order Allow,Deny
Allow from all
</FilesMatch>
サイトが改竄されてしまったときのためにバックアップ機能付きのサーバーを選ぶべし
ファイルの改竄ではなく、サイトのデータが丸ごと消去されるような不正アクセスの事例も多いです。そうなってしまうと、プラグインなどでサーバー内に保存しているバックアップも消えてしまいます。サーバーを選ぶときはサーバー自体にバックアップ機能があるものを選ぶのをお勧めします。
その他のリスク対策
今回ご紹介した方法以外にも不正アクセスを防ぐリスク対策があります。参考にしてください。
まとめ
サイト改竄されたくない、改竄されても自分では修復できないという場合は、今回の海外IP拒否はかなり強引ですがセキュリティ対策としてはおススメできます。
ご自身のサイトに海外からアクセスがどれぐらいあるか、アナリティクスで調べ、ほとんど海外からのアクセスが無いのであれば、はやめに検討した方が良いと思います。