【S】日本語プラグインXO Securityの使い方と超次元コンボ

XO Security

このプラグインは不要な機能を抑え、初心者に面倒な「.htaccess」を触らずにログインページを変更でき、珍しい「失敗時の応答遅延」という一見地味な機能が付属している。

Nginx(エンジンエックス)でも使えるぞ!

当サイトはこの機能を最大限に活かし、後世に語り継がれる超次元コンボで、ログインをやりすぎなまでに独自強化していく。

超次元コンボとは、ワンタイムパスワードの制限時間内(約30秒)を時間切れに追い込むコンボのこと。

XO Securityだけでも十分強力だが、可能であれば超次元コンボにも手を染めよう。

その場合は、XO Securityのみでの使い方ではない

他にもやるべきセキュリティ向上の前提を述べているので、間違いなくレベルアップする。

スポンサーリンク

XO Securityとは

日本でログインセキュリティと言えば、SiteGuard WP Plugin(通称サイトガード)だが、そちらの機能をさらに増やし、使いやすくしたような国産プラグインだ。

そのSiteGuardと違うのは、なんといっても.htaccessに何もしないので初心者に勧めやすく、冒頭の「失敗時の応答遅延」による超次元コンボの存在が大きい。

さらに、REST APIを無効化したり、ユーザー名を秘匿することも可能で、他のプラグインをこれだけに減らせるのも良い。

ただ、こちらは開発者が企業ではなく個人であり、知名度も以下のような感じだ。

SiteGuard WP Pluginインストール数
XO Securityインストール数

それでも、このプラグインは日本のログインセキュリティ界に名を轟かせるべきなので、大々的に魅力を伝えていく。

寄付は募っておらず、お金持ちの方はお問い合わせ必須。

スポンサーリンク

ダウンロード・インストール

こちらのXO Securityか、わかりやすいダッシュボードのプラグインにカーソルを乗せる → ①「新規追加」→ ②右上にある 検索に「XO Security」と入力 → ③「今すぐインストール」しよう。

プラグインにカーソルを合わせて新規追加
今すぐインストールを押す

インストール完了後は有効化だ。

スポンサーリンク

設定

ダッシュボード左側にある「設定」にカーソルを乗せると、XO Securityが顔を出すのでクリック。

設定にカーソルを合わせてGO

そうすると現在のステータス(設定状況)がお目見えし、設定していないのでまだ有効化されていない。

ステータスで状況確認

順番通りに進めていくので、読み進めていこう。

ログイン

ログイン設定
  • 試行回数制限:1、12、24、48時間のどれかに設定でき、失敗した同じIPアドレスからの再挑戦を制限可能
    • 12時間・リトライを3回まで許可推奨
  • ブロック時の応答遅延:最大値の120秒推奨
  • 失敗時の応答遅延:最大値の10秒推奨(後述する超次元コンボで必須)
  • ログインページの変更:オン推奨
    • ログインファイルを他のPHPと被らないような名前にして作成※1
    • 設定保存後、必ずURLをコピーして新しいURLをコピー
  • ログインアラート:侵入されない前提なのでオフ推奨※2
  • ログインメッセージの変更:なんとなくオン
  • メールアドレスによるログインの無効化:主にユーザー名ログインならオン
  • ログイン言語制限:現在は強制無効だが、今後有効化しなくても他が強いので問題なし
  • ログイン CAPTCHA:後述する超次元コンボでは無効、コンボ不要ならひらがな
  • ログインログの自動削除:30日以前か356日以前(私なら30日)

※1.ログインファイルを作成する際、同名ファイルや未来で被りそうな名前は拒否されるのか、拒否されてもファイルは作成されてしまう。その場合はFTPで「public_html/自サイト名」にある自作した.phpを削除しよう。

※2.固定IPなら「%IPADDRESS%」を件名か本文に追記 →メールソフト側で自分のIPのみを既読かゴミ箱 → 自分のIP以外からのログインのみ残るようにする設定で、自分のログインを除外できる。

とりあえず推奨設定にしておけば、後述する超次元コンボと連携可能だ。

念を押すが、ログインページ変更をしたら必ずURLをブックマークすること。

今後はそのURLからログインすることになるが、設定した.phpはFTPの「public_html/自サイト」に存在しているため、忘れたら作成したPHPの名前を確認 → 自サイトURLの最後尾にその名前を入力してアクセスするとログインページに行ける。

