対策

ログインアクセスを禁止する方法は残念ながらありません。ですが不正ログインを目的としたアクセスを減らす事は可能です。

それはアクセス元を確認し、アクセスされた場合は二度と処理されないようサーバーにアクセス元のIPアドレスを設定する事です。

設定方法はご利用のサーバーにより異なるため、当方で説明することはできませんのでご了承下さい。

当方ではApacheが動作するサーバー上で、「.htaccess」ファイルに「deny」を利用して特定のIPアドレスからの接続を遮断しています。(時々打ち間違えてアクセスできなくなった連絡を受けたりしてます。どうも済みません。)

なお不正ログインの試みは海外に設置されているコンピューターからのアクセスが殆どです。レンタルサーバー会社により海外からのアクセスを遮断する設定、があるようですので、利用できる場合はご活用下さい。

なお副作用は、海外出張などで海外からのアクセスができなる可能性がある事です。

ログイン

WordPressサイトは、管理者権限のログインを許してしまうと「好き勝手放題」の状態になってしまいます。因みにサーバーに接続するFTP、SSHのログイン情報も同様です。

そこで本サイトにおけるセキュリティの命題は、「管理者権限のログインを他者に許さない」事になります。

WordPressは、ログインページが知られているため誰でもログインを試す事ができます。インストールするディレクトリをサブディレクトリに変更しても、隠す事はできません。ただしサブディレクトリにした場合、機械的にクロールするようなクラッキングに対して有効な場合もあります。

ログインを試す場合ですが、攻撃者は一般的によく利用されると思われるログイン名(例えばadmin)とパスワードの入力を試します。

ですのでログイン名は、一般的に利用されない文字列を使うと安心が高まります。

できる事ならこのログイン名を知られないようにしたいのですが、WordPressでは残念ながら隠蔽する事が難しいです。

これについて対策も含めて、以前別のサイトに記事をアップしておりますので時間があればご覧下さい。

ご紹介の記事にもログイン名を知られないようにする方法を記述しておりますが、その方法はWordPressのプロフィール情報にある「著者名(user_nicename)」を変更するようにする事です。

本プラグインにその機能があります。

 

暗号化通信

暗号化通信を利用するWebサイトに関して「HTTPS」という名称が利用され、URIの表示は先頭に「https://」と記述されます。

暗号化通信の必要性は、通信途上でデータがのぞき見られたとき、パスワードのような重要なデータが知られてしまう事を防ぐ事にあります。

暗号化通信、ここではSSLと呼びますが、SSLの設定は技術的な操作が少し難しく、またお金がかかる事もあり、サイト運営者は避ける傾向にあるかと思います。

あるいは技術者であれば、通信データ量が大きくなるため回線に負担が掛かり、また処理速度が遅くなる事も考え、積極的な採用を見送る傾向があるのではないでしょうか?

SSLを採用するかどうかは、運営するサイトに知られるては困るデータ(例えばログインやパスワードなど)の入出力があるのであれば、必ず導入する事をお薦めします。

インターネットのデータは悪く言うとダダ漏れ状態です。特に危険な箇所はLAN接続されている通信部分です。ハブを介して繋がっているLANでは、流れるデータをキャプチャして中身を見る事が簡単にできてしまうからです。専用ツールはもちろん必要ですが。

即ち、外出先でインターネットを利用する場合、末端の回線がどのような回線、あるいはLANに接続されているか、注意する必要があると言う事です。

WordPressのSSL利用について

コストが掛かり、また導入は面倒ですが、共有SSLの利用を検討せずサイト全体のアクセスをSSL通信すると良いです。

当方も以前は必要な箇所で共有SSLを利用すれば良いと考えておりましたが、現在は考えを改めています。

 

サーバー

「サーバー」はコンピューターを指す場合や、コンピューター上で動作するプログラムを指す場合があります。ここでは両方とも含めて使いますので、前後の文章から推察して下さい。

さて、インターネットにWebサイトを公開するため、多くはレンタルサーバーを利用していると思います。

ここに実は大きなセキュリティーホールがあります。

以前GMO関連会社が運営する「ロリポップ」で大規模なクラッキングが発生しました。2013年になりますが、その際の初動対応が原因で非常に怒りを覚えたのを思い出します。これに関して当方のブログに記事を掲載しております。

ロリポップ大規模クラッキング事件を考える

当初の説明では、「WordPressやプラグインの脆弱性を突いてサイトに不正アクセスされた結果、サイトが改竄された」、というものでした。

当該サイトだけの改竄であればそう思いますが、サーバー全体(1台のみならず)に渡っていたため、サーバー自身に問題があったと思うのが自然でしょう。

これはイコールセキュリティの技術力が劣っていた、という証左になります(現在のことではありません)。

レンタルサーバーが安全であるとは言えない、という一例ですが、その他2014年に発生した「ベネッセ個人情報流出事件」もあります。こちらは下記のリンクにWikiの記事があります。

