TLEC の user_prefs 松 田 陽 一
SpamAssassin とは POSIX 系 OS で 稼 動 するオープンソースの spam フィルタ perl のスクリプト heuristic なルールベースのフィルタ + ベイジ アンフィルタ +DNSBL+URIBL+Razor2 他 +SPF+DK IM etc... 個 々のルールのスコアを 加 算 して 閾 値 と 比 較 meta ルール ( 複 数 ルールの 論 理 演 算 ) http://d.hatena.ne.jp/keyword/spamassassin
SA の 問 題 点 英 語 圏 で 開 発 されているので 日 本 語 圏 特 有 の 事 情 が 考 慮 されていない デフォルト 設 定 では 日 本 語 spam に 対 し てほぼ 無 力 副 作 用 を 引 き 起 こすルールが 混 じっている ボランティアベース 故 に 玉 石 混 合
TLEC の user_prefs とは 松 田 が 自 分 で 設 定 して 使 用 している SA の ユーザ 定 義 ファイルをそのまま 公 開 ~/.spamassassin/user_prefs 日 本 語 spam に 特 化 したルール アジア 諸 国 の ISP の IP アドレス 範 囲 をルー ルとして 設 定 他 のルールとの meta ルールを 多 用 して f alse positive( 偽 陽 性 ) を 回 避 中 小 企 業 のサーバ 管 理 に 多 く 採 用 されている 模 様 /etc/spamassassin/local.cf
TLEC の user_prefs の 仕 組 み 殆 どの spam は 動 的 IP から 直 接 受 信 者 の MTA へ 送 信 される 日 本 国 内 の 殆 どの ISP は OP25B でこの 形 態 の spam を 排 除 しつつあるが 諸 外 国 の ISP は 全 く 無 策 spam を 受 信 したら 送 信 元 IP を 調 べて ISP の IP アドレス 範 囲 をルールに 登 録 8/17 時 点 で 193 個
TLEC の user_prefs の 利 点 DNSBL 未 登 録 の 動 的 IP から 来 る 日 本 語 spam を 検 出 できる DNSBL は 後 追 い spam は 同 一 ISP の 動 的 IP を 移 動 する 傾 向 あり DNSBL,Razor2 等 のスコアを 低 く 設 定 し meta ルールでスコアを 嵩 上 げしているの で false positive が 比 較 的 少 ない ISP 説 明 文 を 定 型 化 しているので grep す れば spam 送 信 元 ISP がすぐわかる 統 計 処 理 に 便 利
ISP 説 明 文 ISP ルール ISP 名 行 頭 はアルファベット 大 文 字 ISP 名 はアルファベット 大 文 字 と 数 字 と _( ア ンダースコア ) 最 後 の 二 文 字 は 二 文 字 の 国 名 コード ( 初 期 の I SP には 付 されていない ) ISP 説 明 文 (describe) 左 大 括 弧 [ 二 文 字 の 国 名 コード 右 大 括 弧 ] ISP の 説 明 文
ISP 説 明 文 の 一 例 header GLOBALSPEED_PH X-Spam-Relays-Untrusted =~ /^\[ i p=180\.94\.(?:\d [12]\d 3[01])\.\d{1,3} / describe GLOBALSPEED_PH [PH]GLOBALSPEED-PH score GLOBALSPEED_PH 1.5 Content analysis details: (74.8 points, 15.0 required) pts rule name description ---- ---------------------- ---------------------------------------------- ---- 5.5 BAYES_99 BODY: Bayesian spam probability is 99 to 100% [score: 1.0000] -0.1 CONTENT_TYPE_PRESENT exists:content-type 1.5 SHIFT_JIS2 Content-Type: text/plain; charset="shift_jis" 1.5 GLOBALSPEED_PH [PH]GLOBALSPEED-PH 1.0 FORGED_RCVD_IP Invalid IP number, over 255. 10 MSGID_NUMONLY Message-ID: YYYYMMDDHHMM 1.1 MSGID_SHORT Message-ID is unusually short
TLEC の user_prefs の 欠 点 常 に 変 動 する IP アドレスの 付 与 状 況 に 対 応 するため 常 時 spam を 監 視 し 続 ける 必 要 が ある IP アドレスの 登 録 が 大 変 IP アドレス 誤 登 録 に 起 因 する false positi ve に 対 して 弱 い Web メイルサービスを 悪 用 した spam に 弱 い ex.gmail HTML spam 松 田 個 人 しかメンテナンス 作 業 をしていな い
X-Spam-Relays-Untrusted SA の 機 能 pseudo header( 仮 想 ヘッダ ) SA のデバッグモード (-D) で 可 視 化 MTA 毎 に 書 式 が 異 なる Received: ヘッ ダを 正 規 化 直 近 の 送 信 元 IP アドレスが 先 頭 エントリに 来 る http://wiki.apache.org/spamassassin/trustedrelays
一 例 ある spam のヘッダの 一 部 (Received: 行 のみ 抜 粋 ) Received: from pop.mail.yahoo.co.jp [202.93.87.247] by vawr.pblnet.local with POP3 (fetchmail-6.3.9-rc2) for <yoh@localhost> (single-drop); Mon, 17 Aug 2009 08:10:07 +0900 (JST) Received: from 180.94.8.6 (HELO mx1.mail.yahoo.co.jp) (18 0.94.8.6) by mta155.mail.kcd.yahoo.co.jp with SMTP; Mon, 17 Aug 200 9 08:09:42 +0900 yahoo.co.jp の MTA は 送 信 元 IP の 逆 引 きを 行 わない
一 例 $ whois 180.94.8.6 inetnum: 180.94.8.0-180.94.8.255 netname: Warpspeed-2-Tel descr: Wifi Provider in Djibouti country: PH admin-c: Gna30-AP tech-c: Gna30-AP status: ALLOCATED NON-PORTABLE mnt-by: MAINT-GLOBALSPEED-PH changed: globalspeed2010@gmail.com 20090811 source: APNIC $ whois 180.94.20.6 inetnum: 180.94.0.0-180.94.31.255 netname: GLOBALSPEED-PH descr: 5th Flr JY Square Bldg country: PH admin-c: Gna30-AP tech-c: Gna30-AP status: ALLOCATED PORTABLE mnt-by: APNIC-HM mnt-lower: MAINT-GLOBALSPEED-PH
一 例 SA のデバッグ 出 力 の 一 部 抜 粋 $ spamassassin -d < samplespam.txt spamassassin -t -D [31190] dbg: metadata: X-Spam-Relays-Trusted: [31190] dbg: metadata: X-Spam-Relays-Untrusted: [ ip=18 0.94.8.6 rdns=180.94.8.6 helo=mx1.mail.yahoo.co.jp by=m ta155.mail.kcd.yahoo.co.jp ident= envfrom= intl=0 id= a uth= msa=0 ] [ ip=180.94.8.6 rdns= helo= by= ident= env from= intl=0 id= auth= msa=0 ] [31190] dbg: metadata: X-Spam-Relays-Internal: [31190] dbg: metadata: X-Spam-Relays-External: [ ip=18 0.94.8.6 rdns=180.94.8.6 helo=mx1.mail.yahoo.co.jp by=m ta155.mail.kcd.yahoo.co.jp ident= envfrom= intl=0 id= a uth= msa=0 ] [ ip=180.94.8.6 rdns= helo= by= ident= env from= intl=0 id= auth= msa=0 ]
一 例 [31190] dbg: metadata: X-Spam-Relays-Untrusted: [ ip=18 0.94.8.6 rdns=180.94.8.6 helo=mx1.mail.yahoo.co.jp by=m ta155.mail.kcd.yahoo.co.jp ident= envfrom= intl=0 id= a uth= msa=0 ] [ ip=180.94.8.6 rdns= helo= by= ident= env from= intl=0 id= auth= msa=0 ] 上 記 仮 想 ヘッダを 検 出 するルール header GLOBALSPEED_PH X-Spam-Relays-Untrusted =~ /^\[ i p=180\.94\.(?:\d [12]\d 3[01])\.\d{1,3} / describe GLOBALSPEED_PH [PH]GLOBALSPEED-PH score GLOBALSPEED_PH 1.5
ルールの 書 き 方 spam の 特 徴 を 見 極 める spam の 特 徴 を 捉 えた 正 規 表 現 を 書 く
spam の 特 徴 を 見 極 める 類 似 spam を 複 数 用 意 して 見 比 べる grep,pager(jless 等 ), エディタを 使 い 慣 れる From: は 殆 ど 無 意 味 特 定 のメイルアドレスを 登 録 してもいたちごっこになるだけ 但 し 携 帯 電 話 を 偽 る spam を 認 識 する 場 合 は 効 果 的 body よりも header 日 本 語 キーワードは 意 外 に 効 果 が 薄 い mimeheader よりも full mimeheader を 見 るなら 全 てのコンテンツ 定 義 文 字 列 を 見 るのが 良 い
spam の 特 徴 を 捉 えた 正 規 表 現 を 書 く どこからどこまでマッチングさせるかを 明 確 にする 少 しずつ 書 き 足 すとよい なるべく 厳 密 に 書 く false positive 防 止 の 為 *(0 文 字 以 上 マッチング ) はなるべく 避 け る
ルール 作 成 の 注 意 点 full ルールは 行 頭 (^) 行 末 ($) を 認 識 しない ^ はメイル 先 頭 $ はメイル 終 端 ISO-2022-JP/Shift-JIS/UTF-8 等 をマッチ ングさせる 際 は rawbody ルールを 使 う body ルールではマッチングしない (3.2.x の 仕 様 変 更 らしい ) 仮 想 ヘッダは 偽 Received: を 変 換 しない SA は Received: 行 の 正 当 性 をチェックする
ルールの 一 例 Multipart/Alternative な mail なのに body には Quoted-Printable エンコーディングされ た ShiftJIS のプレインテキストしか 付 されて いない spam を 検 出 するルール full MPALTSJISQPONLY /\ncontent-type: multipart\/altern ative;\n\tboundary=\"(--=.+(?:[a-za-z0-9] =_) --[0-9]{1 4,})\"\n(?:.+\n){2,}\n--\1\nContent-Type: text\/plain; (?: charset=\"shift_jis\"){0,1}\ncontent-transfer-encod ing: quoted-printable\n\n(?:(?!\1).+\n \n){2,}--\1--\n/
ルールの 一 例 full MPALTSJISQPONLY / \n 改 行 Content-Type: multipart\/alternative;\n ヘッダの 宣 言 文 \tboundary=\" (--=.+(?:[a-za-z0-9] =_) --[0-9]{14,}) バウンダリ 文 字 列 \"\n (?:.+\n){2,} ヘッダ ( 空 行 でない ) \n 空 行 つまりヘッダと 本 文 との 境 界 --\1\n 本 文 中 最 初 のバウンダリ 文 字 列 Content-Type: text\/plain;(?: charset=\"shift_jis\"){0,1}\n Content-Transfer-Encoding: quoted-printable\n マルチパート 宣 言 文 \n 空 行 (?:(?!\1).+\n \n){2,} 本 文 --\1--\n 本 文 中 最 後 のバウンダリ 文 字 列 ( 行 末 の -- ) /
最 近 の spam の 傾 向 全 spam 中 アジア 発 (APNIC)spam とその 他 (ARIN/LACNIC/RIPE_NCC/AFRINIC) とはほぼ 半 々の 比 率 ALL:59869 ASIA:30889 NOTASIA:28980 ( 直 近 62 日 分 ) 日 本 語 spam は 24% 程 度 全 日 本 語 spam 中 アジア 発 は 98% 日 本 語 spam の botnet 使 用 率 は 低 い? 無 料 web メイルサービスを 悪 用 した spam が 僅 かながら 増 加 傾 向
最 後 に あくまでも 個 人 の 成 果 物 なので 無 保 証 で す 何 か 不 具 合 や 疑 問 点 或 は 改 善 提 案 等 があり ましたら yoh@flcl.org に 御 一 報 願 いま す 質 疑 応 答 等 は http://spamassassin.jp/ で 行 っています
御 静 聴 有 難 うございました