タグ別アーカイブ: 画面

WordPressのログインURLを変え、セキュリティアップ

WordPressのログインURLを変え、セキュリティアップ

WordPressは、世界的に人気がありCMSとしても多く活用されている。それが故に攻撃の対象になりやい。攻撃者たちは、インターネットに公開されているサイトに無作為に攻撃を仕掛け、WordPressの穴をついて無理やりにでも入り込もうとアタックを仕掛けてくる。特に存在が明らかになったログイン画面へのアタックは、執拗に繰り返される。

以前に当コラムにおいて、ログインアタック対策に有効なプラグインとして「Limit Login Attempts」を紹介した。このプラグインは、ログイン認証に規定回数以上失敗した場合にログイン処理をロックするというものであった。

今回は、アタックの対象となるログイン画面の存在を隠してしまう「Login rebuilder」について紹介しよう。

ログイン画面のURLは、バレるものと考える

ログイン画面のURLは、バレるものと考える

WordPressのログイン画面は、ただ単にインストールした状態であれば「インストール先/wp-login.php」もしくは「インストール先/wp-admin」をURLに指定すれば簡単に表示させることが可能だ。WordPressで記事を入力したことのある読者であれば容易に想像がつくだろう。

「当社のサイトは大丈夫。インストール先を複雑な文字にしているから」

なんて思っているのであれば、それはまったく無意味なこと。ブラウザの機能でソースを表示すれば、インストール先はちゃんと書かれている。HTMLが読める程度の知識があれば難なく知ることができるのだ。

そのうえ、攻撃者たちは、そんなことは百も承知だ。
あなたのWEBサイトのすべてのページを解析して、機械的に、瞬時に調べ上げる。ログイン画面が攻撃者の目の前に表示されるのは、おそらく1時間とかからないだろう。
攻撃者の前に明らかになったログイン画面は、攻撃対象リストに組み入れられ、連日連夜、執拗なログインアタックを受けることになる。

プラグイン「Login rebuilder」でログイン画面を隠す

プラグイン「Login rebuilder」でログイン画面を隠す

Login rebuilderは、ログイン画面のファイル名(URL)を標準の「wp-login.php」から任意のファイル名に変更することができるプラグイン。「そもそもログイン画面のURLを知られなければ、ログインアタックの対象にもならないでしょ」というロジックだ。

Login rebuilderでログイン画面のファイル名を十分に長い推測不可能なファイル名に変更すれば、ログインアタックに対するセキュリティは、数段強化されることになる。

Login rebuilder のインストールと設定

1.入手とインストール

(図)有効化

