話の流れ
- まとめ
- 手法をSMTP解説交え説明
- お勧めの構成
- なぜかを状況交え説明
- 今後
この話の主な対象
- メールサーバでのスパム受信
- 国内の企業や大学などの中規模メールサーバ
- 主にPostfixでの設定
- 具体的な設定はWeb見て下さい
まとめ
各種手法と代表的なもの
- 受けない手法と送らせない手法
- どこで対策するか
- クライアント(PC)
- サーバ
- ネットワーク
- 受けない手法
- クライアント
- サーバ
- ネットワーク
- IP25B?
- 送らせない手法
ここではサーバの対策手法
- SMTPについておさらい
- 参考
- やまぐちたかのり氏のページ MTA のアクセス制御
- コンテンツフィルタ
- SMTPセッション情報
- HELOの確認
- MAIL FROMの確認
- NSのブラックリスト
- DNSBL
- 複合型
- 動的IPフィルタ
- 中韓フィルタ
- クライアントの動作特徴
- Greylisting
- (postgrey)
- (policy daemon)
- 排除率高い
- 誤検出を拾えない
- 遅延が起る
- 他のサーバへの負荷
- Secondary MXに再送
- (GION)
- Tarpitting
- (greet pause)
- (sleep)
- Pipeliningの確認
- (reject_unauth_pipelining)
- Greylisting
- 送信者確認
- SenderID
- DKIM
おすすめ構成
- 2段フィルタにする
- 1次はセッション情報から
- Starpit (S25R * Tarpit)
- NSブラックリスト
- HELOブラックリスト
- warnでログをとる
- 2次はコンテンツフィルタ
- SpamAssassin
- SpamPD
- Maia Mailguard
- 1次はセッション情報から
なぜこうしたのか
- 完璧な手法の一つのフィルタだけを使うのが美しい
そんなふうに考えていた時期が俺にもありました - HELOやFROM、キーワードで
- メンテコストが掛かりすぎ
- ベイジアンフィルタ(CRM114)
- 重い
- 学習の問題
- ユーザ毎のDBの問題
- SpamAssassin
- さらに重い
- 明らかにスパムは捨てたい
- 負荷が無駄
- ウイルスフィルタも
- ゴミ漁りがうっとおしい
- 負荷が無駄
- Greylisting
- 軽い
- ゴミは捨てられる
- 誤検出の問題
- 遅延の問題
- 他のサーバへの負担
- S25R
- 非常に軽い
- 誤検出が多い
- メンテコストが高い
- S25Rだけで拒否は高リスク
- S25Rで人手でメンテしてる内容はGreylistingと同じ
- 動的IPっぽいとこから再送しないもののみ排除
- GreylistからS25Rを考える
- 抜けてきたものを見る
- それでも抜けるもの
- 素直にコンテンツフィルタ使う
- セッション情報も活用出来る
- 2段それぞれ9割で99%になる
- 確実なものだけ落とせば良い
- より誤検出・副作用を減らす
- Tarpitting
- Tarpit分しか遅延しない
- 再送は実装しなくてもタイムアウト時間は待つだろう
- 一般のMTAで故意に短くしているのはスパムの可能性大
- スパムと同じ出し方だと誤検出
- ポイント系メールマガジン等
- Greylistingで救済
- taRgrey
- Tarpitting
状況
- スパム率
- 70〜80%
- 同一IPから出される期間
- 1時間以内が 75%
- 1日以内が 90%
- IPあたりのスパムメール数
- 3.3通
- 10通までで 97%
- 動的IPっぽい(S25R)率
- ジャンクメール中 98%
- HELOブラックリストでの排除率
- 51%
- HELOでこちらのサーバのIPやFQDNを騙る率
- 34%
- Greylisting排除率
- 93%
- Tarpittingのみの排除率
- 90秒で80%
- Tarpitting待ち時間との関連(Tarpittingで排除される内)
- 35秒で75%
- 65秒で95%
運用のコツ
- warnでログをとる
- 緩く落として抜けたのを観察
- 全メールの検知
- SpamPD
- ログを解析するツールを準備
- 同一IPからの接続期間
- 同一IPからのメール数など
- 確実なものはrejectでも可
- HELOでこちらのサーバを騙る場合など
- セッション情報andで使うために
- smtpd_restriction_classes
- ホワイトリストと捉えOKにする
- SpamAssassinでセッション情報
- PREPEND
- heloやclientのパラメータ有り
- こちらに有利な点
- 送信業者やソフトは限られる
- パターンが決まってくる
- 送信業者と依頼者とに分業
- 法的に追求がしにくいというデメリット
- しかし送信業者は対策されてもそれほど困らないため工夫しない
- ちゃんとタイムアウト時間を調整してるマメな業者はTarpitで排除できる
- 送信業者やソフトは限られる
- 捨てるかユーザに確認させるか
- 人間が誤検出する
- 1万通中100通の正しいメール
- 精度が低ければ人が誤認
- 精度が高ければ確認しない
- 責任を人に転嫁してる
- 人間が誤検出する
- ポイント順にソート
- Maia Mailguard
今後のアイデア
- taRgrey
- SpamAssassinルール自動学習
- reject_* 系を check_* にしたい
- whois情報ブラックリスト
(関連)
Rgrey - S25R + greylisting
モーグルとカバとパウダーの日記 - Starpitでほぼ誤検出無く98%のスパムを排除 (S25R+tarpittingによるスパム対策)
モーグルとカバとパウダーの日記 - Postfix-2.3でsleep中に切断されたらすぐに終了するパッチ
taRgrey - S25R + tarpitting + greylisting (tarpit + greylist policy server)
モーグルとカバとパウダーの日記 - taRgrey - S25R + tarpitting + greylisting
モーグルとカバとパウダーの日記 - ネットワークセキュリティExpert5でpostfixのスパム対策について書きました。
モーグルとカバとパウダーの日記 - SpamAssassinのルールのポイント付けをベイジアンフィルタで自動学習するアイデア
モーグルとカバとパウダーの日記 - whois情報を参照するスパムフィルタはどうだろ?
モーグルとカバとパウダーの日記 - NSブラックリストとその参考情報サイト