WordPressへの移行① SPAM対策

ブログ運営


ブログを設置してからわずか3日程度しかたっていないのに、コメントSPAMがつきはじめたので、この対応方法について確認しました。

ライブドアブログを使っていた時には意識しなかった問題なので、ライブドアブログ側でSPAM除去や対策をしてくれていたんですね。離れて分かる「優しさ」・・・を少し感じました。

コメントSPAMは、直接的なサイトの乗っ取りやウイルス感染といった深刻なセキュリティ問題ではないものの、これらを承認してブログ上に公開してしまうと、読者が誤って悪質なリンクを踏んでしまったり、Googleからのサイト評価(SEO)が下がる原因になるため、絶対に「承認」せず、「ゴミ箱」または「スパム」に移動させる必要があるようです。
まだ少ないですが、早めに対策した方が良さそうですね。。

ちなみに・・画像に写っているコメントは、すべてスパムと判断して間違いありません。

  • 日本語のブログなのに英語(または他言語)で書かれている
  • 内容が「あなたのサイトをGoogleの1ページ目に表示させませんか?(SEOの営業)」や「サイト開設おめでとう!集客ツールのご案内です」といったテンプレート的な営業・宣伝文句である
  • コメント内に**不審なURL(リンク)**が含まれている

海外ユーザーとの交流も図りたいものの・・複雑な気持ちです。

1. コメント設定の見直し(WordPress標準機能)

【有効性:★★★★★】(必須) 最も簡単で、確実なスパム対策です。スパムコメントが公開されて読者の目に入るのを100%防ぐことができます。ゲーム攻略ブログなどでは古い記事へのスパムも多いため「コメントの締め切り」は特に有効です。

【やり方】

  1. WordPress管理画面の左メニューから 「設定」>「ディスカッション」 を開きます。
  2. 「コメントの手動承認を必須にする」 にチェックを入れます。(※または「以前に承認されたコメントの投稿者のコメントを許可し〜」にチェック。どちらか一方でOKです)
  3. 「他のコメント設定」 の項目にある 「〇〇日以上前の投稿のコメントフォームを自動的に閉じる」 にチェックを入れ、日数を「14〜30」程度に設定します。
  4. 一番下の「変更を保存」をクリックします。

ととふは、古い記事へのコメントもありがたいので、3の設定はしませんでした。ドラクエの攻略をしているとどんどん情報が古くなったり、アップデートされていきますが、それに自分だけだと気づきにくいんですよね。

WordPressのプラグイン

まずは、初めに同封されているAkismetのプラグインを使う方法を考えました。

しかし、Akismetの無料プラン(Personal)は、原則として「広告(AdSenseなど)やアフィリエイトリンクを貼っていない、非商用の個人的なブログ」が対象という規約になっています。もし今後のブログ運営で収益化などを行っている/予定している場合は、機能制限や規約違反になる可能性があるため、ここは読み飛ばして頂いて、次の5つの選択肢から検討しても良いかと思います。

Akismetの導入、無料プランの選択方法

まずはプラグインのAkismetを有効化して、GetStartedを押す

Akismetに初回登録をGoogleアカウントでしてみて、Personalで利用しようとすると、無料ではない?

この画面、少し分かりにくいデザインになっているので、「有料しかないの?」と勘違いしていまいますが安心してください。無料で使うように設定もできます。

画像の中央にある「¥4,680 / YEAR」と表示されている黒いボックスが、金額を自由に設定できるスライダーになっています。無料プランとして登録するには、以下の手順で進めてください。

  1. その黒いボックス(¥4,680 / YEAR)をマウスでクリックしたまま、一番左端までグーッとドラッグします。
  2. 金額が**「¥0 / YEAR」**に変わります。(右側の顔文字の表情が少し変わります)
  3. 下の緑色のボタンの表記が「Continue with Personal subscription(個人向けサブスクリプションを続ける)」といった支払いを伴わない文章に変化します。
  4. そのボタンをクリックすれば、無料で登録が完了し、APIキー(パスワードのような文字列)が発行されます。
ととふ
ととふ

左側までドラッグすると、無事無料化されました。
しかし、機能制限はないものの、サイトに広告を載せてはいけないようです

※ Akismetの無料プラン(Personal)は、原則として「広告(AdSenseなど)やアフィリエイトリンクを貼っていない、非商用の個人的なブログ」が対象という規約になっています。もし今後のブログ運営で収益化などを行っている/予定している場合は、機能制限や規約違反になる可能性がある点だけご留意してください。

