a-blog cms で不正ログイン対策 - アクセス設定とログインURL編

a-blog cms Advent Calendar 2022 6日目の記事です。


先月のイベント a-blog cms Live Vol.8 で、a-blog cms での不正ログイン対策についてお話しさせていただきました。

内容は初心者向けで「不正ログイン(不正アクセス)ってなんだろう?」「a-blog cms でユーザーログインのセキュリティ対策ってできるの?」という方でも聞いていただける内容になっています。

※本ブログは動画よりテキスト派の方向けに内容起こしをする予定でしたがついでに再整備しているので動画内容と異なる部分があります。

不正ログインとは

不正ログインとは「不正アクセス」の中の一つで、本来アクセス権限を持たない者がシステム内部にログインする行為のことです。

a-blog cms に置き換えると、 『管理者ではない人が何かしらの手段でログインIDとパスワードを入手し、サイト(CMS)にログインすること』 ということになります。


a-blog cms ログイン画面に不正ログインしようとしている様子のイメージ

良く耳にする用語としては「なりすまし」なども該当します。

不正ログインの動向

不正アクセス行為の発生状況については、総務省のサイトに載っている「不正アクセス行為の発生状況及びアクセス制御機能に関する技術の研究開発の状況」という報道資料から確認できます(2022/12現在)。

2017年(平成29年)〜2021年(令和3年)までの不正アクセスの検挙件数を手口別にまとめられた表が下記です。本ブログで取り扱う不正ログインは、「識別符号窃盗型」に該当します。


「不正アクセス行為の発生状況及びアクセス制御機能に関する技術の研究開発の状況
- 不正アクセス行為の発生状況 別紙1」(総務省)を切り抜いて使用


識別符号窃盗型の検挙数は、2020年(令和2年)576件、2021年(令和3年)398件でした(上記表にはないですが、不正アクセス全体の認知件数は、2020年2,806件、2021年1,516件)。

少ないように見えるかもしれませんがこれは気づけている数の話です。侵入されていることに気づけなかった潜在的な被害が何件あるかは未知数です...。

※セキュリティ・ホール攻撃型について

今回セキュリティ・ホール攻撃型についてあまり触れませんが、その対策としてやっておきたいことはCMSなどのサイト構築に関わるシステムを最新に保つことです。

a-blog cms のバージョンアップ情報については定期的にリリースノートをチェックするか、メルマガ登録がおすすめです。

a-blog cms のバージョンアップ情報取得先

a-blog cms でできるアクセス制限

そろそろ不正ログインに対して警戒心が強まってきた頃と思います!
ここからは a-blog cms で出来る対策についてアクセス設定とログインURL変更の2点に絞って書いていきます。

アクセス設定ページ概要

設定画面は CMS管理画面 > コンフィグ > アクセス設定 から開きます。 アクセス設定では2重ロックのようなことができるので、悪い人にIDやパスワードを入手されてしまったとしても、簡単にはログインさせないという設定が可能です。

設定項目は3つです。

  • ログイン制限
  • 権限制限
  • Basic認証

ログイン制限と権限制限


アクセス設定画面(上部)

ログイン制限と権限制限は、ログインするパソコンなどのIPアドレスを指定することで信用できないIPアドレスからのCMSログインをブロックする機能になります( IPアドレスはインターネット上の住所みたいなものです)。

自分が使用しているグローバルIPを調べる方法としてターミナルやコマンドプロンプトなどの黒い画面でコマンドを打つというのがメジャーな方法かと思いますが、a-blog cms なら基本的にクイックサーチで調べることができます。 CMSログインした状態で ⌘ + K(Ctrl + k)をしてクイックサーチ画面を開き、「%REMOTE_ADDR」と打ち込むと自分のIPアドレスが表示されます。


※IPアドレスがうまく取得できない場合は「接続元IPアドレスが正しく取得できない・ログイン制限が正常に動作しない」ページを参照してみてください。解決口になるかもしれません。

ログイン制限とアクセス権限はどちらもIPアドレスでの制限になりますが、チェック範囲と細かい設定内容が異なります。

ログイン制限

ログイン時にのみIPチェックを行います。許可リストの他に拒否リストの設定ができるので、怪しいIPがわかっている場合はブラックリストのように設定しておくことも可能です。

権限制限

