まずはClam AntiVirusのインストールと設定について解説
Linuxのアンチウイルスソフトと言えばClam AntiVirus。
GPLライセンスのため、多くのサイトで導入方法について解説されています。使いこなすには癖があるため、詳しく解説しているサイトは少ないようです。
ただウイルスを検出するだけでなく、他のソフトと組み合わせれば、リアルタイムスキャンをしたり、ウイルス検出時にメール通知することもできます。
Clam AntiVirusには便利な機能がたくさんありますが、依存関係が厳密で、バージョンによって設定方法が異なるので注意してください。
今回は実際に稼働しているサーバである「64bitのCentOS 5.8でカーネルは2.6.18、Clam AntiVirus 9.7」の組み合わせで検証をしています。
設定ファイルは多機能で内容が把握しにくいので、自分のメモも兼ねて訳と解説を付けて掲載しておきます。
設定の際にお役立てください。
目次
Clam AntiVirusのインストール
Clam AntiVirusの初期設定
ウイルスデータベースのアップデートと自動アップデートスクリプトを作成
ウイルス検査の動作確認と各種オプションの解説
定時にウイルス検査を自動実行して、結果をメールで通知する方法
設定ファイル全文の翻訳と解説
Clam AntiVirusのインストール
今回は他のソフトとの連携の関係で1つ前のバージョンである「0.97」を使います。「http://pkgs.repoforge.org/clamav/」に目的のファイルがあるので、rpmforgeリポジトリでバージョンを指定してインストールします。
2017/7追記 rpmforgeは閉鎖されたため、epelを利用してください。コメントでご指摘いただきました。
この設定はリアルタイムスキャン機能であるClamukoを使うためのものだったのですが、上記カーネルで動作させることはできませんでした。そのためインストールはバージョンを指定せず「yum install clamd --enablerepo=rpmforge」としてください。
リポジトリの追加に関しては「以前の投稿」をご覧ください。
# yum install clamd-0.97 --enablerepo=rpmforge Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: clamd x86_64 0.97-1.el5.rf rpmforge 240 k Installing for dependencies: clamav x86_64 0.97-1.el5.rf rpmforge 2.3 M clamav-db x86_64 0.98-2.el5.rf rpmforge 34 M Transaction Summary ================================================================================ Install 3 Package(s) Upgrade 0 Package(s) Total download size: 37 M Is this ok [y/N]: y ←yと入力してエンター Downloading Packages: (1/3): clamd-0.97-1.el5.rf.x86_64.rpm | 240 kB 00:00 (2/3): clamav-0.97-1.el5.rf.x86_64.rpm | 2.3 MB 00:01 (3/3): clamav-db-0.98-2.el5.rf.x86_64.rpm | 34 MB 00:17 -------------------------------------------------------------------------------- Total 1.9 MB/s | 37 MB 00:19 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : clamav-db 1/3 Installing : clamav 2/3 Installing : clamd 3/3 Installed: clamd.x86_64 0:0.97-1.el5.rf Dependency Installed: clamav.x86_64 0:0.97-1.el5.rf clamav-db.x86_64 0:0.98-2.el5.rf Complete!
以上でインストールが完了です。
Clam AntiVirusの初期設定
さっそく初期設定をします。Clam AntiVirusには大きく分けて2つの動作方法があります。
1つ目は「ローカルモード」です。これは同じOS内でだけ動作します。安全性が高く、設定も簡単です。
2つ目は「ネットワークモード」です。名前の通りネットワーク上のサーバを検査することができます。内部ネットワークだけでなく、外部のサーバを検査することもできます。
不正なプログラムの実行やスパム的なアーカイブ攻撃など、脆弱性を狙われやすいため、ファイアウォール等で適切なセキュリティ対策をする必要があります。
そのため外部サーバの検査が不要なら、ネットワークモードで動作させるべきではありません。
今回はOS内でだけ検査できれば良いので、ローカルモード用に設定します。
# cd /etc # cp clamd.conf clamd.conf.org ←オリジナルの設定ファイルのバックアップ # vi /etc/clamd.conf
210行目あたり、コメントアウトしてClam AntiVirusをrootユーザーで実行する。clamavというユーザーで実行するとroot権限のファイルを検査できないため。
User clamav ↓ #User clamav
277行目あたり、壊れたファイルを検出してくれるオプションですが、誤検出が多いため無効にします。
DetectBrokenExecutables yes ↓ #DetectBrokenExecutables yes
ウイルスデータベースのアップデートと自動アップデートスクリプトを作成
初期設定が終わったので起動してみます。
# /etc/rc.d/init.d/clamd start
[LibClamAV] ***********************************************************
[LibClamAV] *** This version of the ClamAV engine is outdated. ***
[LibClamAV] *** DON'T PANIC! Read http://www.clamav.net/support/faq ***
[LibClamAV] ***********************************************************
Starting Clam AntiVirus Daemon: LibClamAV Warning: **************************************************
LibClamAV Warning: *** The virus database is older than 7 days! ***
LibClamAV Warning: *** Please update it as soon as possible. ***
LibClamAV Warning: **************************************************
上記メッセージが表示されると思うので、まずはデータベースのアップデート作業をします。
# freshclam
これでアップデート完了。
ClamdAVが古いバージョンであることを示すアラートは相変わらず出ていると思いますが、CentOS 5.8でリアルタイムスキャンを行うにはこのバージョンを使うしか無いので、このまま進めます。
自動アップデートスクリプトの作成
yumでインストールすると「/etc/cron.daily」に「freshclam」というファイルが作成され、自動で毎日アップデート作業をしてくれます。
内容は以下のようになっています。
何らかの理由でファイルが無いという方は、このままコピー・ペーストしてご利用ください。
#!/bin/sh ### A simple update script for the clamav virus database. ### This could as well be replaced by a SysV script. /usr/bin/freshclam --quiet
また、参考までに。バージョン0.98以降では以下のようになっています。
どうやらログローテンションに合わせてログファイルの権限を変えているようです。
#!/bin/sh ### A simple update script for the clamav virus database. ### This could as well be replaced by a SysV script. ### fix log file if needed LOG_FILE="/var/log/clamav/freshclam.log" if [ ! -f "$LOG_FILE" ]; then touch "$LOG_FILE" chmod 644 "$LOG_FILE" chown clamav.clamav "$LOG_FILE" fi /usr/bin/freshclam \ --quiet \ --datadir="/var/lib/clamav" \ --log="$LOG_FILE" \ --daemon-notify="/etc/clamd.conf"
自動起動の確認
rsyslogの自動起動を確認 # chkconfig --list clamd 以下のように3番がonになっていれば自動起動は有効です。 clamd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
有効でない場合は以下のコマンドで有効にしておいてください。
# chkconfig clamd on
ウイルス検査の動作確認と各種オプションの解説
それではウイルス検出のテストをしてみます。
試しに「/rootディレクトリを再帰的に検査。ウイルスが見つかった場合だけ表示・削除」という設定を試します。
clamscanでウイルス検出のテスト
# clamscan /root --infected --remove --recursive
This version of the ClamAV engine is outdated.
----------- SCAN SUMMARY -----------
Known viruses: 3128755
Engine version: 0.97
Scanned directories: 18
Scanned files: 1159
Infected files: 0
Data scanned: 272.27 MB
Data read: 59.13 MB (ratio 4.60:1)
Time: 31.198 sec (0 m 31 s)
「Infected files:」が「0」ならウイルスの検出がなかったということです。
各オプションや詳しい解説は「こちらのサイト」にあります。
clamscanのオプションについて抜粋させていただきます。
出力等に関するオプション
--help | -h | 使い方を表示 |
---|---|---|
--version | -V | バージョン情報を表示 |
--verbose | -v | 出力を詳細にする |
--debug | デバッグ情報を出力 | |
--quiet | エラー情報のみ出力 | |
--stdout | stderrではなくstdoutへ出力 | |
--log=FILE | -l | 結果をファイルへ記録 |
--log-verbose | 追加情報を結果報告に加える | |
--disable-summary | summaryを出力しない | |
--infected | -i | ウイルスに感染したファイルのみを出力 |
--bell | ウイルスを検出したらベルを鳴らす |
動作に関するオプション
--tempdir=DIRECTORY | 一時ファイルを作成するディレクトリを指定 | |
---|---|---|
--database=FILE/DIR | VirusDBとして読み込むファイル(or ディレクトリ)を指定 | |
--recursive | -r | サブディレクトリごと再帰的に検査。圧縮ファイルは再帰的に解凍して検査 |
--exclude=PATT | パターンにマッチするファイルを検査しない | |
--include=PATT | パターンにマッチするファイルのみを検査する | |
--remove | ウイルスに感染したファイルを削除する | |
--move=DIRECTORY | ウイルスに感染したファイルをDIRECTORYへ移動する | |
--force | エラーを無視して強制的に検査を行う |
ファイル形式に関するオプション
--mbox | -m | mbox形式、rfc(2)822形式のファイルを検査する |
---|---|---|
--no-ole2 | OLE2機能を無効にする | |
--no-archive | 圧縮されたファイルを解凍・展開しない | |
--detect-encrypted | ||
--max-files=#n | 圧縮されたファイルを解凍・展開する際のファイル数の上限 | |
--max-space=#n | 圧縮されたファイルを解凍・展開する際のファイルサイズの上限 | |
--max-recursion=#n | 圧縮されたファイルを再帰的に解凍・展開する際の最大深度 | |
--unzip=[FULLPATH] | .zipファイルを解凍 | |
--unrar=[FULLPATH] | .rarファイルを解凍 | |
--unace=[FULLPATH] | .aceファイルを解凍 | |
--unarj=[FULLPATH] | .arjファイルを解凍 | |
--unzoo=[FULLPATH] | .zooファイルを解凍 | |
--lha=[FULLPATH] | .lzhファイルを解凍 | |
--jar=[FULLPATH] | unzipコマンドを使って.jarファイルを解凍 | |
--deb=[FULLPATH] | arコマンドを使って.debファイルを解凍 | |
--tar=[FULLPATH] | tarファイルを展開 | |
--tgz=[FULLPATH] | GNU tarを使ってtar+gzipファイルを解凍・展開 |
※clamscanは上記のオプションなしでもzip/gzip/bzip2/rar(2.0)に対応している。ちなみに設定ファイルであらかじめ設定しておくことも可能。
clamdscanでウイルス検出のテスト
clamscanコマンドでテストをしてみて「結構時間がかかるな」と思った方も多いのではないでしょうか。
Clam AntiVirusには、より高速に動作する「clamdscan」というコマンドが用意されています。
簡単に違いを説明すればclamscanは実行するごとにウイルス定義ファイルを読み込むのに対し、clamdscanはClam AntiVirusを起動した時に立ち上がる「clamd」というデーモンを利用して実行されるという点です。(そのためroot権限でClam AntiVirusを起動しておかないとclamdで検査できないファイルがでるので注意)
また、1度検査して変更の無いファイルをスキップするため、2度目以降の検査が高速です。
そのため「少ないファイルを検査」する場合や、「同じディレクトリを頻繁にファイルを検査をする」といった場合には「clamdscan」が向いています。
ちなみにclamscanとclamdscanでは基本的に共通のオプションを使用することができますが、いくつか使えないものあるので注意してください。
clamdscanで/rootディレクトリを検査
# clamdscan /root
/root: OK
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 16.852 sec (0 m 16 s)
17秒弱で終了しました。前回は31秒ほどかかっていたので、約2倍の速度でスキャンできる事がわかります。同じディレクトリをもう一度検査してみてください。1度検査したファイルはスキップするため、1秒もかからず検査が終了すると思います。
もし以下のエラーが出る場合は、設定ファイルの「User clamav」の項目が正しくコメントアウトされているかチェックしてみてください。
/root: lstat() failed: Permission denied. ERROR
テストウイルスをダウンロードしてウイルス検出
テストウイルスをダウンロードして検出するかテストしてみます。
# cd ←/rootディレクトリに移動 # wget http://www.eicar.org/download/eicar.com # clamdscan /root /root/eicar.com: Eicar-Test-Signature FOUND ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 0.258 sec (0 m 0 s)
このように「FOUND」という表示と「Infected files: 1」という表示でウイルスを通知してくれます。
次は検出したウイルスを自動で削除する「--remove」オプションを付けて実行します。
# clamdscan /root --remove
/root/eicar.com: Eicar-Test-Signature FOUND
/root/eicar.com: Removed.
----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.262 sec (0 m 0 s)
今度は「/root/eicar.com: Removed.」という表示が増えています。これでテストウイルスは削除されました。
全体を検査する際の注意
ウイルスの検出ですが、リソースをかなり消費するため全体スキャンを頻繁に行うことはお薦めできません。(特にVPSなどリソースを共用するサービスの場合は注意してください)
更新の無いディレクトリなどは除外項目に入れて実行することをお勧めします。
「/sys」ディレクトリを除外する例
# clamscan / --recursive --infected --exclude-dir=/sys
「--exclude-dir=/sys」は「/sys」ディレクトリを検査から除外。
「--recursive」はサブディレクトリを再帰的に検査。
「--infected」はウイルスを検出した時だけ表示。
複数の除外項目を指定する場合
# clamscan / --recursive --infected --exclude-dir='/sys|/etc|/bin|/var'
ちなみにclamdscanでは「--exclude-dir」オプションは使えません。
設定ファイルで除外項目を設定することができます。(自動スクリプトの項目で後述)
定時にウイルス検査を自動実行して、結果をメールで通知する方法
わざわざコマンドを打つことなく、自動でウイルス検査をしたいという方がほとんどだと思います。そこでCronを使って自動実行する方法を紹介します。
自動実行の方法は「こちらのサイト」を参考にさせていただきました。
紹介したサイトの方法は、除外リストを作成して「--exclude」オプションが使えるclamscanで実行する方法です。このサイトでは、高速で動作するclamdscanで自動実行する方法を紹介します。
設定ファイルの編集
clamdscanでは「--exclude」オプションが使えないため、設定ファイルで除外項目を指定します。この方法なら正しく除外項目を認識しつつ、clamdscanを使って高速なスキャンが可能になります。
設定ファイルの160行目辺りにある「#ExcludePath ^/proc/」あたりに以下のように追加してください。ディレクトリを正規表現で指定します。
# vi /etc/clamd.conf
ExcludePath ^/boot/
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/var/
ExcludePath ^/etc/
除外する項目ですが、削除されると起動することができなくなるようなブート用のファイルは除外しておくと安心です。他にはバックアップディレクトリや、除外しないとエラーを出す「/sys」なども登録をお勧めします。
また圧縮ファイル等も負担が多くなるので安全性が確認できれば除外項目への登録をお勧めします。
設定が完了したら再起動します。
# /etc/rc.d/init.d/clamd restart
ちなみに設定ファイルの455行目あたりにある「#ClamukoExcludePath /home/bofh」という項目はリアルタイムスキャンをする際に使うClamuko実行時に除外する項目なので、clamdscanでは除外されません。間違えないように注意してください。
1日に1度Cronで自動実行させるシェルスクリプトを作成
作業ディレクトリに移動して「clamd.sh」を作成
# cd # vi clamd.sh
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin #ウイルスに関するメッセージを入れる変数を作成 #mktempは「/tmp」以下にユニークなファイルを作成するコマンド CLAMSCANTMP=`mktemp` #clamdscanを全体に実行。ウイルスが見つかった場合削除して、メッセージをmktempで作成したファイルに代入 clamdscan / --remove > $CLAMSCANTMP 2>&1 # $CLAMSCANTMPにウイルス発見の際に出力される「FOUND」があるか調べ、ある場合に内容をメールする。 [ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \ grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found" hoge@example.com rm -f $CLAMSCANTMP
1行目、お決まりのおまじないシパンを指定。また最終的にはcronのディレクトリに保存するのでパスも通します。
12行目、「!」条件式が偽であれば真を返す
「-z」指定した文字列が0文字(何もない)状態であれば真を返す
「“$(grep FOUND$ $CLAMSCANTMP)”」は変数を作成して()でグループ化されたものを出力。$が無いと「(grep FOUND$ テンポラリーファイルのパス)」となり、「()(括弧)」が無いとgrepが正しく処理されない。
grepで行末にFOUNDという文字列を持つ行が見つかった場合は、「-z」が偽を返し、さらに「!」があるので全体として真になる。
grepで何も出力がない場合、変数「$(grep FOUND$ $CLAMSCANTMP)」はNullとなり、「-z」なので真を返し、全体として偽となる。
「&&」と続くので条件が真の場合、次の処理を続行する。
「hoge@example.com」の項目はご自身のメールアドレスを入力してください。
メールを送ったら$CLAMSCANTMPはいらないので破棄する。(明示的に破棄しなくても「/temp」のファイルなのでcronで定期的に削除されます)
作成できたらファイルを移動します。
毎日実行するなら。「/etc/cron.daily」、1週間に1度の実行なら「/etc/cron.weekly」に保存します。
# mv clamd.sh /etc/cron.daily
試しにもう一度コマンドライン上で実行して、正しく動作するかテストしてみてください。
# sh /etc/cron.daily/clamd.sh
また、正しく動作している場合もメールで確認したい場合は以下のように変更してみてください。
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \ grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found" hoge@example.com [ -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \ echo "clamdscan normal end" | mail -s "Virus Not Found" hoge@example.com rm -f $CLAMSCANTMP
以上の設定でウイルス定義ファイルが自動で更新され、ウイルス検査を定時で行い、ウイルスが見つかった場合には削除して、メールで通知してくれるようになりました。
これだけでも無料のウイルス対策ソフトとしては十分ですが、せっかくなのでリアルタイムスキャンも使えるようにしてみましょう。
リアルタイムスキャンには、いくつか準備が必要になります。Clam AntiVirusでリアルタイムスキャンをするにはDazukoというデバイスドライバが必要になります。またDazukoはLinuxカーネルのCapability Moduleを利用します。このCapability Moduleはカーネルの再構築で読み込む必要があります。
次の投稿では、リアルタイムスキャンを実行するところまで解説します。
設定ファイル全文の翻訳と解説
表示する場合は下記の「ソースを表示」をクリックしてください。
## ## Example config file for the Clam AV daemon ## Please read the clamd.conf(5) manual before editing this file. ## # Clam AV daemonについての設定ファイル # 詳細はclamd.conf(5) manualを参照 # Comment or remove the line below. # ここをコメントアウトした状態にしないと実行できない。 #Example # Uncomment this option to enable logging. # LogFile must be writable for the user running daemon. # A full path is required. # Default: disabled # コメントアウトを外すとログが有効になる。デフォルトは無効。 LogFile /var/log/clamav/clamd.log # By default the log file is locked for writing - the lock protects against # running clamd multiple times (if want to run another clamd, please # copy the configuration file, change the LogFile variable, and run # the daemon with --config-file option). # This option disables log file locking. # Default: no # デフォルトで上記のログファイルは書き込み専用でロックされている # コメントアウトを外すとロックを解除 #LogFileUnlock yes # Maximum size of the log file. # Value of 0 disables the limit. # You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) # and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size # in bytes just don't use modifiers. # Default: 1M # ログファイルの最大サイズ。指定したサイズより大きい場合はログが出力されない。0だと無制限 LogFileMaxSize 0 # Log time with each message. # Default: no # ログファイルに日時を記載する。デフォルトは無効。 LogTime yes # Also log clean files. Useful in debugging but drastically increases the # log size. # Default: no # 詳細なログを取る。ログサイズが膨大になるため注意。デフォルトは無効。 #LogClean yes # Use system logger (can work together with LogFile). # Default: no # ログをシステムロガー(rsyslog等)へ出力。LogFileとは別ファイルに同じログが出力される。デフォルトは無効。 # ちなみにローテーションに関してはインストール時に/etc/logrotate.d/clamavが作成されている LogSyslog yes # Specify the type of syslog messages - please refer to 'man syslog' # for facility names. # Default: LOG_LOCAL6 # rsyslog等に書きだされるファシリティーの名前を指定。デフォルトはLOG_LOCAL6。 #LogFacility LOG_MAIL # Enable verbose logging. # Default: no # 詳細なログを出力。この設定はシムテムロガーに書きだされるログに対して有効。LogFileへの詳細出力はLogCleanで指定する。デフォルトは無効。 #LogVerbose yes # Log additional information about the infected file, such as its # size and hash, together with the virus name. # ウイルス名以外にもファイルサイズやハッシュ値などの情報もログに記載する。 #ExtendedDetectionInfo yes # This option allows you to save a process identifier of the listening # daemon (main thread). # Default: disabled # プロセス識別子(PID)の指定 PidFile /var/run/clamav/clamd.pid # Optional path to the global temporary directory. # Default: system specific (usually /tmp or /var/tmp). # テンポラリーファイルの一時保存場所 TemporaryDirectory /var/tmp # Path to the database directory. # Default: hardcoded (depends on installation options) # ウイルスデータベースの保存場所(デフォルト値はインストールオプションで異なる) DatabaseDirectory /var/lib/clamav # Only load the official signatures published by the ClamAV project. # Default: no # ClamAVの公式シグネチャーのみ有効にする。デフォルトは無効。 #OfficialDatabaseOnly no # The daemon can work in local mode, network mode or both. # Due to security reasons we recommend the local mode. # ローカルモードか、ネットワークモードかを選択する。 # ローカルモードはOS内での動作となるunixソケットで動作する。 # ネットワークモードはTCPで外部または内部ネットワーク間で動作する。 # 外部と通信する場合はポートを指定(デフォルトは3310)して、ファイアウォール等でIPを限定すること。 # Path to a local socket file the daemon will listen on. # Default: disabled (must be specified by a user) # デーモンがリスニングするローカル(UNIX)ソケットの指定。ローカルモードで動作させるにはコメントアウトを解除する。 # 以下の設定にある「グループで限定する方法」と「特定のネットワーク上の、特定のポートに限定する」方法がある。推奨とデフォルトは無効。 #LocalSocket /tmp/clamd.socket # Sets the group ownership on the unix socket. # Default: disabled (the primary group of the user running clamd) # 上記UNIXソケットのグループ所有権を設定。特定のユーザーグループでClamdを実行する場合に指定。デフォルトは無効。 #LocalSocketGroup virusgroup # Sets the permissions on the unix socket to the specified mode. # Default: disabled (socket is world accessible) # 上記unixソケットのパーミッションの設定。デフォルトは無効。 #LocalSocketMode 660 # Remove stale socket after unclean shutdown. # Default: yes # ソケットのシャットダウン後、再起動不可。デフォルトは有効。 FixStaleSocket yes # TCP port address. # Default: no # ソケット通信するTCPポート。ネットワークモード利用時に指定する。デフォルトは無効。 # Clamdを単一オペレーティングシステム内で利用する場合はコメントアウト。外部、もしくは内部ネットワーク間でClamdを利用する場合のみ指定する。ファイアウォールでポートへのアクセスを許可するIPを限定すること。 TCPSocket 3310 # TCP address. # By default we bind to INADDR_ANY, probably not wise. # Enable the following to provide some degree of protection # from the outside world. # Default: no # 上記のネットワークモードの内、ローカル(127.0.0.1)からのアクセスは全て許可。 TCPAddr 127.0.0.1 # Maximum length the queue of pending connections may grow to. # Default: 200 # スキャン待ちをするキュー長を指定。多くとればメモリを消費する。デフォルトは200。 MaxConnectionQueueLength 30 # Clamd uses FTP-like protocol to receive data from remote clients. # If you are using clamav-milter to balance load between remote clamd daemons # on firewall servers you may need to tune the options below. # 追加でインストールできるclamav-milterを使う際の調整 # sendmailのmilterと組み合わせることでメールをフィルタリングできる。 # 動作に関する設定は/etc/clamav-milter.confにて行う。 # こちらのサイトで詳細を解説されています。(下記のサイトではclamav-milterの単独で動作可能とありますが、0.95以降では単独動作はできなくなりました) # http://www.eng.maritime.kobe-u.ac.jp/~i_asano/misc/clmilter/clmilter.html # Close the connection when the data size limit is exceeded. # The value should match your MTA's limit for a maximum attachment size. # Default: 25M # 添付ファイルのサイズ制限。指定以上のサイズのものはチェックしない。MTA(postfix等)の上限に合わせるのが望ましい。デフォルトは25M。 #StreamMaxLength 10M # Limit port range. # 使用するポートの範囲を制限する # Default: 1024 #StreamMinPort 30000 # Default: 2048 #StreamMaxPort 32000 # Maximum number of threads running at the same time. # Default: 10 # 同時に実行するスレッドの最大数。デフォルトは10。 MaxThreads 50 # Waiting for data from a client socket will timeout after this time (seconds). # Default: 120 # 検査するファイルの読み込みの際のタイムアウト処理をする時間を指定(秒単位)。デフォルトは120。 ReadTimeout 300 # This option specifies the time (in seconds) after which clamd should # timeout if a client doesn't provide any initial command after connecting. # Default: 5 # こちらはコマンドのタイムアウトを指定(秒単位)。サーバがビジー状態の場合などを考慮。 #CommandReadTimeout 5 # This option specifies how long to wait (in miliseconds) if the send buffer is full. # Keep this value low to prevent clamd hanging # # Default: 500 # 送信のためのバッファがいっぱいになった場合のタイムアウトの設定(ミリ秒単位)。 #SendBufTimeout 200 # Maximum number of queued items (including those being processed by MaxThreads threads) # It is recommended to have this value at least twice MaxThreads if possible. # WARNING: you shouldn't increase this too much to avoid running out of file descriptors, # the following condition should hold: # MaxThreads*MaxRecursion + (MaxQueue - MaxThreads) + 6< RLIMIT_NOFILE (usual max is 1024) # # Default: 100 # キューに入れられたアイテムの総数。MaxThreadsで指定した実行中のものを含む。多く取るとファイルディスクリプタ不足になるため注意。指定することができる最大の数は上記の式で求められる。デフォルトは100。 #MaxQueue 200 # Waiting for a new job will timeout after this time (seconds). # Default: 30 # タイムアウト後に新しいプロセスを実行する時間を指定(秒単位)。デフォルトは30秒。 #IdleTimeout 60 # Don't scan files and directories matching regex # This directive can be used multiple times # Default: scan all # 正規表現でスキャン対象から外すディレクトリの指定。別途除外用のファイルを作成する方法もある。ディレクトリ単位で指定する場合は行末がスラッシュで終わる点に注意。 #ExcludePath ^/proc/ #ExcludePath ^/sys/ # Maximum depth directories are scanned at. # Default: 15 # スキャンするディレクトリの深さ。デフォルトでは15階層。 #MaxDirectoryRecursion 20 # Follow directory symlinks. # Default: no # ディレクトリのシンボリックリンクに従うか指定。デフォルトは無効。 #FollowDirectorySymlinks yes # Follow regular file symlinks. # Default: no # ファイルのシンボリックリンクに従うか指定。デフォルトは無効。 #FollowFileSymlinks yes # Scan files and directories on other filesystems. # Default: yes # 他のファイルシステムやディレクトリのスキャン。デフォルトは有効。 #CrossFilesystems yes # Perform a database check. # Default: 600 (10 min) # 前回のチェックから再びウイルスデータベースのチェックを実行する時間。デフォルト600秒(10分) #SelfCheck 600 # Execute a command when virus is found. In the command string %v will # be replaced with the virus name. # Default: no # ウイルスが見つかった場合のコマンド。デフォルトは無効。「%v」はウイルス名の出力。「mail -s "Virus Alert" hoge@example.org」等としてメールを送信することも可能。ウイルスに関する名前以外の情報はログを見る必要がある。 #VirusEvent /usr/local/bin/send_sms 123456789 "VIRUS ALERT: %v" # Run as another user (clamd must be started by root for this option to work) # Default: don't drop privileges # clamdの実行ユーザーを指定。デフォルトはclamavとなっているが、この場合実行ユーザーを作成してスキャンするファイルへの権限を与える必要がある。手っ取り早く全ファイルへの権限を与えるにはrootでよい。 User clamav # Initialize supplementary group access (clamd must be started by root). # Default: no # 補助グループアクセスを初期化しない??(詳細不明) AllowSupplementaryGroups yes # Stop daemon when libclamav reports out of memory condition. # メモリ不足の場合にデーモンを停止するか。 #ExitOnOOM yes # Don't fork into background. # Default: no # フォークしてバックグラウンドで動作することを許可する。デフォルトは無効。 #Foreground yes # Enable debug messages in libclamav. # Default: no # libclamavからデバッグメッセージを出力する。デフォルトは無効。 #Debug yes # Do not remove temporary files (for debug purposes). # Default: no # 一時ファイルを削除しない(デバッグ目的)。デフォルトは無効。 #LeaveTemporaryFiles yes # Detect Possibly Unwanted Applications. # Default: no # 潜在的に迷惑なアプリケーション(スパム的なアプリ)の削除。いわゆるPUAの検出機能。デフォルトは無効。 #DetectPUA yes # Exclude a specific PUA category. This directive can be used multiple times. # See http://www.clamav.net/support/pua for the complete list of PUA # categories. # Default: Load all categories (if DetectPUA is activated) # 上記のPUAで検出するアプリの内、除外するカテゴリーの指定。詳細はhttp://www.clamav.net/support/puaを参照。とあるが404エラー。実際はhttps://github.com/vrtadmin/clamav-faq/blob/master/faq/faq-pua.md #ExcludePUA NetTool #ExcludePUA PWTool # Only include a specific PUA category. This directive can be used multiple # times. # Default: Load all categories (if DetectPUA is activated) # PUAで有効にするカテゴリ。DetectPUAが有効になっている場合デフォルトでは全て有効。 #IncludePUA Spy #IncludePUA Scanner #IncludePUA RAT # In some cases (eg. complex malware, exploits in graphic files, and others), # ClamAV uses special algorithms to provide accurate detection. This option # controls the algorithmic detection. # Default: yes # PUAでスパム検出にClamAVオリジナルのアルゴリズムを利用する。(複雑な構造のファイルも検出できる)デフォルトは有効。 #AlgorithmicDetection yes ## ## Executable files ## # 実行ファイルに関する設定 # PE stands for Portable Executable - it's an executable file format used # in all 32 and 64-bit versions of Windows operating systems. This option allows # ClamAV to perform a deeper analysis of executable files and it's also # required for decompression of popular executable packers such as UPX, FSG, # and Petite. # Default: yes # Windowsで使用される圧縮された実行ファイル(UPX, FSG形式など)をスキャンするか指定。デフォルトは有効。 ScanPE yes # Executable and Linking Format is a standard format for UN*X executables. # This option allows you to control the scanning of ELF files. # Default: yes # 「.elf」ファイルのスキャン。デフォルトは有効。 ScanELF yes # With this option clamav will try to detect broken executables (both PE and # ELF) and mark them as Broken.Executable. # Default: no # 壊れた実行ファイル(PEとELFの両方)を検出する。デフォルトは無効。誤検出が多いので、正常なファイルを検出するようなら無効に。 DetectBrokenExecutables yes ## ## Documents ## # ここからドキュメントの扱いに関する設定 # ファイルの内容まで検査するかどうかの指定など # This option enables scanning of OLE2 files, such as Microsoft Office # documents and .msi files. # Default: yes # MS OfficeのファイルフォーマットであるOLE2をスキャンするかどうか。デフォルトは有効。 ScanOLE2 yes # With this option enabled OLE2 files with VBA macros, which were not # detected by signatures will be marked as "Heuristics.OLE2.ContainsMacros". # Default: no # 上記の設定と合わせて指定する。OLE2の内、VBAマクロをスキャンするするか指定する。デフォルトは無効。 #OLE2BlockMacros no # This option enables scanning within PDF files. # Default: yes # PDFファイルをスキャンするか指定。デフォルトは有効。 #ScanPDF yes ## ## Mail files ## # ここからメールの扱いに関する設定 # Enable internal e-mail scanner. # Default: yes # ローカルメールのスキャンをするかどうか。デフォルトは有効。 ScanMail yes # Scan RFC1341 messages split over many emails. # You will need to periodically clean up $TemporaryDirectory/clamav-partial directory. # WARNING: This option may open your system to a DoS attack. # Never use it on loaded servers. # Default: no # メール規格RFC1341で分割されたメールのスキャン。Dos攻撃が可能になるためサーバ上では有効にするべきではない。デフォルトは無効。 #ScanPartialMessages yes # With this option enabled ClamAV will try to detect phishing attempts by using # signatures. # Default: yes # ClamAVでフィッシング攻撃の察知。デフォルトは有効。 #PhishingSignatures yes # Scan URLs found in mails for phishing attempts using heuristics. # Default: yes # フィッシング攻撃で使われるURLの察知。ヒューリスティックエンジンによる照合。デフォルトは有効。 #PhishingScanURLs yes # Always block SSL mismatches in URLs, even if the URL isn't in the database. # This can lead to false positives. # # Default: no # データベースにない場合でも、SSLで証明書と適合しないURLの場合、ブロックする。誤検出に繋がる可能性あり。デフォルトは無効。 #PhishingAlwaysBlockSSLMismatch no # Always block cloaked URLs, even if URL isn't in database. # This can lead to false positives. # # Default: no # データベースにない場合でも、クローキングURL(ロボットと閲覧者で異なる表示をするURL)の場合はブロックする。誤検出に繋がる可能性あり。デフォルトは無効。 #PhishingAlwaysBlockCloak no # Allow heuristic match to take precedence. # When enabled, if a heuristic scan (such as phishingScan) detects # a possible virus/phish it will stop scan immediately. Recommended, saves CPU # scan-time. # When disabled, virus/phish detected by heuristic scans will be reported only at # the end of a scan. If an archive contains both a heuristically detected # virus/phish, and a real malware, the real malware will be reported # # Keep this disabled if you intend to handle "*.Heuristics.*" viruses # differently from "real" malware. # If a non-heuristically-detected virus (signature-based) is found first, # the scan is interrupted immediately, regardless of this config option. # # Default: no # ヒューリスティックエンジンによる照合でウイルスと判定された場合、スキャンを中止する。CPUリソースの節約になる。 # データベース(シグネチャベース)によるウイルスを発見した場合はこのオプションに関わらずスキャンを中止する。 #HeuristicScanPrecedence yes ## ## Data Loss Prevention (DLP) ## # データ損失防止に関する設定 # Enable the DLP module # Default: No # DLPモジュールを有効にする。デフォルトは無効。 #StructuredDataDetection yes # This option sets the lowest number of Credit Card numbers found in a file # to generate a detect. # Default: 3 # DLPモジュールで保護するクレジットカード番号に一致する桁数の最小値を指定。 #StructuredMinCreditCardCount 5 # This option sets the lowest number of Social Security Numbers found # in a file to generate a detect. # Default: 3 # 上記の社会保障番号。日本では意味のない設定。 #StructuredMinSSNCount 5 # With this option enabled the DLP module will search for valid # SSNs formatted as xxx-yy-zzzz # Default: yes # 社会保障番号のフォーマットに一致する。日本では意味のない設定。 #StructuredSSNFormatNormal yes # With this option enabled the DLP module will search for valid # SSNs formatted as xxxyyzzzz # Default: no # 上記のフォーマット一致の別バージョン。日本では意味のない設定。 #StructuredSSNFormatStripped yes ## ## HTML ## # HTMLファイルに関する設定 # Perform HTML normalisation and decryption of MS Script Encoder code. # Default: yes # HTMLの正規化とMS Script Encoderを復号化して内容をチェックするか。デフォルトは有効。 #ScanHTML yes ## ## Archives ## # 圧縮ファイルに関する設定 # ClamAV can scan within archives and compressed files. # Default: yes # 圧縮ファイルのスキャンを有効にする。デフォルトは有効。 ScanArchive yes # Mark encrypted archives as viruses (Encrypted.Zip, Encrypted.RAR). # Default: no # ウイルスの見つかった圧縮ファイルにマーキングする。デフォルトは無効。 ArchiveBlockEncrypted no ## ## Limits ## # 制限に関する設定。多くはアーカイブボムに対するセキュリティ対策。 # スキャンソフトに高負荷をかけることを目的とした高圧縮のファイル。 # The options below protect your system against Denial of Service attacks # using archive bombs. # This option sets the maximum amount of data to be scanned for each input file. # Archives and other containers are recursively extracted and scanned up to this # value. # Value of 0 disables the limit # Note: disabling this limit or setting it too high may result in severe damage # to the system. # Default: 100M # スキャンされるデータの最大量。アーカイブなどこの値より大きなファイルの場合、展開して指定したサイズまでスキャンする。0を指定すると無制限。大きくし過ぎると重大な障害が起こる可能性がある。デフォルトは100MB。 #MaxScanSize 150M # Files larger than this limit won't be scanned. Affects the input file itself # as well as files contained inside it (when the input file is an archive, a # document or some other kind of container). # Value of 0 disables the limit. # Note: disabling this limit or setting it too high may result in severe damage # to the system. # Default: 25M # 通常のファイルと、アーカイブから展開されたファイルの最大サイズを指定。これ以上のサイズのファイルは展開しても検査されない。0を指定すると無制限。大きくし過ぎると重大な障害が起こる可能性がある。デフォルトは25MB。 #MaxFileSize 30M # Nested archives are scanned recursively, e.g. if a Zip archive contains a RAR # file, all files within it will also be scanned. This options specifies how # deeply the process should be continued. # Note: setting this limit too high may result in severe damage to the system. # Default: 16 # 入れ子状になった圧縮ファイルを、何階層まで展開して検査するか。デフォルトは16階層。 #MaxRecursion 10 # Number of files to be scanned within an archive, a document, or any other # container file. # Value of 0 disables the limit. # Note: disabling this limit or setting it too high may result in severe damage # to the system. # Default: 10000 # 圧縮ファイルの中身を何ファイルまで検査するか。デフォルトは10000。 #MaxFiles 15000 ## ## Clamuko settings ## # Clamukoに関する設定。 # バージョン0.98からClamuko/Dazukoを利用したリアルタイムスキャンは非推奨になりました。 # リアルタイムスキャンが必要な場合はfanotifyを利用してください。 # (fanotifyはkernel2.6.37以降で有効なため、CentOS6系でないと使えません) # Enable Clamuko. Dazuko must be configured and running. Clamuko supports # both Dazuko (/dev/dazuko) and DazukoFS (/dev/dazukofs.ctrl). DazukoFS # is the preferred option. For more information please visit www.dazuko.org # Default: no # ClamukoはdazukoとDazukoFSを利用することで使用可能になるclamdのリアルタイムスキャン機能。デフォルトは無効。 #ClamukoScanOnAccess yes # The number of scanner threads that will be started (DazukoFS only). # Having multiple scanner threads allows Clamuko to serve multiple # processes simultaneously. This is particularly beneficial on SMP machines. # Default: 3 # 複数の検査を同時に行う。マルチスレッドの場合に特に有効。デフォルトは3。 #ClamukoScannerCount 3 # Don't scan files larger than ClamukoMaxFileSize # Value of 0 disables the limit. # Default: 5M # 指定したサイズ以上のファイルはリアルタイムスキャンしない。0で無制限。デフォルトは5MB。 #ClamukoMaxFileSize 10M # Set access mask for Clamuko (Dazuko only). # Default: no # Dazukoでスキャンするタイミングを指定。それぞれ、OnOpenはファイルを開く時。OnCloseはファイルを閉じる時。OnExecは実行中のファイルを検査する。 #ClamukoScanOnOpen yes #ClamukoScanOnClose yes #ClamukoScanOnExec yes # Set the include paths (all files inside them will be scanned). You can have # multiple ClamukoIncludePath directives but each directory must be added # in a seperate line. (Dazuko only) # Default: disabled # リアルタイムスキャンするディレクトリの指定。Dazukoのみ有効。デフォルトは無効。 #ClamukoIncludePath /home #ClamukoIncludePath /students # Set the exclude paths. All subdirectories are also excluded. (Dazuko only) # Default: disabled # 逆にリアルタイムスキャンで除外するディレクトリの指定。Dazukoのみ有効。デフォルトは無効。 #ClamukoExcludePath /home/bofh # With this option you can whitelist specific UIDs. Processes with these UIDs # will be able to access all files. # This option can be used multiple times (one per line). # Default: disabled # 特定のUIDをホワイトリストに設定し、ホワイトリストに登録されたUIDのファイルを検査しない。デフォルトは無効。 #ClamukoExcludeUID 0 # With this option enabled ClamAV will load bytecode from the database. # It is highly recommended you keep this option on, otherwise you'll miss detections for many new viruses. # Default: yes # バイトコードをデータベースから読み込むか設定。バイトコードの詳細は以下の設定にて。デフォルトは有効。 #Bytecode yes # Set bytecode security level. # Possible values: # None - no security at all, meant for debugging. DO NOT USE THIS ON PRODUCTION SYSTEMS # This value is only available if clamav was built with --enable-debug! # TrustSigned - trust bytecode loaded from signed .c[lv]d files, # insert runtime safety checks for bytecode loaded from other sources # Paranoid - don't trust any bytecode, insert runtime checks for all # Recommended: TrustSigned, because bytecode in .cvd files already has these checks # Note that by default only signed bytecode is loaded, currently you can only # load unsigned bytecode in --enable-debug mode. # # Default: TrustSigned # バイトコードで指定可能な値 # None - デバックのための指定。ウイルスに対して何もしない。 # TrustSigned - 署名されたデータベースのものは信頼する。署名のないものは実行時にチェックする。 # Paranoid - 全てのバイトコードを安全性チェックする。 # デフォルトはTrustSigned #BytecodeSecurity TrustSigned # Set bytecode timeout in miliseconds. # # Default: 5000 # バイトコードのタイムアウトをミリ秒単位で指定する。デフォルトは5000ミリ秒。 # BytecodeTimeout 1000
rpmforgeは、現在サポート終了しています。
ただし、epelからインストールできます。
ご指摘ありがとうございます。
記事内に追記しました。