ととふはGoogleアドセンスやアフィリエイト等も掲載したいと思っているので・・・これは困りました。
他の選択肢を探します。

5つのプラグイン 比較

Throws SPAM AwayWP ArmourAntispam BeeAkismetCleanTalk
料金無料無料(有料版あり)無料個人無料・商用有料有料(年約$12〜)
スパム検出方法日本語チェック+ハニーポットハニーポットサーバー側ヒューリスティッククラウドAIクラウドAI
外部API通信なしなしなしありあり
GDPR対応△(要プライバシーポリシー記載)
コメントスパム対策◎(日本語サイトに最強)
フォームスパム対策△(コメントのみ)◎(CF7・Gravity Forms等対応)△(コメントのみ)○(フォームプラグインと連携)
ログイン保護
日本語サイト適性◎(日本向けに特化)
設定の手軽さ◎(日本語UIで超簡単)◎(ゼロ設定)△(APIキー取得が必要)△(有料登録が必要)

各プラグインの特徴まとめ

Throws SPAM Away コメントに「日本語が含まれていない場合」「ブラックリストに登録されている場合」「無視するIPアドレスからの投稿の場合」のコメントを無視できる、日本語サイト向けに特化したプラグインです。 外部APIへの通信がなく、管理画面もすべて日本語。海外からのスパムコメントに圧倒的な効果を発揮します。ただしコメントスパムのみ対応で、お問い合わせフォームは別途対策が必要です。

WP Armour ハニーポット方式を使った完全に不可視のスパム対策で、外部APIコールがないためプライバシー面でも問題なく、パフォーマンスへの影響もほぼゼロ。Contact Form 7、WPForms、Gravity Formsなど主要フォームプラグインと連携できます。 ただし、ハニーポット方式のみのため、より賢いボットには通用しない場合があります。

Antispam Bee 完全無料かつ100% GDPR準拠で、外部サービスへのデータ送信なしにサーバー側でスパムを処理します。コメント時間のチェック、IPアドレスの検証など複数の手法を組み合わせています。 ただしコメントフォームのみの保護で、お問い合わせフォームやユーザー登録には対応していません。

Akismet クラウドAIによる高精度な判定が強みですが、個人・非商用サイトは無料ですが、商業サイトには有料プランが必要で、データを外部サーバーに送信するためGDPRへの配慮が必要です。

CleanTalk コメント・フォーム・ユーザー登録など幅広い箇所を保護でき、機械学習でスパムを検出する総合的なソリューションです。 ただし有料のみ。


おすすめの組み合わせ

日本語ブログ(コメントスパムが主な悩み)Throws SPAM Away 一択。無料・日本語UI・設定不要でほぼ完璧に海外スパムをブロック。

お問い合わせフォームのスパムも防ぎたいThrows SPAM Away + WP Armour の組み合わせが最強。WP Armourで基本的なボットをブロックしつつ、それぞれの得意範囲をカバーできます。

ビジネスサイト・ECサイト(確実性重視)WP Armour + Akismet(または CleanTalk)。WP Armourが単純なボットを弾き、AkismetのAPIコール数を削減しつつ高精度を維持できます。

プライバシー・GDPR最優先の場合Throws SPAM Away + WP Armour(外部通信なし・完全無料)

という結果が得られたので・・

陽だまりのととふは、日本語サイトであるので、Throws SPAM Away  を使ってみようかと思いますが、本当にいいのかよくわかりません。

記載 2026年4月24日 : #定期的にアップデート

ログインページの強化

【有効性:★★★★★】(必須) WordPressの初期ログインURL(/wp-admin または /wp-login.php)は世界中のハッカーやボットに知られており、毎日凄まじい数のログイン試行(攻撃)を受けます。URLを変更するだけで、これらの攻撃の99%を無効化できます。

【やり方】 「WPS Hide Login」も良いですが、日本のレンタルサーバーを利用しているなら、より総合的な国産セキュリティプラグイン**「SiteGuard WP Plugin」**が圧倒的におすすめです。

  1. 「プラグイン」>「新規追加」で 「SiteGuard WP Plugin」 を検索し、インストール・有効化します。
  2. 有効化直後、画面上部に「ログインページURLが変更されました」と表示されるので、新しいログインURLを必ずブックマークしてください。(デフォルトでは login_<ランダムな数字> になります)
  3. このプラグイン一つで「ログインURLの変更」「画像認証の追加(ひらがな入力)」「XML-RPCの無効化」がすべて設定できます。


