まっちゃ445勉強会

虎ノ門、金沢工業大学のサテライトキャンパスをお借りして開催された、まっちゃ445勉強会に行ってきた。
自分としてはあまり馴染みのない分野なので、結構よい勉強になった。

体感的には、一日に100〜200通の迷惑メールを受け取っているような気がする。
まぁ、OSSの開発などでメールアドレスを公開しているのでこの辺は仕方ない。

本当にこんなのに引っ掛かる人が居るのかいな?と思うメールばかりだが、
まぁ、100万通ばら撒けば、1万人に1人のバカが100人は釣れるというロングテール戦略なんだろう。

浅見さんのS25Rと、佐藤さんのtaRgreyの話は、迷惑メールをばら撒くのに使われているボットネットワークの特性を活かした対策。
確かに、IP逆引きが不可能、相手先MTAの再送要求に応えないとか、接続を10秒で切っちゃうとかは通常のメールサーバでは考えにくい実装なので、迷惑メール発信源の判定基準としては面白い。

ただ、この辺の対策手法の寿命ってどれくらいだろうかとも考えてみた。

IP逆引きの問題は置いておいても、SMTPを真面目に実装しているかどうかというのは誰かがライブラリを作ってしまえば終わるんじゃないの?とか、MTAからの応答を遅延させてもスレッドを100個作って同時に複数のメールサーバに接続すれば、ボットの目的である『短時間に大量のメール』は達成されそうな気がする。

まぁ、一個の方法に頼らないというのはセキュリティの鉄則。

須藤さんの milter manager の話は面白かった。
というのも、迷惑メール対策ではなく、機密情報の漏えい対策として自分の考えていたアイデアに応用が効きそうだったので。

不勉強にして知らなかったが、milterというのはMTAが受信したメールの処理を進める際に、背後で動いてメールをどう処理するか(DROPするとか、ヘッダを挿入するとか)の意思決定を行うモジュール。

SELinuxの場合、getpeercon()というAPIにソケットのファイルディスクリプタを与えると、TCP/IP接続の相手先プロセスのセキュリティコンテキスト(ユーザ権限みたいなもの)を取得できる。
セキュリティコンテキストというのは所詮文字列なので、一旦、OSの機能を使ってそれを取得すれば、あとはSELinuxのポリシーに基づいてメールの配送を許可するか否かという意思決定を行うだけになる。

SELinuxのポリシーはファイルシステム等へのアクセス制御にも効いてくるので、、、

  • 秘密情報にアクセスできるユーザは、メールに秘密情報が混じっている可能性があるので、外部へのメール送信を許可しない。
  • 秘密情報にアクセスできないユーザは、メールに秘密情報が混じっている可能性はないので、外部へのメール送信を許可してもよい。

というような判断を実装できそう。(アイデア自体は前から考えていたが)
あとで聞いてみたところ、milter自体はMTAの外側で動作するので、MTA自身がgetpeercon()を呼んで、文字列としてセキュリティコンテキストをmilterに渡す拡張が必要っぽいが、こういう pluggable な仕組みがあると、思わぬところで使い道が出てきそうなものだ。

懇親会。
新橋のTAPAで注文用の情報端末をリセットして管理モードでブートさせる会。
やっぱり、こういう面子の集まる会で、アルコールとガジェットを与えると、そうなりますねw