2015年7月9日木曜日

たかが一行、されど一行:ClamAV + Amavis-new + Postfixでウイルス対策

はー。死ぬかと思った。こんばんわ。
今日はメールサーバーのお話です。ていうか懺悔。

実は先日、一年ほど前に立てたメールサーバーでちょっとやらかしちゃいまして。
bad_headerが理由で、メールが配信されずに削除されちゃって、ユーザーさんにご迷惑をおかけしてしまいました。
せっかくだから、もう一度サーバの設定を見直そうと思ったわけです。


例によってグーグルせんせーに教えを請いまして。
メールヘッダがぶっ壊れてるメールへの対処は「/etc/amavisd/amavisd.conf」の、$final_bad_header_destinyですればいいんだな、ふんふん、なるほど。
「$final_bad_header_destiny = D_PASS;」ってやっとけばヘッダが壊れてようが華麗にスルーか、なるほどなるほど、ああ現代人にはスルー力が足りないよな、とか、のん気に構えていました(まだこの時点では)。

$final_virus_destiny・・・へー・・・これ、ウイルスメールを華麗にスルーするかどうかって設定か・・・。
ほんとうはウイルスはがっちりサーバーで削除するのがいいんだけど・・・。
誤検出とかあったら、またこっぴどく怒られるしな・・・
いやいやでもでも、ウイルスメールをユーザーに華麗にスルーそのまま配信するってどうなの・・・?やっぱり削除しといて、隔離するべきじゃない?
どうしようかな・・・。

ま、結局「$final_virus_destiny = D_DISCARD;」にして、削除+隔離することにしました。
あとは隔離する先のディレクトリを設定。
$QUARANTINEDIR = "/var/virusmails";」、これでよし。
amavisdと念のためpostfixも再起動して。
まあ念のためにテスト用ウイルスメールで、隔離動作を確認しときましょうか。

テスト用ウイルスはここからダウンロードできるみたいですね。
でも、もっと簡単な方法が。
この記事「必ずスパムと判定されるメールと、ウィルスの作り方」を参考にさせていただきました。
以下の文字列を貼るだけ。わー便利!ちょーかんたん!
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
ほくほくほく。やっぱ簡単なのがいいよねー。
別のパソコンからメーラー起動してー。メール本文にさっきのウイルス文字列(w)コピペしてー。宛先を自分にしてー。送信ッ!ひゃっはー。
そそくさと「tail -f /var/log/maillog」を実行して、ログを監視。
でっきるっかな でっきるっかな♪

Jul  8 12:46:34 myserver amavis[25298]: (25298-01) Passed CLEAN {RelayedInbound}, [xxx.xx.xx.xx]:35856 [xxx.xx.xx.xx] <admin@mydomain.com> -> <user@mydomain.com>, Message-ID: ...

・・・。え?ぱす?クリーン?きれい?
ウイルスにひっかかったら「Blocked INFECTED (Eicar-Test-Signature)」ってでるんじゃないの?えええええ!?
あわてて、ウイルスメールの隔離先として設定した「/var/virusmails」を確認・・・予想通り、なーんもない。からっぽ。

さてここから苦悩の時間がはじまりました。
なになになに?えっウイルスとして認識されてないってこと?ウイルス定義が古いのか?いやいや毎日更新するスクリプト作ったし!もしかしてLocalSocketあたりが違う?あばばばそもそもこのテスト用ウイルスって信用できるのー?いやいやそれじゃテストの意味ないしそもそもこういうの信用しないと本当にウイルスメールなんか用意できるわけないしおあおうぇいとぉえwそいいえちwsっを!!!

・・・。
ま、結論からいうと、
/etc/amavisd/amavisd.conf」の「@bypass_virus_checks_maps = (1); 」がコメントアウトされてました・・・。
そっかー・・・そもそもウイルスチェック自体を華麗にスルーしてたのか俺は・・・。
「まさかそんな」って思い込みのせいで発見が遅れました・・・

で、この行をコメントして、amavisd再起動して・・・テストのウイルスメール送信したら・・・
さくっと・・・
Blocked INFECTED (Eicar-Test-Signature) {DiscardedInbound,Quarantined}
はい、ちゃーんと隔離もされてました・・・あわててGoogleで事例調べまくって振り回されたりせずに、設定ファイルを一つずつ冷静に吟味してたら、もっと早く復旧できたよなー・・・
反省。自戒の意味をこめて、今日はこのブログを書きました。

ま、そのあと「(!)ClamAV-clamd av-scanner FAILED: 」なんてエラーがでて、もうひと慌てしたんですが。
これは「/etc/clamd.conf」に、/var/配下をスキャンの除外フォルダとして指定してたためでした。
さすがにこれはすぐわかった。といっても一通りGoogleで検索して、わちゃわちゃしましたが(笑)
#ExcludePath ^/var/
ま、なんにせよ、日付が変わる前に致命的なところは解決してよかった。めでたしめでたし。






0 件のコメント:

コメントを投稿