WordPressでウェブサイトを作る方法【スパム・海外アクセス遮断編】
WordPressでウェブサイトを運営する際に一番悩まされるのが、スパムコメントです。
当サイトでは、掲示板を設置してまもなくスパムコメントが来るようになってしまい、1日に十数件のスパムが掲示板に溜まっていく状態でした。
幸い、サイトを最初に作った時点からスパム対策はしていたので、大きな被害はありませんでした。
今回の記事では、「スパムフィルタプラグイン」「海外からのアクセスを制限」という2重の対策により、サイトを安心して運営する方法を紹介します。
記事一覧
WordPressでウェブサイトを作る方法【XREAサーバにインストール編】
WordPressでウェブサイトを作る方法【スパム・海外アクセス遮断編】(この記事)
WordPressでウェブサイトを作る方法【掲示板過去ログ移行編】
SSL証明書の設定は「XREAに無料SSL証明書を導入してみました」
目次
スパムコメントフィルタ「Akismet Anti-Spam」
通常のコメントとスパムコメントを自動で振り分け処理してくれるのが「Akismet Anti-Spam」プラグインです。
WordPress開発チームが公開しているため、安心して利用できます。
最近のWordPressでは、デフォルトでインストール済になっています。
スパムを認識するための処理をAkismetのサーバ側で行うため、ユーザ登録をしてから「APIキー」の設定をする必要があります。
最初の準備だけ少し手間がかかりますが、一度準備が完了すれば、最新のスパムフィルタの恩恵を受けることができます。
(1)プラグインの有効化
- 管理画面のプラグイン一覧画面を開き、Akismet Anti-Spamの「有効化」をクリック。
- アカウント設定ボタンが表示されるので、クリック。
- 設定画面が表示されるので、「APIキーを取得」ボタンをクリック。
(2)WordPress.comのユーザ登録、Akismetの登録
- Akismetの公式サイトが表示されるので、「GET AN AKISMET API KEY」をクリック。
- WordPress公式サイトのユーザ登録画面に進みます。
メールアドレス、好きなユーザ名、パスワードを入力して「Continue」をクリック。
WordPressアカウントを既に持っている場合は、画面下のリンクからログインします。
- 少し待つとWordPressのユーザ登録が完了して、そのままAkismetのプラン選択画面に進みます。
無料プランにしたいので、一番左の「Get Basic」をクリック。
- 支払い方法の設定画面になります。
- 有料プランだけのように見えて紛らわしいのですが、右上のバーを動かすと支払いを0円にすることができます。
↓
- クレジットカードの入力欄が消えるので、名前だけ入力して「Continue」をクリック。
- 完了するとポップアップが表示されるので、「Activate this site」をクリック。
- 少し待つと、WordPress管理画面に自動的に戻ってきます。
APIキーも自動で設定され、使用できる状態になっています。
- WordPressのアカウント登録完了メールが届いているはずです。
「Activate Account」をクリックして、忘れずに有効化しておきましょう。
(3)スパムの確認
海外からのアクセス遮断「.htaccessによる設定」
Akismetにより、スパムのフィルタリングができる状態になりましたが、スパムが多くなればサーバに負荷がかかってしまいます。
スパムフィルタにごみがたまり、精神衛生上もよろしくありません。
スパムコメントのほとんどは海外から投稿されるため、いっそのこと海外からのアクセスを遮断してしまいましょう。
多くのレンタルサーバでは、.htaccessによるアクセス制御が可能です。
当サイトが利用しているXREAサーバでも使えます。
(1)アクセス遮断の仕組み
アクセス制限をしたいページを指定して、日本国内のIPアドレスを全部列挙して許可することで、海外からのアクセスを拒否します。
一方で、Googleなどの検索エンジンによるアクセスは許可する必要があります。
つまり、こういう設定を入れます。
- 日本国内のIPアドレスからの通信を許可する
- Google、bingなど検索エンジンのクローラーによる通信を許可する
- それ以外は遮断
(2)日本国内のIPアドレス一覧
日本国内のIPアドレスの一覧は、以下から取得できます。
このサイトで「IPアドレス表示」をクリックすると、最新の一覧が表示されます。
(3).htaccessの設定
当サイトでは、「掲示板ページ」「WordPress管理画面」の2つを日本国内からのアクセスのみに限定するよう、設定しています。
FTPソフトでサーバに接続して、こんな内容のファイルを「.htaccess」というファイル名でドキュメントルート配下に保存します。
SetEnvIf User-Agent "Googlebot" allowbot SetEnvIf User-Agent "msnbot" allowbot SetEnvIf User-Agent "bingbot" allowbot SetEnvIf User-Agent "Slurp" allowbot <FilesMatch "(\/?forums|wp-login\.php|\/?wp-admin)"> order deny,allow deny from all allow from env=allowbot allow from 1.0.16.0/20 allow from 1.0.64.0/18 allow from 1.1.64.0/18 ・ ・ (中略) ・ ・ allow from 223.223.224.0/19 allow from 223.252.64.0/19 allow from 223.252.112.0/20 </FilesMatch> <FilesMatch "admin-ajax\.php"> order allow,deny allow from all </FilesMatch>
SetEnvIfでは、許可する検索エンジンのクローラーを指定します。
FilesMatchでは、制限をかけたいページを正規表現で指定します。
複数のページを指定する場合は「 | 」で区切れます。
この例だと、URLに「forums」「wp-login.php」「wp-admin」のどれかを含んでいた場合、制限がかかります。
allowには、許可するIPアドレスの情報と、検索エンジンを指定します。
許可のないIPアドレスからページにアクセスすると、「403 Forbidden」のエラー表示となります。
最後でadmin-ajax.phpを全部許可する設定を入れていますが、これはWordPressの仕様上、制限をかけるべきではないとされているためです。
このページに記載があります。
まとめ
以上の方法で、スパムフィルタの設定と、海外IPの遮断設定ができました。
これにより、スパムコメントを手作業で選別する手間を省くことができ、記事の作成に集中できるようになります。