ClamAV のインストール
目次
- 概要
- ClamAV の特徴
- 導入する環境
- ClamAV のインストール
- ClamAV の設定
- ClamAV の起動
- sendmail の設定変更
- clamd-milter の起動
- 動作確認
- 自動起動の設定
- ファイルやディレクトリの状態
- ClamAV の更新
- 参考
概要
メールの流通において、スパムやウィルスの増加に伴い、エンドユーザのパソコンだけでなく、サーバにおけるウィルス対策への要求が大きくなっています。
Clam AntiVirus (以下、ClamAV。) は、GPL で提供されているウィルス対策ソフトウェアで FreeBSD でも利用できます。コマンドラインからだけでなく sendmail の milter インターフェイスをサポートしており、メールサーバへの適用が容易です。
ここでは、FreeBSD の ports からのインストールと設定、milter の利用についてまとめます。
ClamAV の特徴
ClamAV の特徴は次の通りです。
- コマンドラインスキャナ
- 高速でマルチスレッドに対応したデーモン
- sendmail の milter インターフェイス
- 署名に対応したデータベースの自動更新
- C 言語から呼び出し可能なライブラリ
- FreeBSD と Linux に対応
- 45000 以上のウィルス・ウォーム・トロイの木馬に対応
- RAR (2.0), Zip, Gzip, Bzip2, Tar, MS OLE2, MS Cabinet files, MS CHM (Compressed HTML), MS SZDD に対応
- mbox と Maildir, raw mail files に対応
- Portable Executable files compressed with UPX, FSG, and Petite
導入する環境
ClamAV のインストール
ports から ClamAV をインストールします。
# cd /usr/ports/security/clamav # make clean # make install
- "Compile the milter interface" をチェックして [OK]
- clamav の実効ユーザとグループは自動的に生成されます。
- /usr/local/sbin/* と /usr/local/bin/* に実行ファイルが、/usr/local/etc/* に設定ファイルが、/usr/local/etc/rc.d/* に起動スクリプトが、/usr/local/lib/* にライブラリが配置されます。
# rehash
インストールされたコマンドが検索できるように rehash しておきます。 お好みに応じてテストを実行します。
# cd work/clamav-0.88/test # clamscan clam.cab clam.cab: ClamAV-Test-File FOUND ----------- SCAN SUMMARY ----------- Known viruses: 42108 Engine version: 0.88 Scanned directories: 0 Scanned files: 1 Infected files: 1 Data scanned: 0.00 MB Time: 1.077 sec (0 m 1 s)
こんな感じに表示されれば、テスト完了。
# make clean
使ったディレクトリは、きれいにしておきます。
ClamAV の設定
/usr/local/etc/* にある 2 つの設定ファイルを編集します。
# cd /usr/local/etc # vi clamd.conf
clamd.conf の主な設定項目は次の通り。
LogTime | これを有効にしないと、ログにタイムスタンプが付きません。 |
LogVerbose | 詳細なログを生成します。 |
StreamMaxLength 50M | 処理するメールサイズの最大値を指定します。デフォルトだと少し小さい気がします。お好みで。 |
ScanOLE2 | MS Office シリーズのマクロウィルス対応。 |
ScanArchive | アーカイブファイル内のウィルス対応。 |
ArchiveMaxFileSize 50M | 処理するアーカイブの最大値を指定します。デフォルトだと少し小さい気がします。お好みで。 |
# cd /usr/local/etc # vi freshclam.conf
freshclam.conf の主な設定項目は次の通り。
DatabaseMirror db.jp.clamav.net | デフォルトのデータベース参照先を指定します。 |
Checks 13 | 1 日毎のデータベース更新回数を指定します。お好みで。 |
ClamAV の起動
ClamAV のデーモン clamd とデータベース自動更新デーモン freshclam を起動します。
# cd /usr/local/etc/rc.d # ./clamav-clamd.sh start # ./clamav-freshclam.sh start # chown clamav /var/log/clamav/clamd.log
chown してるのは、root で起動したために、最初に生成されるログ clamd.log のオーナが root になってしまうので、これを修整するためのもの。これを行わないと、後で、clamd-milter を起動したときに、ログに書けないというエラーがでます。
sendmail の設定変更
milter を使ってメールをスキャンするために、sendmail の設定を変更します。
# cd /etc/mail # vi freebsd.mc
次の設定を追加します。
dnl for ClamAV milter INPUT_MAIL_FILTER(`clmilter', `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl define(`confINPUT_MAIL_FILTERS', `clmilter')dnl
設定を反映させます。
# make install # make restart
clamd-milter の起動
clamd-milter を起動させます。
# cd /usr/local/etc/rc.d # ./clamav-milter.sh start
動作確認
動作確認は、次の各方法で行えます。
- X-Virus-Scanned: ClamAV version 0.88, clamav-milter version 0.87 on ホスト名
自動起動の設定
/etc/rc.conf を編集して、システム起動時に自動的に動作するように設定します。
# cd /etc # vi rc.conf
追加する内容は次の通り。
clamav_*_enable="YES" だけでも動きます。flags や socket については、/usr/local/etc/rc.d/clamav-*.sh に書いてあるので、参照してください。
# for ClamAV clamav_clamd_enable="YES" clamav_clamd_flags="" clamav_clamd_socket="/var/run/clamav/clamd" clamav_milter_enable="YES" clamav_milter_socket="/var/run/clamav/clmilter.sock" clamav_milter_flags="--postmaster-only --local --outgoing --timeout=0 --max-children=50" clamav_freshclam_enable="YES" clamav_freshclam_flags=""
ファイルやディレクトリの状態
正常に動作している場合の、関連各ファイルやディレクトリのオーナとパーミッションは、次のようになります。うまく動かない場合は確認してください。
File / Directory | Permission | User / Group |
---|---|---|
/usr/local/sbin/clamav-milter | -r-xr-xr-x | root:wheel |
/usr/local/sbin/clamd | -r-xr-xr-x | root:wheel |
/usr/local/bin/clamav-config | -r-xr-xr-x | root:wheel |
/usr/local/bin/clamdscan | -r-xr-xr-x | root:wheel |
/usr/local/bin/clamscan | -r-xr-xr-x | root:wheel |
/usr/local/bin/freshclam | -r-xr-xr-x | root:wheel |
/usr/local/bin/sigtool | -r-xr-xr-x | root:wheel |
/usr/local/lib/libclamav.a | -rw-r--r-- | root:wheel |
/usr/local/lib/libclamav.so -> libclamav.so.1 | lrwxr-xr-x | root:wheel |
/usr/local/lib/libclamav.so.1 | -rwxr-xr-x | root:wheel |
/var/log/clamav/ | drwxrwxr-x | clamav:clamav |
clamd.log | -rw-r----- | clamav:clamav |
freshclam.log | -rw-r----- | clamav:clamav |
/var/run/clamav/ | drwxr-xr-x | clamav:clamav |
clamav-milter.pid | -rw-rw---- | clamav:clamav |
clamd | srwxrwxrwx | clamav:clamav |
clamd.pid | -rw-rw---- | clamav:clamav |
clmilter.sock | srwxrwxrwx | clamav:clamav |
freshclam.pid | -rw-rw---- | clamav:clamav |
/usr/local/etc/ | drwxr-xr-x | root:wheel |
clamd.conf | -r--r--r-- | root:wheel |
freshclam.conf | -r--r--r-- | root:wheel |
/usr/local/etc/rc.d/ | drwxrwxr-x | root:wheel |
clamav-clamd.sh | -r-xr-xr-x | root:wheel |
clamav-freshclam.sh | -r-xr-xr-x | root:wheel |
clamav-milter.sh | -r-xr-xr-x | root:wheel |
ClamAV の更新
ClamAV は、頻繁に更新されています。1〜2 ヶ月に 1 回程度の頻度で、新しいバージョンがリリースされているので、その都度、ports を更新する必要があります。
まず、動いているデーモンを停止します。
% su # cd /usr/local/etc/rc.d # ./clamav-clamd.sh stop # ./clamav-freshclam.sh stop # ./clamav-milter.sh stop
次に ports で更新します。
# cd /usr/ports/security/clamav # make WITH_MILTER=yes clean # make WITH_MILTER=yes # make WITH_MILTER=yes deinstall # make WITH_MILTER=yes reinstall # make WITH_MILTER=yes clean # chmod 755 /var/run/clamav
デーモンを再開します。
# cd /usr/local/etc/rc.d
# ./clamav-clamd.sh start
# ./clamav-freshclam.sh start
# chown clamav /var/log/clamav/clamd.log
# ./clamav-milter.sh start
ClamAV の更新については、本家サイトでのアナウンス等を参考にしてください。
参考
- Clam AntiVirus
- http://www.clamav.net/
- SF Project page
- http://sourceforge.net/projects/clamav/
- Technoids.org
- http://www.technoids.org/clamav-milter.html
- fkimura.com
- http://www.fkimura.com/ClamAV0.html