ベネッセ個人情報流出事件

事件は受験を控える生徒の名前や住所が、サーバー管理を委託した先のオペレータにコピーされ流出した、というものでした。自社で運用するサーバーであっても危険がある、という事例かと思います。

余談ですが実は前年(2013年)、ベネッセが運営していたサイトに関して「クロスサイトスクリプティング」の脆弱性を親切に報告した人物に対し、ベネッセ側はその人のアクセスを制限する、という変な対応をしておりました。

この件も含めて(自分も経験があるため)、少なくとも技術者は情報提供する行動を積極的に取らなくなったのではないか、と感じています。

セキュリティに関する脆弱性は、このように表に出ない(隠されてしまう)事もあります。

サーバー環境は手の届かない部分になりますので、選定する際は評判なども含めてご検討下さい。

はじめに

サイトを安全に保つ事は運営者にとって大変重要な課題です。本ツールを開発した動機も、自分の公開するサイトを不正なアクセスから守りたい、という思いからでした。

ところがセキュリティ対策は幅が広く、手が届かない、あるいは知識が及ばない、そして新しいクラッキング手法が発見されることなどもあり、完全・完璧を目指すのは実際のところ難しい状況です。

ですが不正をする目的を考えれば、そのための対処は可能だと思います。そのような観点で見るとレベルの高いクラッカーがターゲットにするサイトは、

  • 金銭を扱うサイト
  • 大規模ユーザーを抱えるサイト
  • 公的機関が運営するサイト
  • 有名なサイト

などで、不正アクセスする目的は金銭を得るためか、思想・信条を表出するためかの2種類ではないかと思います。

セキュリティ対策をどこまでするか、について、上述の範疇に入るようであればセキュリティの専任者、専用のサイト運用環境が必要になるかと思います。

当方のサイトでは大金を得れる中身はないので、銀行の金庫が家庭に必要ないように、自社でサーバーを運用しなくともレンタルサーバーで大丈夫だろう、と考えております。

本サイトのセキュリティに関する内容はこのような観点から記述したものになるため、内容の取捨選択は各人の判断でお願いします。

 

おまけ機能

本ツールにはおまけとして2つの機能が追加されています。どちらも弊社自身で利用するために制作したものですが、皆様にも有用であれば幸いです。

1.著者名の書換え機能

1−1.はじめに

「著者名」とは、WordPressのユーザー情報に登録される「user_nicename」項目の事で、本サイトでのみの呼称となります。

user_nicename項目は、WordPressでブログ記事をユーザー別に一覧表示する場合に利用されており、このサイトでは便宜上「著者名」としました。公式には定まっておりませんので、弊社だけでの利用となります。

この項目は、フロントエンドにおいてブログ投稿者名の表示には利用されておりません。

1−2.書換えの目的

ユーザー登録をすると、自動的にログイン名と同じ内容が著者名として登録されます。そして特定の著者が投稿した一覧を表示したり、記事を参照する場合のURLに含められます。

ところでログインに関してですが、通常はパスワードを利用して不正アクセスされないようにしています。

ですのでログイン名が知られる事が直ちに危険であることはないのですが、知らない人に自分のログイン名を知られるのも、余り気持ちよくありません。

逆に、パスワードに加えてログイン名も隠蔽できれば、安心が増すというものです。

著者名をこの機能を利用して書き換える事で、WordPress上でログイン名を隠蔽する事ができます。

1−3.使い方

設定・編集のための入力項目は、管理画面上でユーザーのプロフィール編集操作の下部にあります。

著者名の設定・編集

著者名の設定・編集

設定は、管理者権限を有するユーザーのみ操作可能で、それ以外のログインユーザーのプロフィール編集画面には表示されません。

設定や書換えは、この入力項目にログイン名と異なるユニークな名前を入力して保存して下さい。

2.メンテナンスモード機能

2−1.メンテナンスモードとは

サイトを変更している間、他者のアクセス画面は「メンテナンス中」と表示するようにしたい場合があります。

メンテナンスモード表示

メンテナンスモード表示

この機能はWordPressのAPI機能にある「wp_die()」を利用して、管理者以外のアクセスにおいて、設定された文言を表示するようにしたものです。任意のデザインされたページは表示できません。

メンテナンスモードを表示するプラグインはWordPressの公開されているサイトに数多くあるので、利用されている利用者の方は多いと思います。プラグインにより時間を指定してカウントダウン表示を実行したりするものもあります。

本機能は当方のサイト構築において、利用するプラグインを少なくしたい、表示や設定をシンプルにしたい、という考えで機能追加いたしました。

2−2.設定・モード切替

画面に表示する内容の設定、モードの切替は、管理画面にある「ツール」メニュー内に「メンテナンスモード」を追加しました。

メンテナンスモード設定画面