少々試行回数制限はキツめだが、パスワード管理ソフトを使用している前提かつ、自動入力のおかげでミスをしないためである。

WordPressに対して何もせずにセキュリティを高められるため、プラグインのエラーを無視でき、都合の良いことしか起こらない。

WordPressに何も細工をせずにセキュリティを高められる方法があるなら、大前提としてそちらが先。

なお、当サイトのパスワード管理ソフト記事は一級品であり、過去諦めた方でも問題ない。

ブックマークで自動入力

超次元コンボ

現代では突破されていない2段階認証と、XO Securityに付属する「試行回数制限」・「失敗時の応答遅延」を組み合わせ、ワンタイムパスワードの制限時間内(約30秒)を時間切れに追い込むコンボを使う。

この方法は、同一IPアドレスによる「試行回数制限ロックを回避するためのIPアドレス変更攻撃」の効果を極限まで減らし、ログインセキュリティをこれ以上ないほどにまで昇華できる。

なお、失敗時の応答遅延機能はレアなようで、私はXO Securityしか知らない。

同時に2段階認証プラグインが必須となっており、2段階認証だけでも十分な強化を得られるが、せっかくならやっておこう。

ログインできなくなった際のテクニック

このプラグイン関係なしに言えることだが、FTPの「public_html/自サイト/wp-content/plugins」にある該当プラグインフォルダ名を変更すると無効化でき、ログインができなくなったりした際は重宝する。

これでログインページがわからなくなっても、一時的に元のwp-login.phpに戻したり、2段階認証を無効化してログインすることが可能。フォルダ名は文字を足すだけでOK。

正常にログインできたら、真っ先にフォルダ名を戻すのがコツ。

ぷっぷ
ぷっぷ

どうしてもわからなければ、コメント欄で聞いてね!

コメント

コメント設定

英数字かひらがなのCAPTCHA(キャプチャ)をコメント欄に付けることができる。

スパム対策を何もしていないのなら、とりあえず有効化させておき、日本語での返答しか許可したくないのなら「ひらがな」で遠回しに拒否しよう。

外部サービスを使っていないため軽量だが、効果と犠牲に利便性がやられてしまうのが難点。

XML-RPC

XML-RPC設定
普通にオフでもよかったと判明

ログインの総当たり攻撃(ブルートフォースアタック)対策に、XML-RPCに対する試行回数制限が含まれているため、無効化せずにJetpackやスマホからの投稿機能を使うことが可能!

攻撃する場所として定番の、XML-RPC・ピンバックを無効化できる。

XML-RPCは総当たり攻撃(ブルートフォースアタック)によるアカウント情報割り出し、ピンバックはWordPressサイトに埋め込んだURLを一気に配置して、攻撃したいサイトに承認を送りつけて重くするDDoS攻撃で使われる。

ピンバックはWordPressサイト同士でないと発動せず、XML-RPCの対策は比較的メジャーなので流行に乗って無効化でOK。

無効化して何かトラブルがあっても、コレだけは不動の無効化

さきほども述べたが、ログイン試行回数制限で仕事をしているため、「確実にJetpackやスマホで投稿関係をしない人」以外は、無効化する必要はない。

ぷっぷ
ぷっぷ

さらに言っておくと、今後XML-RPCを使った便利機能が誕生したときに、無効化してるといきなり機能しなくて困惑するよーん

REST API

REST API設定

「REST APIの無効化」でチェックを入れた項目を無効化でき、「REST API URLの変更」で「wp-json」文字列(プレフィックス)を変更することができる。

自サイトURLの最後に/wp-jsonや記述されている文字列を入力してみると、いろいろ表示されるぞ! なかでも、「/wp-json/wp/v2/users」と入力するとユーザー名を確認できる。このwp-jsonを他の文字列にして変更するのがプレフィックスだ。

REST APIは比較的新しく、実装当初とんでもないことは起きたがすでに対策済みであり、新技術により急遽使われ突然のエラーになっても面倒なので、当サイトは無効化していない。

とんでもないこと参考WordPress 4.7および4.7.1のコンテンツインジェクションの脆弱性(英語)

使用しない、よくわからないのなら無効化しておくのもわかるため、この機能は自分と判断しておこう。

次に説明するユーザー名隠しをするなら、以下の2つだけでもチェックを入れておけば良い。

/wp/v2/users
/wp/v2/users/(?P<id>[d]+)