これは、気になっていたので対策することにしました。にほんごでのひらがな認証が・・日本製っぽい。

XML-RPCの無効化

【有効性:★★★★☆】(おすすめ) 現在、WordPressのスマホアプリや「Jetpack」プラグイン等を使っていなければ、XML-RPC機能は不要です。ここを狙った攻撃(パスワード総当たり攻撃など)は非常に多いため、塞いでおくのが安全です。

【やり方】 初心者の方にはプラグインでの無効化が一番安全です。

  1. 「プラグイン」>「新規追加」で 「Disable XML-RPC」 を検索。
  2. インストールして「有効化」するだけです。(設定画面はありません。有効化するだけで機能します)
ととふ
ととふ

これは、JetPackプラグインをつかってないので、しませんでした。

Google reCAPTCHA v3

【有効性:★★★★★】(フォーラム・お問い合わせがあるなら必須) スパムボットを自動で弾く最強の盾です。「陽だまりのととふ」ではフォーラム(bbPress)を設置予定であれば、スパムトピックの乱立を防ぐために必ず導入してください。

【やり方】

  1. Googleアカウントにログインした状態で Google reCAPTCHA のサイトへアクセスし、「v3 Admin Console」から自分のサイトのURLを登録します。
  2. 「サイトキー」「シークレットキー」 という2つの文字列が発行されます。
  3. お問い合わせフォーム(Contact Form 7)の場合:
    • 「お問い合わせ」>「インテグレーション」を開き、reCAPTCHAの項目に上記2つのキーを入力して保存します。
  4. フォーラム(bbPress)やコメント欄全体を守る場合:
    • プラグイン 「Advanced noCaptcha & invisible Captcha (v2 & v3)」 などをインストールし、設定画面で上記2つのキーを入力します。
ととふ
ととふ

ぽっぽさんが、ネタバレでお気持ちを表明したい時になにかできないかな~と思っていたので、ネタバレOKな人だけがアクセスできる掲示板とかを設置したいなと思っていたのです。
いずれ実装したいですね。
その他、Xでの交流が盛んですが、掲示板ならではメディアとしての良さがあると思うので、活用の用途広げたいと思っています。
ですので、いずれ対応したい(2026年4月24日)

ホスティング(レンタルサーバー)側のWAF

【有効性:★★★★☆】(手軽で強力) エックスサーバー、ConoHa WING、ロリポップなど、国内の主要なレンタルサーバーには「WAF(ウェブアプリケーションファイアウォール)」が標準搭載されています。プラグインを入れるよりもサーバー側で弾く方がサイトが重くなりません。

【やり方】 (※ご利用のサーバーによりますが、一般的な流れは以下の通りです)

  1. ご利用のレンタルサーバーのコントロールパネル(管理画面)にログインします。
  2. 「セキュリティ」や「WAF」というメニューを探します。
  3. WAF設定を「ON(有効)」にします。 (※注意: WAFをONにすると、自分が記事を保存したり、Cocoonの設定を変更したりする際に「403エラー(アクセス拒否)」が出ることがあります。その場合は、一時的にWAFをOFFにするか、WAFのログから除外設定を行う必要があります。)
ととふ
ととふ

エックスサーバーで契約したので、これは設定したいと思いますが・・条件をもう少し詳しく調べてみます。

エックスサーバーのWAF(Web Application Firewall)は、非常に強力で頼りになる機能ですが、その強力さゆえに、**「自分で自分のブログを編集している時にアクセスが拒否される」**というトラブルが時々起こります。

具体的な設定方法と、トラブルが起きた時の対処法を詳しく解説します。


エックスサーバーでのWAF設定方法

設定はエックスサーバーの「サーバーパネル」から行います。

ととふ
ととふ

エックスサーバーのサーバー管理のページにいき、下の方にセキュリティってところがありますね。

WAF設定をクリックすると、次のような警告画面が出ました。
ちょっとドキッとしますが、「WAF(ウェブアプリケーションファイアウォール)の誤検知」、あるいはそれに伴うエックスサーバー側からの注意喚起ということで、100%を保証するものではないというようないわば当たり前のようなことですね。

ととふ
ととふ