メンテナンスモード設定画面

サイトアクセスで「通常」通り表示するか「メンテナンス中」を表示するかは、「現在のモード」を選択して変更して下さい。

2−3.操作権限について

メンテナンスモードが設定されている状態でサイトをアクセスすると、管理者以外の利用者は「メンテナンス中」が表示されます。

ただしログイン画面は表示する事ができ、ログイン操作が実行できます。

ログインが実行されると、管理者はそのままログイン処理実行後サイトの編集が可能になります。

一方、管理権限のないユーザーは即座にログアウト処理が実行され、「メンテナンス中」の表示に切り替わります。

 

ログインログリスト

ログイン処理を記録した一覧は、管理画面のユーザーメニューの中の「ログインログ」メニューを選択して表示します。

リスト表示のメニュー

リスト表示のメニュー

表示項目

表示項目は次の通りです。

  • ID
    記録時に自動で振られる連番
  • ログイン名
    ログイン名の入力項目に入力された内容
  • パスワード
    パスワードの入力項目に入力された内容、ただしログインが成功した場合は「********」に置き換えて登録しています
  • UserID
    ログインが成功したときのユーザーID
  • ホストIP
    アクセス元となるクライアントのグローバルIPアドレス
  • ブラウザ他
    アクセス元から渡されたユーザーエージェント情報の他、XML-RPCを利用した場合はその内容
  • 日時
    データベースに記録した日時

ログインデータの検索

ログインリストのデータを検索する事ができます。検索で指定できる項目は

  • ログイン名
  • パスワード
  • UserID
  • ホストIP
  • ブラウザ他
  • 日時

です。

複数の項目の「AND」や「OR」検索はできません。検索は、入力された文字列を含むデータを検索するのみです。

情報の見方

人によって異なるかと思いますが、この節は著者(ツール制作者)の主観による解説となります。

1.短時間に繰返し異なるパスワードを利用したログインアクセス

これまでにユーザー名「admin」に対して異なるパスワードを利用しておよそ1万6000回、2時間以上に渡るログイン実行を記録した事があります。

実際の現場を知りませんので推察になりますが、利用頻度の高いパスワードを抽出、辞書を用意し、乗っ取ったサーバーを使ってプログラムを利用して繰返しアクセスしているもの、と思います。

このような攻撃は「ブルートフォースアタック」と呼ばれます。

2.時間間隔が長く異なるIPアドレスからのブルートフォースアタック

アクセス元のIPアドレスが異なるため、アクセス間隔がある程度長いと単発で行なわれているように思われるかも知れません。

海外からのアクセスは日本で社会活動する時間帯とズレているため、時間間隔が空いていても連続して記録されるので、同一の攻撃者が異なるサーバーを利用して繰返しアクセスしているもの、と想像できます。

3.パスワードを失念したログインアクセス

登録ユーザー名で数回異なるパスワードを入力してログインするか、あるいはログインができない場合があります。

4.XML-RPC を利用したアクセス

XML-RPCには、ブラウザの管理画面を利用せずブログの記事を読み出したり、アップしたりする機能があるのですが、データの中に「ログイン名」と「パスワード」を含めるため、アクセスの可否を調べる事ができます。

ただし処理時間が長いため、短時間で突破したい場合は向いていません。実際、最近そのようなアクセスは見なくなりました。

なおこのアクセスはログイン画面を利用しないため、ログイン名やパスワードは空白となります。XML-RPCで受信したデータは、リストの「ブラウザ他」に表示されます。多くの場合は何もデータを送信してこないため、空白を表わす「a:0:{}」(配列で保存しているため)の表示となります。

実はこのアクセスは大変多いのですが、ブルートフォースアタックのように短時間に繰り返される事はなく、それでいて定期的に行なわれ、たまに一定の時間間隔(例えば30分とか40分程度)で10数時間に渡るアクセスがあります。

IPアドレスはブルートフォースアタック同様、同じIPアドレスが利用されている場合もあれば、異なるIPアドレスである場合もあります。

何が目的か分らず不気味な感じです。何かご存知の方がいれば情報をお知らせ下さると嬉しいです。

 

機能紹介

このツールは、WordPressのログインページで入力されたユーザー名とパスワードを記録し、それらを一覧表示するものです。

記録する情報はログインアクセスの他、XML-RPCを利用してリクエストされた入力情報も記録します。

本ツールをご利用いただくと、管理画面上でそれら記録した日時と内容を一覧表示、検索することができるようになります。

おまけ機能として、ログインユーザー名を隠蔽するための著者名(user_nicename)の書換え機能と、サイトアクセスされたとき「メンテナンス中」のページを表示するためのメンテナンスモード機能を追加しております。

なお「user_nicename」について公式Wikiでは「著者名」と呼称していません。本サイトにおいて本ツールを説明する上で、便宜上日本語に置き換えていますのでご了承下さい。