Standing on the Shoulder of Linus

Home / 2014 / 8月 / 19 / 利便性と安全性の両立を目指して、Novius OSでユーザー毎にログインIP制限できるアプリケーションを作りました。

利便性と安全性の両立を目指して、Novius OSでユーザー毎にログインIP制限できるアプリケーションを作りました。

Novius OSでユーザー毎にログインIP制限できるアプリケーションを作りました。

企業サイトなどを作る場合、CMS等でブラウザから操作して更新することが増えてきました。ユーザー認証をIDとパスワードに頼っていると、なんらかの方法でIDとパスワードが漏れた、短いパスワードをつけたユーザーがパスワード総当り攻撃で不正ログインされる、といった危険があります。(Novius OSではパスワードはハッシュ化して保存されているので、データベースを直接見てもパスワードは分からないようになっています。)

ログインIPを制限する

CMSの管理画面にはネットワーク経由でログインすることが多いでしょう。では、ログインする元のネットワーク環境はどうでしょうか。企業サイトの場合、自社のネットワークからのみCMSにログインしてホームページ更新する、というケースもあると思います。そのような場合、ユーザーの接続元のIPアドレスをチェックして、特定のIPアドレスにしておきましょう。そうすれば、IDとパスワードを不正入手されたとしても、ログインされてホームページを改ざんされることを防げます。

ユーザー毎にログインIPを制限する

全てのユーザーが社内ネットワークからのみ更新する、という場合は、比較的楽に設定ができますね。しかし、運用体制によっては、社外から更新することもある、というケースもあるでしょう。そのような場合、ユーザー毎に、ログインIPを定義して制限する、とより良いでしょう。

ユーザー1(管理者)は、社内ネットワークからのみログイン可能
ユーザー2(「お知らせ」の投稿のみ可能)は、どこからでもログイン可能

と決めておけば、外部から管理者のIDでログインされることが防げ、かつ「お知らせ」の更新は外部からも実行できます。

Ip Restrictionアプリケーション

Ip Restrictionアプリケーションでは、ユーザーごとにログイン可能なIPアドレスを列挙する方式にしました。

Novius OS管理画面では、アプリケーションの有効化/無効化のみ、行うことができます。IPアドレスの設定は、設定ファイルで行います。IPアドレスを設定する頻度はそれほど高くないでしょうから、管理画面から操作できなくすることで、不正操作されるリスクを軽減しています。

ip_id.config.phpに、以下のように記述します。

return array(
    // user_id 1 can login from 127.0.0.1
    // user_id 2 can login from either 127.0.0.1 or 192.168.33.10
    '1' => array('127.0.0.1'),
    '2' => array('127.0.0.1','192.168.33.10'),
);

現状ではIPは完全一致で判定しています。将来的には、192.168.1.0/28 のような、IP範囲での指定にも対応させたいと思います。

※2014-8-20追記※
IPアドレスをサブネットマスクに対応しました。

‘2’ => array(‘127.0.0.1′,’192.168.33.16/28′),

のように記載してください。

関連

Posted in cms | Tagged セキュリティ, 管理画面
← nagoya.php第6回に参加しました WordPressセキュリティを考える会 第6回を開催します。 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.