タグ: Plugin

  • [WordPress] スパム・コメント対策にreCaptchaプラグイン – 更に、「Statify」/ 「SiteGuard WP」でログイン画面の守りを固める – セキュリティ対策

    [WordPress] スパム・コメント対策にreCaptchaプラグイン – 更に、「Statify」/ 「SiteGuard WP」でログイン画面の守りを固める – セキュリティ対策

    はじめに

    自前NASにWordPressを導入してblogを発信していることを前提にしています。Synology NAS/Routerには、それぞれのマシンのログインや、Synologyが独自で提供する各種サーバーの守りは、それぞれのOS (DSM/SRM)で完結できます。しかし、WordPressは独自に守る必要があります。そのために、WordPressのためのプラグインが存在しています。

    これまで、たとえば、スパム・コメントの対策には、「Throws SPAM Away」にお世話になっていました。その役割も、僕の知識も変化・発展したことで、reCaptchaなるGoogleが提供するセキュリティ対策へと移行しています。更に、冒頭で述べたように、WordPress自体を守るために、新たなプラグインとして「Statify」、「SiteGuard WP」を更に導入しました。

    注) Throwは野球でいう「スローイング」のスロー、投げるの意。

    試したプラグイン

    reCAPTCHAで試したのは、2つ。一つ目の「reCAPTCHA in WP comments form」は、コメントの送信ができなかったので使えず、使えたのは2つ目の「reCaptcha by BestWebSoft」を稼働させることにした。

    • reCAPTCHA in WP comments form
      • 8ヶ月前のupdateで、互換性テストがされておらず、結果的には、コメントの送信ができなかったため、使用できなかった。
    • reCaptcha by BestWebSoft
      • Pro版もあり、メンテナンスはされています。Pro版でない無料版のまま使用することにした

    プラグイン

    reCAPTCHA in WP comments form

    reCaptcha by BestWebSoft

    Throws SPAM Away

    日本語が含まれないコメントは、強制的にコメント送信しても廃棄するプラグインです。現在は使用していません。

    Statify

    Statifyの機能

    「Statify」は、サイトのアクセス数をカウントしてくれるプラグインです。純粋なページへのアクセスに関して「Google Analytics」は、詳細なレポートを示してくれます。Statifyを導入する意義を確認するためにStatifyとの比較をしたところ、結果が異なっていました。Statifyでは、/login/へのアクセスがカウントされていたのに、Google Analyticsではカウントされていなかったのです。

    /login/へのアクセスは、私が知らないアクセスでした。不正なアクセスを試みているものと判断できました。Statifyをインストールして約半日の集計で、すごい勢いでアクセス数が増えるのが観察されました。その反日での結果、/login/のアクセス数は、200を超えました(下図に205とある項目)。少し愕然としました。そんなにアクセスを試みるハッカーがいるものだと。「Statify」を、セキュリティ対策プラグインとして採用することにしました。

    わかったこと

    • Google Analyticsは、善意の第三者がページを閲覧することを前提にしたページモニタリング・ツールである。すなわち、Statifyがカウントするログインページのカウントはない。
    • Statifyは、アクセスした数を実直にカウントしてくれる。すなわち、ログインページのカウントもしてくれるので、セキュリティ対策としてのモニタリング・プラグインとして使用が可能と判断した。

    SiteGuard WP

    SiteGuardの機能

    Statifyが示した愕然する程のログイン画面への多数のアクセス数、この結果を受けて調べました。デフォルトのログイン・リンクは変更すべきなのです。プラグインを使用せずに、PHPファイルにコードを加える方法でも可能なのですが、30行から50行程度のコード追加が必要です。メンテナンスが大変そうなので、プラグインで対応することにしました。

    「SiteGuard WP」は、デフォルトである/login/を、安易に想像できないパーマ・リンクに設定する機能を持っています。SiterGuard WPをインストールした途端、即時に/login/をランダムな数で修正するので、当然ですが、その瞬間から/login/へのアクセスの増加は無くなりました。変更後のパーマ・リンクのアクセスのカウントもモニターされていません。「SiteGuard WP」を、セキュリティ対策プラグインとして採用することにしました。

    上記の機能と説明について、以下に捕捉します。

    • ログインページ変更
      • /login/のデフォルトから変更
    • 画像認証
      • bot対策です。かな文字を画像として表示して、それを入力するように促す機能

    以上のSiteGuardによるログイン・ページの変更だけで不正ログインを試みる事例は、一時期極端に減少しました。しかし、運用開始から1週間後の夜中から今日の朝方にかけて約8時間程度で、3つのIPアドレスからの3,000回以上で、WordPressログイン画面に対してアタックを受けました。このログは、SiteGuardの「ログイン履歴」からわかったことです(下図参照)。Google Analyticsではカウントされ無いものです。

    • XMLRPC防御
      • XMLRPC (XML形式のデータを使いHTTPの通信、RPC: remote procedure call)は、WordPressが開発された当時が実装されているログインしたりリモート制御したりするときに使用する通信機能の1つですが、現在ではREST APIというものに置き換えられています。
      • XMLRPCには全弱性があるため無効にすべきです。
      • XMLRPCにある1つの機能であるピンバック機能のみを無効化するか、XMLRPC全体を無効にするか、いずれかを選ぶことができます。

    WordPressのxmlrpc.php詳細ガイド(xmlrpc.phpとは、セキュリティリスク、無効にする方法)- kinsta –

    https://kinsta.com/jp/blog/xmlrpc-php/

    ロックは完璧

    以下の図は、ログ画面の一部です。内容を確認してみると、3つのIPアドレスからの不正なログインアタックが記録されているのが分かりました。下図の例では、3回失敗した後は、ロックされる設定にしているため、その後のアクセスはロックされているのが分かります。

    次の対策

    念の為、危険なIPアドレスを知った後の処置です。自前のSynology NASまたはSynology RouterがGeteになっているなら、ファイアウォールの設定をしておきます。完全に「出禁」に設定してしまうのです。

    Synology NAS/Routerの場合は、下図を参考にして、以下の通りで設定します。

    1. コントロールパネル (Synology Routerの場合; ネットワークセンター)→ セキュリティ → ファイアウォール (タグ)
    2. ファイアウォール プロファイル → 規則の編集
    3. 「作成」をクリック
      • 全てのポート
      • 特定IP → ソースIP → 単一ホスト(を設定)
      • 拒否
    4. OKで登録

    以上の手順で、危険と思われるIPアドレスをファイアウォールに登録しました。しばらくは、この方法で運用して様子を見てみます。

    まとめ

    コメントのスパム対策から始めたこの記事でしたが、それではサイトの守りはままならないことがわかってきました。AMPプラグインとの相性の問題から、一部のページの守りには、reCaptcha を使えています。しかし、ログイン・ページの守りは、これまでは不十分でした。純粋にアクセス数をカウントする「Statify」プラグインの導入をきっかけに、「SiteGuard WP」プラグインと併用することで、ログイン・ページの守りを強固なものにすることができます。確認された危険なIPアドレスはファイアウォールに拒否リストとして登録します。しばらくは、この運用で様子を見てみます。

    編集履歴

    2019/12/25,はりきり(Mr)
    2021/01/07,追記(Statify, SiteGuard WPをセキュリティ対策プラグインとして採用)
    2021/01/23,追記(WPへの不正アクセス試行を発見し対処する方法)
    2021/09/17,追記(XMLRPC防御について),文言整備
  • [WordPress] 自宅サーバーのWordPress – プラグインで致命的なエラーにより管理画面(ダッシュボード)に入れなくなった場合の対処法

    [WordPress] 自宅サーバーのWordPress – プラグインで致命的なエラーにより管理画面(ダッシュボード)に入れなくなった場合の対処法

    プラグインによる致命的なエラー

    どなんプラグインでも起こり得ることだか、今回、初めてのプラグイン関連の致命的なエラーを経験をしたので、詳細をのこします。

    エラーしたプラグイン

    エラーしたのは、Cool Timelineというタイムラインを簡単に作れるWordPressのプラグインです。ライト版のCool Timelineと正式版のCool Timeline Proがあります。

    最初にライト版で試用して、正式版に乗り換えましたが、今まで、ライト版も停止状態で残していました。今回、削除しようとして誤って有効化のボタンに触れたことで、致命的なエラーが生じたと表示が出て、ログインもサイト表示もできなくなってしまいました。

    復旧

    これまでに、Synology NAS用のパッケージソフトであるバックアップ・アプリを2種類をインストールしていたので、そのバックアップ・ファイルから復元を試みました。

    しかし、復元しても、やはりダッシュボードには入れず、サイトの表示もエラーが出てできませんでした。

    WordPressの裏口から

    以下のメールがWordPressのシステムから来ていました。それを知らずに色々していた訳です。

    そのメールの「リカバリーモード」のリンクからダッシュボードにはいり、エラーしているCool Timelineを削除することで、ログイン時にエラーする現象から復旧できました。

    分かったこと

    しかし、最初に「リカバリモード」を使わず、バックアップ復元による方法による復旧を試したことから、以下のことがわかりました。

    • バックアップファイルから復元したファイルには、プラグインの有効化/停止の状態を保存しているファイルはないこと。
    • おそらく、それ以外のところ(Maria DB)に保管されているのではないかと思われます。今回の復元は、DBアプリを含めずblogのデータのみを対象にたことから、そのように考察しています。

    復旧手順が書かれた受信メール

  • [WordPress] Post SMTP Mailer/Email Log プラグインを導入

    [WordPress] Post SMTP Mailer/Email Log プラグインを導入

    機能

    サイト外へのメールをWordPressから飛ばせなかったが、このプラグインのお陰で無事に飛ばせるようになった。

    自宅NASサーバーのメール関係に設定不良があることが、WordPressからサイト外にメールを飛ばせない原因かも知れません。

    Ultimate Memberプラグインでは、ユーザー認証のために、登録を要求してきたメールアドレスに対して、確認メールを送ります。その時にサイト外へのメールの送信が必要になります。

    編集履歴
    2019/12/14 Mr.HARIKIRI
  • [Synology] NAS – WordPressからサイト外にメールを送信する  [2020/09/13]

    [Synology] NAS – WordPressからサイト外にメールを送信する [2020/09/13]

    この記事は、少し古いです。代わりに以下の記事をご覧ください。この記事は、参考資料として「Appendix」を保存するために、このまま維持することにしました。
    代わりの記事では、2020/09の時点において、Synology NASに立ち上げているWordPressから、外にメールを送れるように、「WP Mail SMTP by WPForms」プラグインとGMAIL APIを使って可能にする内容です(2020/09/13)。

    概要

    メール送信の手段は、以下のとおり2つある。

    1. SMTPにるメール発信

    このSMTPとは、WordPressが導入されてるいサーバーで可動しているSMTPである。SynologyもGoogleのgmailの仕様が変更されたことで、少し混乱しているかもしれない。サイトに行っても解決策が古かったりしているので、今、現在は、どうなのか不明だ。

    現状では、SMTPを使用したサイト外への発信は断念した。そもそも、Synology NASのSMTPからWordPressのメールを飛ばせるのかどうかすら、よく理解できていない。

    SMTPを使用する場合、DNSの設定とMailPlus Severの設定をそれぞれ整合させなければならないと思われるが、DNSの設定については、以下で述べているように、なかなかハードルが高く僕の技術と知識レベルでは、現状断念せざるを得なかった。

    2. PHPによるメール発信

    色々調べていく過程で、WordPressのプラグインを使用して、その基本プログラム言語であるPHPからメール配信をコントールできることが分かった。まず、最初に試した”WP mail SMTP by WPForms”は、配信の成否が分かるものの、配信できない場合の解決策を提案してくれなかった。

    Synology: WordPress not Sending Emails (Solved)

    そこで、次に試した”Post SMTP Mailer/Email Log”は、GmailアカウントとGoogle API consoleの設定により、メールをWordPress(厳密にはPHP)からサイト外に発信できるようにするプラグイン (作者: Yehuda Hassineさん)。これを使って、且つ、blogにある設定方法:“How to Set up and Configure Postman SMTP on WordPress”に従い設定を進めてた。

    その結果、サイト外へのメール発信がこれまでできなかったが、無事に発信できるようになった。

    3. 設定方法

    基本的には、同設定方法に従えばよい。Google API Consoleの体裁が若干の変更があり混乱するが、図1のように、設定する項目は、左側のタグのように、後ほど確認できる。設定し忘れても、このページに戻ってから設定すれば問題ない。以下に、Google API Consoleでの作業における特記事項を示す

    • ドメイン(harikiri.diskstation.me)の承認には、Google API Consoleでの作業でダウンロードしたhtmlファイルを、Google API Consoleが指定する、ドメインにコピペする
    • クライアントIDとクライアント シークレットを、当該プラグインの入力領域にコピペすれば良い。

    設定項目は、以下の図のようなタグ(左側)がある。

    今回の作業で全体として分かったこと

    • Synology NASのメールシステム(SMTP)を使用できるようにするには、DNSの設定が完全でないといけない。
    • DNSの設定の検証には、MX TOOLBOXを使用できる。このツールは、Synologyサイトにも使用の記載があり、DNS, SMTP, MXなどをはじめ、サイトにおける多数のサーバーの設定の適切性を調べてくれる。
    • DNSの設定には、A RECORD, NS RECORDに加えて、メール配信に関わるMX RECORDの正しい記載が必要である。
    • 更に、近年のSPAMメール対策のために、多数の認証方法が取られており、SPF RECORDについても正しい記述が必要である。
    • 以上のように、SMTPを使えるまでには、まだ、知識・技術が不足している。今後の自助努力によるSMTPの設定の完了に期待する。時期バージョンのDSMにも期待。
    編集履歴
    2019/12/14 はりきり(Mr)
    2020/09/13 修正 (新しいくプラグインを変更したので、その記事への誘導、この記事は、Appendixほ保存するために、このまま維持する)
    (さらに…)
  • [WordPress] Easy Table of Contents – プラグインの導入  [2019/12/08]

    [WordPress] Easy Table of Contents – プラグインの導入 [2019/12/08]

    Easy Table of Contents

    見出し(H1~)を自動的に、最初の見出しの前に、自動的に目次を挿入してくれる

    AMP (Accelerated Mobile Pages )で動作する

    Table Conctentsのプラグインは、ここで紹介したプラグインと比較して甲乙付けがたいのですが、2020/04時点で、「Table of Contents Plus」を使っています。

    編集履歴
    2020/02/23 更新
    2020/04/08 現在「Table of Contents Plus」プラグんインを使用していることを追記
  • [WordPress] 会員限定ページや会員のみが閲覧できるページやページ内に会員のみ閲覧できるブロックを作る – 調査編 [2019/12/08]

    [WordPress] 会員限定ページや会員のみが閲覧できるページやページ内に会員のみ閲覧できるブロックを作る – 調査編 [2019/12/08]

    はじめに

    調査を結果、Ultimate Memberプラグインをインストールしています。

    当サイトは、Ultimate Memberプラグインを試験的に導入しています。よろしければ、「いたずら」してみて下さい。使い勝手などがわかると思います。どれだけの堅牢性(ロバストネス)があるか知りたいと思っているので、ぜひどうぞ。

    よく海外からの「ヒヤカシ」があります。ユーザー登録はしていただけるのですが、その登録したe-mailに対して、自動で送られてくるリンク付きのe-mailの処理をしてくれません。そのリンクをクリックすれば、登録したe-mailは実在し且つロボットではないと、おおよそ判断できるので、登録が完了します。登録の削除もできるはずです。

    メール一覧から、ステータスが確認できます。「ヒヤカシ」の場合、「メールアドレスの確認待ち中」と表示されています。メールの確認が完了すば、「承認済み」になります。以上、これらの挙動は、Ultimate Member -> 設定 -> Emailから設定します。

    はじめに

    以下のサイトをまとめると、WordPressで会員限定ページを無料のプラグインで構築することは、必要十分のようで、有料版までは必要なさそうです。

    TCD Themeを購入することも考えたが、機能は、プラグインで達成するか、購入したテーマに組み込まれた機能で達成するかの違いであり、それぞれの開発力からすると、専門的に開発している個別プラグインから調達する方が、機能的に高いもので構築できると考えられる。

    ただ、バランス面からするとオールインワンのThemeを調達する方が良いとも言える。

    考えたあげく、出費を抑えて茨の道を行くかもしれないプラグインのインストールの方法を選択することにした。

    必要な機能(要求仕様)

    必要な機能を以下に上げてみた。こりらを全て無料のプラグインで実現できるかは分からない。

    • 会員サイトがアクセスした際の会員登録を促す
    • 会員登録の内容を不適切な登録(ユーザー名として電話番号など)はできない
    • 会員でない場合、そのアクセスしたページは一部だけを表示する閲覧制限を付けることができる
    • パスワードを忘れたユーザーに対する自動対応機能
    • メール送信機能(単純型、メルマガ型)
      • TCDテーマのプレミアムプライスでもメルマガ型はサポートしない)
    • マイページ
    • botによる不正なユーザー登録の抑制

    必要な機能が全て満たされているかは、プラグインの機能を十分に理解していないため不明だが、bot対策があるUltimate Memberには、bot対策のためのプラグインとして、Ultimate – reCAPTCHAが、2018年以降追加されたらしい。これも同時に導入するのがよい。

    WordPressプラグイン|Ultimate Memberでユーザー管理、コミュニティー投稿サイトにする方法、wano.jp – さんの記事

    WordPress(ワードプレス)で会員サイトを簡単に作成できるプラグイン10選

    WordPressで会員サイトを作るには?おすすめプラグインまとめ【2019年度最新版】

    無料で会員サイトが作れるWP-Membersの使い方を紹介

    会員サイトに必要な機能を一通り実装できるUltimate Memberについて紹介!、ページのブロック設定を参考

    「Mailchimp(メールチンプ)」の評判と実態|15個のメール配信システムを試したアイミツが徹底比較!

    WordPressで掲示板を作るならbbPress!使い方の完全マニュアル

    CTDテーマによる(2017)、WordPressで会員限定向けコンテンツが配信できる「パスワード付き保護ページ」が作れるテーマ

  • [Synology] Threat Preventionが検知したWordPressへの連続Loginアタックは全てIPアドレスが異なっているBrute Force Attack – reCAPTCHAプラグインで対策する [2020/03/20]

    [Synology] Threat Preventionが検知したWordPressへの連続Loginアタックは全てIPアドレスが異なっているBrute Force Attack – reCAPTCHAプラグインで対策する [2020/03/20]

    Threat Preventionとは

    Synologyのパッケージ「Threat Prevention」は、IT業界における一般的な名称は、「侵入検知システム (IPS: Intrusion Prevention System)」です。

    攻撃を受けた

    Threat Preventionのログを眺めていると、少し怖いログが残っていました。調べてみると、Brute-Force-Attackと呼ばれる不正にアカウントを取得する総当たり攻撃であることがわかりました。

    Threat Preventionでは、アラート処理に留まっており、ドロップしていないことがログよりわかりました。何かの対応策が必要です。

    参考
    ブルートフォースアタックとは?実験から分かる危険性と有効な4つの対策

    https://japan.norton.com/brute-force-attack-9215

    攻撃内容

    その内容は、18:30から始まり、44分間で35回のWordPress Longin が試みられていて、どれも異なるIPアドレスからでした。

    最初は1分間隔で、後半は2分間隔の攻撃で、ログには、”ET POLICY Cleartext WordPress Login”とあり、以下の図の様に実行されていました。

    WordPressには、時間と回数によるセキュリティは掛けていました、IPアドレスが異なると機能しなはずです。

    35回程度でPWを破られることは無いと思われますが、2段階認証(2ステップ認証)も導入しておかないと危険であると判断しました。

    2019/11/24 はりきり(Mr)

    threat prevention

    CAPTCHの導入を考える

    このような攻撃に対処するreCAPTCHAプラグインをWordPressにインストールすることにしました(2019/11/24)。

    追記 (2019/11/24)

    Brute-force attack (参考1)と呼ばれるアカウント取得のハッキングのようです。多くのHTTP Brute Force Attack Toolは、ネット上に存在するポートが空いているプロキシサーバーのリストをもとに、そこを中継して攻撃をしてくるため、IP Addressが異なることが多いようです。

    このため、このプロキシサーバーのリストにあるIP Addressを全てブロックできればよいようですが、個人そこまでできません。

    デバイスCookie

    既知および未知のブラウザまたはデバイスからの認証試行を個別にロックアウトすることも検討できます。 デバイスCookieを使用したオンライン推測攻撃のスローダウンの記事(参考2)では、特定のブラウザーが既にログインに使用されているかどうかに関する情報に基づいて、ロックアウトメカニズムのプロトコルを提案しています。 このプロトコルは、単純なアカウントのロックアウトよりもDoS攻撃の影響を受けにくく、効果的で実装が容易です。

    CAPTCHAの使用

    よくある写真で自転車だけ選びなさいとか言うやつです。パズルもありますね。

    最終的に、GoogleのreCAPTCHAを利用するWordPressのPlugin “Login No Captcha reCAPTCHA”をインストールしました。インストール方法は、TechMemoさんをご参照ください。

    Amazonに行く

    参考1

    Blocking Brute Force Attacks

    https://www.owasp.org/index.php/Blocking_Brute_Force_Attacks

    参考
    デバイスCookieを使用したオンライン推測攻撃の速度を落とす

    https://owasp.org/www-community/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies

    参考3

    ブルートフォース攻撃のブロック

    https://translate.google.co.jp/translate?hl=ja&sl=en&u=https://www.owasp.org/index.php/Blocking_Brute_Force_Attacks&prev=search

    編集履歴

    2020/03/20 文言整備、用語整備、参考サイトの整備

    関連記事

  • [WordPress] Imsanity プラグイン – アップした画像を一括でリサイズ [2019/11/22]

    [WordPress] Imsanity プラグイン – アップした画像を一括でリサイズ [2019/11/22]

    Imsanity

    ImsanityというWordPressのプラグインで、取り込んだ画像のリサイズを一括で行えます。ただし、元のサイズに戻すことは出ません。

    今後、通信速度が5Gになれば、画像サイズによるレスポンス問題はなくなるので、チューニングせずに、それまで(家宝は)寝て待てでも良いかもしれませんね。

    FoxWP