Login rebuilderはWordPress.org(リンク先:https://wordpress.org/plugins/login-rebuilder/) からダウンロードすることができる。
インストールは、ダウンロードした圧縮ファイルを解凍後、[/wp-content/plugins」へアップロードし、管理画面の「プラグイン」から「有効化」すれば完了だ。
ただし、実際に機能させるためには、いくつかの設定と作業を施す必要がある。

2.Login rebuilderの設定

(図)ログインページ

Login rebuilderの設定は管理画面の「設定」-「ログインページ」から行う。

以下がLogin rebuilderの設定内容だ。

(図)設定の全容

3.新しいログイン画面用ファイルの設置

Login rebuilderを機能させるには、「新しいログインファイル」を準備する必要がある。新しいログインファイルは、ログイン画面のURLの一部となる。

新しいログインファイルを設置する方法は以下の通りだ。

まず、新しいログインファイルのためのファイル名を決め、管理画面の中の「新しいログインファイル」をそれに合わせて変更する。この時、「新しいログインファイル」は、推測が困難なできるだけ長いファイル名とすること。この例では、「new-login_b3ljohwpk8mxsra3.php」として新しいログインファイルを作成した。

そして次に、「新しいログインファイル」の記述に従って、実際のファイルを準備する。
変更した「新しいログインファイル」欄の直下に格納するパス示されるので、最終的に新しいログインファイルは、このパスに保存する。このとき、元々のログインファイルである「wp-login.php」を削除する必要はない。処理的には一旦新しいログインファイルを通過させてから、「wp-login.php」の処理を実行させる形を取るからだ。

新しいログインファイルには、さらにその下に示されるソースコードをコピーして貼り付け、先ほど決定した「新しいログインファイル」のファイル名で保存し、サーバーの指定パスにアップロードするだけである。

(図)新しいログインファイル

4.標準のログインファイルにアクセスがあったときの挙動

新しいログインファイルを設置しても、標準のログインファイル「wp-login.php」へのアクセスが止むことはないが、そこにはもうログイン画面は表示されない。Login rebuilderの設定には、標準のログインファイル「wp-login.php」にアクセスがあったときの挙動(応答)を指定できる。

正規の編集者や管理者であれば、新しいログイン画面のURLを知っているはずなので、標準のログインファイル「wp-login.php」へアクセスがあった場合は、「403ステータス」すなわち「アクセスが禁止されています」として応答すればいいだろう。「無効なリクエスト時の応答」には「403ステータス」を指定すればOKだ。

「サイトトップへリダイレクト」は、サイトの負荷を上げることにもなるのでお勧めしない。

(図)標準のログインファイルへのアクセス設定

5.稼働開始:驚くべきセキュリティ効果を体験せよ

基本的な設定は以上である。
「ステータス」を「稼働中」に設定し、「変更を保存」をクリックすれば導入完了だ。
たったこれだけの手間で、あなたが長い間不安に感じていたログインアタックから解放される。今日からあなたはログインアタックについての心配の種はなくなるし、上長にも胸を張ってセキュリティ対策の効果をアピールできるようになる。

ただし、ログインURLが変更になったことを運用担当者に忘れずに連絡しておこう。さもないと、せっかくのあなたの努力が社内からのクレームの嵐で水泡に帰してしまう。

(図)本稼働設定

セキュリティの確保は運用者の責任

セキュリティの確保は運用者の責任

不可解な目的を持ってアタックを仕掛けてくる攻撃者は、非難されてしかるべきだし、もっての外であるが、そのことを声を大にして叫んだところで攻撃者の耳に届くことはない。WEBサイトの運用者や担当者は、可能な限り対処できる対策を粛々と打つしか方法はないのである。

今回紹介したプラグインは、新しいログインファイルを準備するなど、少し作業が必要だが、ぜひ導入にトライしてもらいたい。ログイン画面が露呈しているのと、いないのとではあなたのWEBサイトのセキュリティに雲泥の差がでてくる。Login rebuilderを活用し、今日からログインアタックを気にしない余裕のWEBサイト運営者になろうではないか。

WordPressでCMS:仕様項目まで更新可能、運用コストを低減

WordPressでCMS:仕様項目まで更新可能、運用コストを低減

製品カテゴリーごとに異なるスペック項目を持つ企業は多い。一般的な方法論でCMSを開発すると、スクラッチ(手組み)によるものになることが多く、初期コストは莫大なものとなる。

さらに、製品カテゴリーごとにスペック項目が異なるので、データベースにはすべての仕様項目を格納する必要があり、担当者による運用の手間も相当なものになってしまう。

しかし、WordPressが標準で備える管理画面とデータベース構造を利用すれば、一定の品質を確保しながら開発工数を削減でき、情報の更新も複雑さが緩和され担当者は煩わしさから解放される。

当社では早くからWordPressに着目し、試行錯誤を繰り返しながら積極的にCMSツールとして活用してきた。この記事では、WordPressを使った製品情報セクションの複雑な要求仕様を満たす方法を、有用なプラグインソフトを含めて紹介する。

訪問者により有益な情報を提供したいと考えつつも、開発コストと運用方法を解決できずにいたWEB担当者にとって、課題を解決するためのヒントになれば幸いだ。

カテゴリーごとに異なるスペック項目まで更新できる製品検索システム

製品に幅広いカテゴリーを持つメーカーでは、製品分類ごとに仕様の項目が異なっている。それゆえ、これらを管理するCMSも非常に複雑なものとなってしまいがちだ。

一般的なアプローチとしては、システム構築前に分類/品種/品目ごとにすべてのスペック項目を洗い出し、それぞれにデータベース(テーブル)を準備し、その上で管理することになる。

しかしこの手法では、将来にスペック項目が変更された場合や、当初想定していなかった新製品を掲載する際、柔軟性に欠け、その対応にはシステム的な変更作業が伴うことが多い。

当社では、WordPressのカスタムフィールドとプラグインを駆使することで、スペック項目も含めてクライアント自身で製品情報の更新作業を完結できることを実現した。

某機械メーカーが抱えていた課題

某機械メーカーが抱えていた課題

旧サイトでは、全カテゴリー/全製品のスペック項目を漏れなくデータ項目としていた。更新のためのCMSツールは導入されていたものの、更新作業ではデータがある部分のみ入力を行い、表示処理の段階でデータ表示の有無を制御していたのである。

また、スペック項目すべてを一律に管理画面で更新できるようにCMS化すると、製品情報の管理画面が数スクロール分の長さになってしまったり、更新しようとする製品には関係のない項目も表示されることになり、入力間違いが発生するといったトラブルが生じていた。

さらに、データベースのカラムとしてスペック項目を設定していたため、クライアント側で新製品をリリースする際には、新たにスペック項目の追加が必要となってしまう。都度発生する運用コストも本当に必要なのかという疑問の声さえ社内から聞こえていた。

WordPressデータベースの概念図

要求仕様

上記の状況を踏まえ、クライアント側から提示された要件は以下の通りだ。

  • 製品スペックに詳細な表記が必要(項目名、単位、スペック内容、全10~30項目)
  • カテゴリーごとに異なるスペック項目や単位をCMSで管理できること
  • 同一カテゴリー内においても、スペック内容の有無で項目自体の表示/非表示を制御できること
  • 製品スペックを条件にした製品検索は不要

スペック項目にとらわれない情報の保持

スペック項目にとらわれない情報の保持

スペック項目をデータベースのカラムに設定せず、WordPressのカスタムフィールドを利用することで、項目名や項目数に制限されないデータの保持を実現。スペック項目をCMS上で更新でき、その内容を即時登録可能とした。また、後述の「Advanced Custom Fieldsプラグイン」を採用することにより、柔軟性の高い製品登録画面を実現した。

カテゴリーごとはもちろん、製品ごとに異なるスペック項目をCMS上で自由に管理でき、不必要なスペック項目の排除を実現した。

本稼働後、製品に関するすべての情報をクライアント側でメンテナンスできる仕組み

選択項目(マスター)は、WordPressの「タクソノミー」を利用し、管理画面上で追加/削除を行えるように配慮。製品情報のメンテナンスについては、当社に依頼されることはなく、クライアント自身で完結できるようにした。

現行サイトからのスムーズなデータ移行

旧サイトからのデータ移行に際し、当社とクライアントが共同でカテゴリーに共通的なスペック項目をExcelシートにまとめた。クライアントは、初期移行情報としてそのExcelシートに全製品情報を記述。当社は、そのExcelシートをインポートする機能を構築した。

WordPressの管理画面

使えるカスタムフィールドを実現し、開発コストを削減する「Advanced Custom Fields」

WordPressには、「カスタムフィールド」と呼ばれる、投稿する記事に対してタイトルと本文以外の任意の「名前」と「値」を与えることができる機能が標準で準備されているものの、標準のままでは使えない。

「Advanced Custom Fields」は、管理画面からカスタムフィールドを簡単に定義できたり、入力欄を自動生成したりと、WordPressのカスタムフィールドを利用しやすくしてくれるプラグインだ。

また、入力したデータをデータベースから容易に取り出すことができるAPIを提供してくれているので、クライアントの操作で更新内容を表示することも可能にする。

筆者が「Advanced Custom Fields」を利用し、WordPressで実現した機能は以下のものだ。

  • スペック項目、単位、内容を1セットとして自由に追加/削除/編集する機能
  • Excelファイルのインポート機能
  • スペック項目の順番を自由に調整する機能

自由なカテゴライズを実現する「Custom Post Types」

WordPressに標準で実装されている分類項目は「投稿分類」のみだが、「Custom Post Types」を利用すれば、管理画面上で分類項目の追加や、その項目に含まれる選択項目の編集ができるようになる。

また、前述の「Advanced Custom Fields」と連携させれば、WordPressでより柔軟な管理画面を実現することができる。

「Custom Post Types」は、次の機能を実現するために利用した。

  • 製品分類以外の分類項目2種の追加とその選択項目の編集

WordPress

WordPressは、プラグインを組み合わせると、使い勝手の良いデータ入力ツールとして活用することができる。

さらに工夫を加えれば、プログラムの知識のないクライアント側で自由なデータ管理さえ実現してしまうCMSとして活用できるようにもなってしまうスグレものだ。

今後もWordPressを活用したCMSについて情報を提供していく予定なので、あなたのより良いWEBサイトづくりの参考になれば幸いである。