| Security
Tips |
|
|
 |
QuickMLでメンバーを容易に追加できないようにする
宮本 久仁男
2004/10/6
|
QuickMLとは、手軽にMLサーバを構築、運用するためのRubyプログラムである。利用者も多いが、QuickMLで運用しているMLサーバに対して攻撃を仕掛けてくる人がいるとも聞く。QuickMLのコンセプトと異なるテーマではあるが、そういう攻撃をはじくような設定2つをここでは紹介する。どちらの方法もQuickMLを稼働させているサーバ上にてroot権限で作業する必要がある。
なお、この検証は、QuickMLサーバのプログラムを配布アーカイブからインストール、運用しているような環境を想定している。設定ファイルは/usr/local/etc/quickmlrcに、ML設定ファイルは/usr/local/var/lib/quickml配下に存在する「ML名」で始まる複数のファイルである。
●MLサーバの動作権限を変更し、メンバーを記録した設定ファイルをユーザーが書き込みできないように設定する
QuickMLは、quickmlrcファイルの中の「:user」および「:group」の指定を変えることで、QuickMLサーバの動作ユーザーを変更することが可能である。quickmlrc.sample(設定ファイルのサンプル)中ではrootに設定されている。
これを利用して、
- 動作権限を一般ユーザーのものにする
- メンバーを記録したファイルのみ所有者を変更し、そのユーザーが書き込みできないようにする
としておく。
今回は、QuickMLの動作権限をユーザー、グループをquickmlとし、その中でsample@atmarkitというファイルのみ所有者を変更した。
-rw-r--r-- 1 wakatono root 39 Sep 22 08:07 sample@atmarkit
-rw-r--r-- 1 quickml quickml 12 Sep 22 08:08 sample@atmarkit,charset
-rw-r--r-- 1 quickml quickml 145 Sep 22 08:30 sample@atmarkit,config
-rw-r--r-- 1 quickml quickml 2 Sep 22 08:08 sample@atmarkit,count |
この設定を行った状態でユーザーを追加しようとすると、以下のようなエラーがログに残る。
2004-09-22T08:30:59: MAIL FROM:<wakatono@example.org>
2004-09-22T08:30:59: RCPT TO:<sample@atmarkit.ml.example.com>
2004-09-22T08:30:59: From: wakatono@example.org
2004-09-22T08:30:59: Cc: wakatono@mail.example.net
2004-09-22T08:30:59: bare From: "Kunio Miyamoto" <wakatono@example.org>
2004-09-22T08:30:59: bare Cc: <wakatono@mail.example.net>
2004-09-22T08:30:59: Closed: localhost
2004-09-22T08:30:59: Unknown Session Error: SystemExit:
2004-09-22T08:30:59: /usr/local/lib/site_ruby/1.6/quickml/utils.rb:72:in `exit'/usr/local/lib/site_ruby/1.6/quickml/utils.rb:72:in `safe_open'/usr/local/lib/site_ruby/1.6/quickml/core.rb:242:in `save_member_file'/usr/local/lib/site_ruby/1.6/quickml/core.rb:647:in `add_member'/usr/local/lib/site_ruby/1.6/quickml/core.rb:868:in `add_member'/usr/local/lib/site_ruby/1.6/quickml/core.rb:885:in `submit_article'/usr/local/lib/site_ruby/1.6/quickml/core.rb:884:in `each'/usr/local/lib/site_ruby/1.6/quickml/core.rb:884:in `submit_article'/usr/local/lib/site_ruby/1.6/quickml/core.rb:956:in `submit'/usr/local/lib/site_ruby/1.6/quickml/core.rb:990:in `process_recipient'/usr/local/lib/site_ruby/1.6/quickml/core.rb:986:in `synchronize'/usr/local/lib/site_ruby/1.6/quickml/core.rb:986:in `process_recipient'/usr/local/lib/site_ruby/1.6/quickml/core.rb:1006:in `process'/usr/local/lib/site_ruby/1.6/quickml/core.rb:1005:in `each'/usr/local/lib/site_ruby/1.6/quickml/core.rb:1005:in `process'/usr/local/lib/site_ruby/1.6/quickml/server.rb:249:in `process'/usr/local/lib/site_ruby/1.6/quickml/server.rb:266:in `_start'/usr/local/lib/site_ruby/1.6/quickml/server.rb:265:in `timeout'/usr/local/lib/site_ruby/1.6/quickml/server.rb:265:in `_start'/usr/local/lib/site_ruby/1.6/quickml/server.rb:278:in `start'/usr/local/lib/site_ruby/1.6/quickml/server.rb:316:in `process_session'/usr/local/lib/site_ruby/1.6/quickml/server.rb:298:in `accept'/usr/local/lib/site_ruby/1.6/quickml/server.rb:297:in `initialize'/usr/local/lib/site_ruby/1.6/quickml/server.rb:297:in `new'/usr/local/lib/site_ruby/1.6/quickml/server.rb:297:in `accept'/usr/local/lib/site_ruby/1.6/quickml/server.rb:352:in `start'/usr/local/sbin/quickml:79:in `main'/usr/local/sbin/quickml:81 |
●ML設定ファイルの属性を変更し、QuickMLサーバプログラムからのユーザー追加ができないようにする
この方法は、以下の条件をすべて満たす場合に威力を発揮する。
- 何らかの理由でQuickMLサーバをroot権限で動作させなければならない
- MLサーバにchattrコマンドが使えるLinux系OSを使用している
具体的な方法は、 「ファイルに対する書き込みを『追記モード』でのみできるようにする」というものだ。
まず、メンバーを記録したファイルに対して、root権限でchattr +aを実行する。設定されているかどうかの確認は、lsattrコマンドを使うことで可能だ。
# lsattr sample\@atmarkit
-------------- sample@atmarkit
# chattr +a sample\@atmarkit
# lsattr sample\@atmarkit
----a--------- sample@atmarkit |
この属性の付与の仕方はLinuxのext2ファイルシステム独自のものである。ほかのOSでも同様の設定が可能なものもあるので、読者の環境に合わせて試してみてほしい。
なお、このような設定を施した状態でのメンバー追加は、やはり前述の例と同じエラーになる。どちらの場合も、QuickMLサーバは継続して稼働し続けるが、エラーになったメールはそれ以上処理されないので注意のこと。
TechTargetジャパン
Security&Trust フォーラム 新着記事
キャリアアップ

**先週の人気講座ランキング**
〜 Android編 〜