このプラグインにはJetpackContact Form 7で使用するREST APIを禁止にする項目が存在しないので、すべてにチェックを入れても使用できるはずだ(私は使用していないので未確認)。

Gutenberg(グーテンベルク:ブロックエディタ)は軽く試しただけだが正常に使え、全部無効化してもほとんどの人には問題なさそうだ。

といっても、何かエラーがでたら真っ先に疑うこと。

Gutenbergは「/wp/v2/」系のどれかを使用しているらしい。

秘匿

秘匿設定

Edit Author Slug(エディットオーサースラッグ)でお馴染み、ユーザー名を隠すことができる機能。

上記プラグインと同じように使うなら、REST APIの項目にもユーザー名隠しで必須ポイントがあるため、チェックを入れておこう。

なお、当サイトはユーザー名を隠すどころか公開している。

WordPress公式もユーザー名隠しはセキュリティ上の問題にはならない(英語)と述べており、超次元コンボをするなら尚更どうでもいい。

ぷっぷ
ぷっぷ

ユーザー名に個人情報が入っているなら話は別! 隠そう!

スポンサーリンク

ログインログ

ダッシュボードで簡易的なログイン失敗履歴を確認できる。

ダッシュボードのログイン履歴

失敗回数がなぜか増えていたら、ダッシュボード左側にあるユーザー → ログインログで詳しく確認可能なので、不自然なログインをよく見てみよう。

ユーザーのログインログ
ログインログを確認可能
言語ってわざわざ偽装しないよね

当サイトの推奨設定なのに攻撃されていたら、何か盲点があったか新しい攻撃が誕生した合図だ。

セキュリティに終わりはないので、これからもそういった悩みに付きまとわれるだろう。

スポンサーリンク

ファイアウォール実装

今やったことはログイン系だけだが、総合セキュリティごっこを目指すべき。

当サイト一押しの、セキュリティガチ勢が警告する攻撃手法を無料で防御するために、これから流行る設定不要かつ超高速なBBQを入れておくといい。

MalCare(マルケア)は都合よくファイアウォールしかなく、クラウドのためか競合・干渉もせず、プラグインをインストールしてメールアドレス登録するだけで設定完了とあっさり終わる。

BBQとどちらか一つに絞るべきだが、どっちを使っても軽量と競合しないことを強力に謳っているため、気にならないはずだ。

この記事の組み合わせは、以下の究極の組み合わせを参考にしているので、相性に不満があるなら確認するといい。

コメント

  1. 遠藤 より:

    こんにちは!やりすぎセキュリティさんのブログを見て質問と問題点なのですが、

    ・SiteGuard WP Plaginと
    Xoセキュリティを入れているのですが1つに絞ったほうがいいでしょうか?

    ・ミニオレンジで登録するメルアドは
    普段使っているものでも支障はありませんか?(新規で作るもしくはエイリアスを作る場合はどっちのほうがいいか)

    ・Xoセキュリティで自作したphpファイルが見当たらない

    の3つになります

    • ぷっぷ より:

      こんにちは!

      同じ総当たり攻撃対策のモロ被りなので、どちらか一つでいいです(*´ω`*)
      私としては超次元コンボもあるし、今から使うなら断然XO!

      ミニオレンジは流出していないメアドならなんでもOKです。
      これはメールアドレスが公開情報という扱いのもと、どうでもいいサービス以外は使いまわしでもOKなためです!
      ようするにパスワードだけちゃんとしておけば、大丈夫なのです。
      Googleのエイリアスは+以降を削除して本体のメアドを簡単に確認できてしまって、セキュリティ的になんの意味もなく、ただの「わかりやすくわけるためだけのもの」なので本体のままでOK!

      XOの自作したPHPファイルは基本触る必要はないのですが、

      設定した.phpはFTPの「public_html/自サイト」に存在している

      というところに存在しているはずです。
      もしない場合は、

      • 試行回数制限を「試行回数の制限なし」にしたまま(変更しないと有効化されないかも)
      • .htaccessと同じ場所を探す
      • 「public_html/自サイト」ではなく、「public_html/wp/自サイト」の場合もある?

      という感じです。私がサーバーのファイルパス?ってものを間違えている可能性があるけども(ファイルパスってのもよくわかっていない……)
      とりあえず私は上記の手順で削除し放題、確認し放題です。
      最悪、削除しなくても問題はないので、放置のまんまでも(*゚▽゚)