管理ページ読み込み時などCMSとの情報やり取りが発生するごとにIPチェックをします。また、管理者や編集者のようなユーザー権限との組み合わせも可能です。ログインだけくぐり抜ける悪い人がいたとしても、この機能を使えば動作ごとにチェックが走るのでより厳しく細かくチェックすることができます。

このように、IPアドレスの制限設定をしておけば「社内でしかログインできないようにする」などアクセスする場所(繋げるネットワーク)を制限することができるので、悪い人によってどこかで勝手にログインされる事態を防ぐことができます。

ただし設定値を間違えると自分や関係者がログインできなくなってしまう恐れがあるので、設定は慎重に行います。

Basic認証


アクセス設定画面(下部)

ログイン制限と権限制限は管理画面の閲覧を制限する機能でしたが、Basic認証はサイトの閲覧自体に制限をかける機能です。サイト閲覧用の鍵となるユーザー名とパスワードをあらかじめ設定しておき、その鍵情報を持っていないとサイトが見れないようにします。

ベーシック認証は公開前サイトを制作関係者だけが閲覧できるようにする時などによく利用されます。しかし、毎回ユーザー名とパスワードを入力するのが手間という場合もあります。そんな時に便利なのが認証スキップ機能です。あらかじめ信頼できるIPアドレスを設定しておけばそのIPアドレスからのアクセスだけBasic認証をスキップすることができます。

注意点

管理画面からBasic認証を行う場合に注意点があります。
サイト開発時に設定する場合、制作の中でコンフィグが増えたり新たな制作関係会社が増えたりすることがあると思います。その時、多数のコンフィグを扱っているとそのすべてのコンフィグでBasic認証を調整しなければなりません。2つほどであればいいのですが、3つ4つと増えるとその分設定設定が大変になってきます。

コンフィグが複数になる場合はミスの危険を減らすためにも管理画面からの設定は諦めて、.htaccess ファイルを使った方が安全です(サーバーの種類によっては.htaccess では設定できないので注意)。

CIDR記法はとりあえず "/32"

ここまでで、アクセス設定について解説してきましたが実は触れていないことがあります。それは、IPアドレスを指定する時に必要となるCIDR(サイダー)記法です。

今まで初心者向けと言ってきましたが使いこなすにはCIDR記法をマスターする必要があるのです...。しかし、ひとまず先ほど紹介したグローバル変数の %{REMOTE_ADDR} で確認したIPアドレス指定をしたいということであれば、後ろに「/32」をつけてください!

例)192.168.99.100/32

「/32」をつけることでそのIPアドレスというピンポイントな指定ができます。そしてCIDR記法をマスターすれば範囲指定もできるようになります。

ログインURLの変更方法

いままで「不正ログインがされそうになったとき」を想定した話をしましたが、そもそもログインページ自体を隠してアクセスさせないようにするという対策も合わせて紹介ます。

a-blog cms のデフォルトのログインURLは、スラッシュログインかと思います。
例)https://example.com/login/

このログインURLは、良く言えば分かりやすく忘れにく使い易いのですが、悪い人からみると推測しやすいURLなのでそれっぽいURLを総当たりされたら簡単にログイン画面を見つけることができてしまいます。

そこでログインURLを複雑化し管理画面への入口を隠すのも対策の一つと言えます。

設定はIPアドレス制限よりも簡単で config.server.php ファイル の LOGIN_SEGMENT 値を変更するだけでログインURLを変更できます。

define('LOGIN_SEGMENT', 'fukuzatunayuarueru');

IPアドレスの設定よりも簡単なのでとりあえずすぐにでも対策したいという時に使いたいテクニックです。

設定する文字列は半角英数字と、記号は特殊文字以外で構成するのが無難です。予約語も避けておきます。

最後に

セキュリティの高め方については、デバックモードをOFFにすることやHTMLコメントは非表示になどの基本的なことから、フォームを設置するときの入力チェックや読者機能の設定など気をつけたいことは探せばまだ沢山あります。

本記事で紹介したことはセキュリィについてのほんの一部ですが、この記事を読んでくれた皆さんのセキュリティ意識が少しでも高まってくれたら嬉しいです。

a-blog cms Advent Calendar 2022 はまだまだ続きます!☆彡

セキュリティ強化についておすすめの記事

公式サイトでチェックしておきたいページ

記事内に書いていない参考サイト


タグ