なんとなく、ウィルス対策もしてみることにする。
動機は、spamを少しでもこれではじけるんじゃないかと言うもの。
freeのウィルス対策ソフトでは、H+BEDV って言うのと、f-prot って言うのが有名らしい。
(OpenAntiVirusって言うのも見つけたんだけど、どうもウィルス定義ファイルが更新されてないっぽいので見送った)
で、今回はこのf-protって言うのと、AmaVisって奴と、postfixを組み合わせてメールのウィルス対策をしてみたいと思う。
動機は、spamを少しでもこれではじけるんじゃないかと言うもの。
freeのウィルス対策ソフトでは、H+BEDV って言うのと、f-prot って言うのが有名らしい。
(OpenAntiVirusって言うのも見つけたんだけど、どうもウィルス定義ファイルが更新されてないっぽいので見送った)
で、今回はこのf-protって言うのと、AmaVisって奴と、postfixを組み合わせてメールのウィルス対策をしてみたいと思う。
まずは、portsからsecurity/f-protをインストール。
これは、問題なくクリア。/usr/local/f-prot/tools/check-updates.plに定義ファイルの更新スクリプトがあるので、動かしてみる。
use warningsがないよ!なんて言われるので、調べてみたらこれはperl5.6からの機能らしい。まあ、警告だから気にしないことにする。
続いて、amavisのインストール。portsには、amavis-perlってやつと、amavisd、amavisd-newって奴があってどれにするか悩む。
調べるのも面倒だったので、amavisdに決定。perlは、毎回起動すると遅そうだったので、デーモンが良いよねってことで。あとは、-newの方はバグがあるとかどこかで読んだから。
そいでもって、portsのamavisはf-protじゃなくてNAIのアンチウィルスの評価版を使う、とかどこかで読んだので、ソースから入れようかと思っていたら、MakefileにWITHOUT__UVSCANなんて言うのがあったので、これとWITH_POSTFIXをつけてmakeしてみる。
なんか、勝手にf-protを認識してくれたみたい。
/usr/local/etc/amavisd.confを修正する。
$warnsenderをyesにして、$mailfromを'virusalert'にする。
続いて、postfixの設定を書き換える。
master.cfの最後に以下を追加。
main.cfの最後に以下を追加。
試しに、ウィルスの入ったメールを送ってみたら、無事にvirusalertと送り主に警告メールが送られることが確認できた。
一応、今回の設定(portsで入れたデフォルトに、上記の修正を入れたもの)の説明をしておくと、
最後に、毎日ウィルス定義ファイルが更新されるようにcronを設定する。
更新スクリプトは、/usr/local/f-prot/tools/check-updates.plにあり、中身を読むと、-cronと-quietの二つのオプションがあることがわかる。
当面は、どのくらいの頻度で更新があるか知りたいので、-quietスイッチは付けないことにする。こうすると、更新があったときだけメールが来るのだ。
直接/etc/crontabに追加しても良いのだけれど、今回はperiodicを使ってみることにする。
/usr/local/etc/periodic/dailyディレクトリを作成する。
以下の内容で、900.f-protと言う実行可能ファイルを作る。
追記
上記だと、check-updates.plをcronから実行したときに、unzipがないってエラーになってました。
で、check-updates.plのunzipを呼んでるところを、フルパスで/usr/local/bin/unzipにしたら治ったもよう。
これは、問題なくクリア。/usr/local/f-prot/tools/check-updates.plに定義ファイルの更新スクリプトがあるので、動かしてみる。
use warningsがないよ!なんて言われるので、調べてみたらこれはperl5.6からの機能らしい。まあ、警告だから気にしないことにする。
続いて、amavisのインストール。portsには、amavis-perlってやつと、amavisd、amavisd-newって奴があってどれにするか悩む。
調べるのも面倒だったので、amavisdに決定。perlは、毎回起動すると遅そうだったので、デーモンが良いよねってことで。あとは、-newの方はバグがあるとかどこかで読んだから。
そいでもって、portsのamavisはf-protじゃなくてNAIのアンチウィルスの評価版を使う、とかどこかで読んだので、ソースから入れようかと思っていたら、MakefileにWITHOUT__UVSCANなんて言うのがあったので、これとWITH_POSTFIXをつけてmakeしてみる。
なんか、勝手にf-protを認識してくれたみたい。
/usr/local/etc/amavisd.confを修正する。
$warnsenderをyesにして、$mailfromを'virusalert'にする。
続いて、postfixの設定を書き換える。
master.cfの最後に以下を追加。
amavis unix - n n - 10 pipe user=vscan argv=/usr/local/sbin/amavis ${sender} ${recipient} localhost:10025 inet n - n - - smtpd -o content_filter=※ 最初、参考にしたサイトのこの部分を読み間違えて、全部1行で書いてしまってはまった。
main.cfの最後に以下を追加。
content_filter = amavis:最後に、amavisdを起動して、postfixの設定を有効にすれば完成。
# /usr/local/etc/rc.d/amavisd.sh start # postfix reload
試しに、ウィルスの入ったメールを送ってみたら、無事にvirusalertと送り主に警告メールが送られることが確認できた。
一応、今回の設定(portsで入れたデフォルトに、上記の修正を入れたもの)の説明をしておくと、
- /usr/local/etc/amavisd.confの設定では、以下のような感じになる。
- ウィルスチェックにはf-protを使う。
- ログは、/var/amavisに溜まる。
- ウィルス管理者と、送信者に警告メールを送る。
- ウィルスメールは、/var/virusmails に溜まる。
- postfixは、localhostの10025にいる。
- ウィルスメールのfromはvirusalert。
- ウィルス管理者はvirusalert。
- /usr/local/etc/rc.d/amavisd.shでamavisdがOSの起動時に起動する。
- /usr/local/etc/postfix/master.cfの設定では、以下のような感じになる。
- amavisと言う名前のcontent_filterは、vscanと言うユーザ(portsからのamavisdのインストール時に作成される)で、/usr/local/sbin/amavisと言うコマンドにpipeで渡される。
- localhostの10025でsmtpdが起動する。このとき、content_filterの設定を上書きしてamavisを呼ばないようにする。(つまり、通常の25番ではamavisを呼び、amavisが10025を呼ぶ。10025はそのままメールを配送する。
- /usr/local/etc/postfix/main.cfの設定では、以下のような感じになる。
- content_filterとして、amavisを呼ぶ。(master.cfの設定)
最後に、毎日ウィルス定義ファイルが更新されるようにcronを設定する。
更新スクリプトは、/usr/local/f-prot/tools/check-updates.plにあり、中身を読むと、-cronと-quietの二つのオプションがあることがわかる。
当面は、どのくらいの頻度で更新があるか知りたいので、-quietスイッチは付けないことにする。こうすると、更新があったときだけメールが来るのだ。
直接/etc/crontabに追加しても良いのだけれど、今回はperiodicを使ってみることにする。
/usr/local/etc/periodic/dailyディレクトリを作成する。
以下の内容で、900.f-protと言う実行可能ファイルを作る。
#!/bin/sh # if [ -r /etc/defaults/periodic.conf ] then . /etc/defaults/periodic.conf source_periodic_confs fi /usr/local/f-prot/tools/check-updates.pl -cron exit $#periodicスクリプトの終了コードは、0が正常、1が情報、2が異常なのだが、とりあえずcheck-updates.plの終了コードをそのまま返してみる。本当は、更新がなければ0、あれば1とかにしたいんだけど・・・。
追記
上記だと、check-updates.plをcronから実行したときに、unzipがないってエラーになってました。
で、check-updates.plのunzipを呼んでるところを、フルパスで/usr/local/bin/unzipにしたら治ったもよう。
トラックバック(0)
このブログ記事を参照しているブログ一覧: ウィルス対策
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/259
コメントする