そのまま続けると、以下のような設定画面が出てきます。

エックスサーバーのWAF設定にある6つの項目

エックスサーバーのWAF設定にある6つの項目について、専門用語を避けつつ「何を守っているのか」を分かりやすく解説します。

また、「なぜこんなに大事なものが最初からOFFなのか?」という、誰もが抱く疑問についても納得いただける理由があります。


各項目の簡単な説明

項目名守っているもの(イメージ)
SQLインジェクション対策「金庫(データベース)」を守る。記事データやユーザー情報を盗み見たり、消したりする攻撃をブロックします。
XSS対策「読者」を守る。サイトに不正なスクリプトを仕込み、訪れた読者を詐欺サイトに飛ばしたりする攻撃を防ぎます。
コマンド検知「サーバーの脳」を守る。サーバーを操るための特殊な命令(コマンド)が送られてくるのを検知して遮断します。
PHPスクリプトインジェクション「勝手なアプリ実行」を防ぐ。WordPressを動かしているPHPという言語を悪用し、ウイルスを仕込む攻撃を防ぎます。
OSコマンドインジェクション「サーバーの根っこ」を守る。WindowsやLinuxのような土台となるOSを直接操作しようとする深刻な攻撃を防ぎます。
メールヘッダインジェクション「加害者になること」を防ぐ。あなたのサーバーを「迷惑メール送信の踏み台」として悪用されないようにします。

なぜ初期設定では「OFF」になっているのか?

これほど強力なガードをエックスサーバーが最初からONにしない理由は、「WAFが優秀すぎて、普通の操作まで攻撃と勘違い(誤検知)してしまうから」です。

  • 「記事が保存できない」トラブルの回避:例えば、ブログ記事の中に「HTMLコード」を書いたり、特定の文字の組み合わせ(<script>など)を入力して保存しようとすると、WAFが「あ!攻撃だ!」と勘違いして、管理者のあなた自身のアクセスを遮断してしまいます。
  • サポートの混乱を防ぐため:もし全ユーザーを一斉にONにすると、あちこちで「記事が保存できない」「画面が真っ白になった」という問い合わせが殺到してしまいます。
  • 「自己責任」というスタンス:「利便性(スムーズに編集できる)」と「安全性(ガチガチに守る)」のバランスは、サイト運営者自身に選んでもらう、という方針のためです。

「ON」にしないでよいか?(リスク判断)

技術的には、「OFFのままでもWordPressは動きます」。ライブドアブログのようなサービスでは運営側が裏で守ってくれていたため、意識する必要もありませんでした。

しかし、WordPressに移行した今の状態では「ON」にすることを強く推奨します。

  • 狙われやすさが違う:世界中のサイトの約4割がWordPressで作られているため、攻撃者は常に「脆弱なWordPressサイト」を探して自動攻撃を仕掛けています。
  • フォーラムを運営するなら必須:今後「掲示板(フォーラム)」を設置する場合、不特定多数の入力が発生するため、WAFによる入り口のチェックは生命線になります。

ととふ
ととふ

ととふは、まずは「すべてON」にしました。
もしも、その後に、もしブログを書いていて「保存ボタンを押したのにエラー(403 Forbidden)が出る」という事態になった時などにこの設定が悪さをしていないかを確認するようにしていきたいと思います。

.htaccess によるアクセス制限(海外IPブロック)

【有効性:★★★☆☆】(効果はあるがリスクも高い) .htaccessというファイルを直接編集して海外からのアクセスを弾く方法です。

【やり方・注意点】 手動で日本のIPアドレス一覧を記述するのは、リストが頻繁に更新されるため現実的ではありません。また、記述を1文字でも間違えると**サイト全体が真っ白(500エラー)**になる危険があります。

そのため、海外スパムに悩まされた場合は、この手法の代わりに**「IP Geo Block」**というプラグインを使用することを強く推奨します。

  1. プラグイン「IP Geo Block」をインストール・有効化。
  2. 設定画面から、ログイン画面やコメント欄へのアクセスを「日本からのみ許可」とする設定が安全にマウス操作だけで行えます。
ととふ
ととふ

これは導入しませんでした。
ドラクエには海外コミュニティもありますし、しっかりとつながっていきたいと思っていますからね! Xが翻訳されるようになったときに、フランスからの投稿者と繋がれたりして非常に楽しい思いをした記憶があります。

コメント

タイトルとURLをコピーしました