はじめに
最近また
BadTrans.B等のWindows向け(もう少し書くとOutlook向け)のメーラーを相手としたウィルスが広がっていますが、みなさんは被害を受けてないでしょうか。
これらのウィルスは
- 開かなけれ感染しない
- ワクチン系ソフトでなんとかなる
などという対処があるのでしょうが、もう少し根本的なところで対処をすべきだと思います。いきなり実行できるファイルを送るな
というところです。 このようなファイル添付を拒否することによって、今後も(ウィルス対応メーラーがもう少し真面目に対応されるまでは)ウィルス感染の経路を断つことができると思います。
今回は、Postfixを用いたお手軽なフィルタリングの方法をまとめてみたいと思います。
Postfixには、内蔵のフィルタリング機能が用意されていますが、標準状態では利用できる設定になっていません。フィルタリングを有効にするためには、設定ファイルmain.cfに以下のパラメータが必要になります。
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
header_checksによりヘッダに対するフィルタリング、body_checks
により本文(ボディ)に対するフィルタリングを行うことを宣言できます。 パラメータにはルールを記述するファイル名(/etc/postfix/header_checks
等)を指定します。 Postfixの起動中にこれらの設定を追加(変更)した場合は、有効にするためにPostfixの再起動を行ってください。RedHat系ディストリビューションであれば、
# /sbin/service postfix reload
で設定を再読み込みして起動しなおしてくれます。
続いてフィルタリングのルールを、先に指定したファイルに書き込んでデータベース化させます。フィルタの書式はヘッダ、本文共に同じで、
/正規表現/ {OK|IGNORE|REJECT}
となっています。正規表現の後に書くOK等の意味は以下の通りです。
- OK
-
許可
- IGNORE
-
なにごともなかったかのように受信するけど配信せず破棄
- REJECT
-
エラー扱いで受信拒否(DSNは500番台を返す)
例をいくつかあげてみましょう。
/^X-Mailer:.*PostMaster General/ REJECT
これはheader_checksに入れるもので、ヘッダX-Mailer
がPostMaaster Generalを含むものであれば拒否します(実際このヘッダを持つメールはほぼspamです)。この手のメーラーはいくつかありますので、そういうメールの特徴を見て適宜含めていけばいいでしょう。
次の例はWindows系(というよりOutlook系)向けウィルス対策で、body_checksに適用させます。
/name=.*\.scr/ REJECT
ファイルの添付は、MIMEという規格により実装されている機能を用いるのですが、この時にファイル名は「
name="ファイル名"」で指定されているため、拡張子がscr(スクリーンセーバーの実行形式ということ)である場合に拒否させてしまうというものです。
これらの情報を適宜作成したあとで、Postfixが実際に使う形式に変換させます。
# cd /etc/postfix
# postmap header_checks (もしくはbody_checks)
変換させると、header_checks.db(もしくは
body_checks.db)が作成されます。これらの形式はPostfixが必要な時に随時読みにいくため、再起動等は不要です。
記述してルールにひっかかったメールは、ログに記録されます。例えばこのような感じ。
Dec 12 07:35:55 com postfix/cleanup[4895]: 33E4E10F24:
reject: body ? name="images.DOC.pif";
from=<***@xxxx.xxxxx.xx.jp> to=<xxxxxxxxx@xxxxxx.xx.jp>
(長いので折りましたが、実際は一行です)
こうすることで、そもそも危険なメールが届かない、という状況に近づけることができます。ただ、ルールを書き違えたり、新しい形式を設定しない、とずぼらなことをすると、余計なものを弾いたり無意味になっていたりするので注意が必要です。