水曜日, 7月 25, 2007

変なReceivedヘッダを蹴る

 受信したスパムのReceivedヘッダである。なお、a.reto.jpは私のサーバのFQDNである。

Received: from ns2.digis.net (ns2.digis.net [208.186.134.102])
 by a.reto.jp (Postfix)
 with ESMTP id D43261C473 for <deo@gabacho-net.jp>;
 Wed, 4 Jul 2007 17:46:20 +0900 (JST)
Received: from 66.235.192.212 (HELO mail.synet.biz)
 by gabacho-net.jp
 with esmtp (Q*=<G/58F 9A=X) id AW2GCD-Q7,,,6-// for deo@gabacho-net.jp;
 Wed, 4 Jul 2007 09:08:15 +0800

 私のサーバが受信する前のReceivedヘッダに「by gabacho-net.jp」という記録がある。gabacho-net.jpは私の(つまり宛先の)メールドメイン名であり、かつgabacho-net.jpというFQDNを持つサーバはこの世に存在しない。どうせボットの仕業だろうが、どういう仕組みでこうなるのか、敵がどういう考えでこんな記録をReceivedヘッダに残すようにしたのかはわからない。2007年に入ってから受信したスパムのうち半数近くにこのような変なReceivedヘッダが付いていた。
 Receivedヘッダに「by gabacho-net.jp」とあれば間違いなくスパムなので、ヘッダチェックで蹴飛ばすようにした。
 main.cfファイルに次の行を設定する。

header_checks = regexp:/etc/postfix/header_checks

 header_checksファイルには次の行を書く。

/^Received:.* by gabacho-net\.jp/ REJECT Fake Received header

 HELOアドレスチェックもS25Rのクライアントアドレスチェックも送信者ドメインの実在チェックもすり抜けた、スパムに違いないアクセスが見事に蹴飛ばされていた(論文に掲載している拒絶記録抽出スクリプトによって、ログの行から日付および「reject:」以降を抽出して表示している。下線部分はヘッダに書かれていた文字列)。

Jul 25 17:05:25 reject: header Received: from 72.22.69.27 (HELO mail.ammgroup.org)?     by gabacho-net.jp with esmtp (N8VRXWO*RO0' 4./62)?     id @9G5FR-A(FQG4-34?     for deo@gabacho-net.jp; Wed, 25 Jul 2007 08:05:35 -0300 from wdc-gw.obninsk.org[83.166.112.151]; from=<lehammgroupcah@ammgroup.org> to=<deo@gabacho-net.jp> proto=ESMTP helo=<wdc-gw.obninsk.org>: 5.7.1 Fake Received header

 このテクニックは、自サイトのユーザーのメールドメイン名(「@」の右」)と同じFQDNを持つサーバが存在しない場合にのみ使える。たとえば、自サイトのメールサーバのFQDNがhost.example.jpで、ユーザーのメールアドレスがuser@example.jpの形である場合は使える。Receivedヘッダに「by example.jp」と記録するサーバは存在しないのだから、不正メールと判定できる。
 しかし、メールサーバのFQDNがそのままメールドメイン名になっている場合(すなわち、ユーザーのメールアドレスがuser@host.example.jpの形である場合)は使ってはならない。自サイトのサーバがReceivedヘッダに「by host.example.jp」と記録するし、そのメールが外から自サイトへ戻ってくることがあるからである。自サイトのユーザーが外部のメーリングリストに投稿したメールが自サイトに配信されてきた場合などである。

0 件のコメント: