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′),
のように記載してください。