定期ウイルスチェックスクリプト

前書き

いつの時代も、世の中を騒がせているウイルス。
最近ではWinnyやshareなどを中心として感染する暴露ウイルスが有名になっていますが、
ほとんどはWindowsシステムをターゲットにしたものです。
まぁ、(初心者)ユーザーが多いですからね。
システムもブラックボックスでわからないようにしている部分が多いですし。


だからといって、Linuxを対象にしたウイルスが居ないわけじゃないですよ。
「Linuxだから・・・」と安心していると足元をすくわれちゃいますので、
「せっかく入れたclamavです。使い倒さないともったいないですよ」というノリ(?)で
がんがんスキャンしましょう。
でも、いちいち手打ちでコマンドを打つのも面倒臭いので、
ここは一つ”中の人”にお願いしちゃいましょう♪

まぁ、「俺は定期的にログインして自分でスキャンするから大丈夫だ」
という人はそれでも良いですけどね・・・

使用上の注意をよく読み、用法・用量を守って正しくお使いください。

効能・効果
成分
用法・用量
取り扱い上の注意



効能・効果

cronなどを利用して定期的にウイルススキャンを行うことができます。
サンプルスクリプトでは、ウイルスの有無を検査するだけで、
「削除」「隔離」「無効化」などのファイル操作は一切行いません。
(削除/隔離程度なら、スクリプトを改造するか、追加スクリプトを呼び出すことで実装することは可能ですが)
あくまで、ウイルスを発見しログやメールなどで管理者に連絡するものです。

無料のアンチウイルスソフトにありがちな”誤判定”時にシステムを壊わしてしまうようなことは
ありませんので安心して使用してください。

成分

サンプルスクリプトver070311(scan.tar.gz) md5sum crc32:53DBC61C
  scan.sh
  scan_exclude.txt
  readme.txt
  readme_linux.txt
  exclude_readme.txt
  exclude_readme_linux.txt
・root権限(スクリプトの設置場所と検査ディレクトリによる)
・clamav
・cron
LEDを操作する(5分落ち問題)準ずる処置

用法・用量

0.事前準備
clamavをインストールします。
サンプルスクリプトを入手し、解凍します。


1.scan.shの設定
scan.shの設定を変更し、[/root/]にアップロードします。

scan.shの設定項目(デフォルト)
	スキャン対象ディレクトリの指定(/home /opt /usr /root /etc /bin /sbin)
		注:複数指定する場合には半角スペースで区切ってください
		注:指定されたディレクトリを再帰的にスキャンします
	excludeリストの指定(/root/dat/scan_exclude.txt)
	ログファイルの保存先の指定(/mnt/share/scan.txt)
		注:cronオプション利用時のみ有効です
	clamscanの場所(/usr/bin/clamscan)
	logger.shの場所(/root/logger.sh)
	kuroevtdの起動スクリプトの場所(/etc/init.d/kuroevtd)
LEDを操作する(5分落ち問題)準ずる処置をされていない場合、
/dev/ttyS1を含む行をコメントにするか削除します。


2.excludeリストを設定する
2.1.excludeリストを使用する場合
scan_exclude.txtを自分用に編集します(参照:exclude_readme.txt)
[/root/dat/]を作ります。
	# mkdir /root/dat
[/root/dat/]にscan_exclude.txtをアップロードします。

2.2.excludeリストを使用しない場合
scan.shのexcludeリストの指定を適当なディレクトリに変更します。
	例:excludeリストの指定を適当なディレクトリに変更
		exclude=/var/empty/
		exclude=/root/dat/
		exclude=/tmp/

3.手動実行
scan.shを手動にて実行します。
スクリプトのある場所で
	# ./scan.sh [opt]
デバック時には
	# sh -x ./scan.sh [opt]
		注:動作しない場合、アクセス権(実行権)を確認してください。
		注:実行中はPOWERのLEDがゆっくり点滅します。

scan.shに使用できる引数[opt]は以下の通りです。
	start:scan.shの基本動作です。標準出力はターミナルに出力されます。
	check:excludeリストチェック用です。excludeされたものとエラーがターミナルに出力されます。
	    通常のスキャンを行いますので終了まで時間がかかります。
	cron:標準出力をログファイルに出力します。ターミナルには何も表示されません。
	   MTAが実行されていない環境でのcron併用をお勧めします。
		注:絶対パスでのみ動作します。
	mail:ウイルス警告のみ標準出力に出力します。
	   MTAが実行されてる環境でのcron併用をお勧めします。
	stop:LEDの点滅を停止します。

4.cronに登録し、自動で実行されるようにします。
	# crontab -e
		┃00  16   *   *   0  /root/scan.sh mail
		または
		┃00  16   *   *   0  /root/scan.sh cron
			注:日曜日の16:00からスキャンを実行します。
			注:玄箱ではファイルの内容によって異なりますが、
			  1GBのスキャンで約30分程度の時間がかかります。
			  余裕を持ったスケジュールを組んでください。

取り扱い上の注意

サンプルスクリプトではLEDでの動作表示を行うようにしてあります。
LEDを操作する(5分落ち問題)準ずる処置を行っていない環境では、
サンプルスクリプトの修正が必要です。

ファイルのスキャンには時間がかかります。
おおよその目安として「1GBのスキャンで約30分程度」の時間が必要になります。
圧縮ファイルが多いとスキャン時間が長くなります。
cronで実行する場合は2重に実行されないように、
余裕を持った実行スケジュールの指定やスキャンディレクトリの指定を行ってください。

実行中はclamav(clamscan)がCPUの全てを使うため、玄箱が熱を持ちます。
長時間、連続して実行しないように注意してください。
最悪の場合、熱によってHDDや電源、CPUなどのハードウェアが破壊されます。
換気や排熱に注意してください。

関連ページ
	・clamav(ウイルス検出)LEDを操作する(5分落ち問題)5分落ち問題のもう一つの回避法背面ファンコントロールスクリプト

あとがき

ウイルススキャン用のスクリプトです。
以前はメール環境の有無でスクリプト自体を変更していたんですが、
「管理が面倒臭い」といつもの面倒臭がりぃな性格のため1つにまとめちゃいました。
まぁ、最初はcase分岐を使っても結局は2つのスクリプトをまとめただけで、
今考えると、とんでもないものを作ってましたねぇ・・・(゚、゚;)遠い目
それから、再整理をしてかなり長く変更なしで使っているものです。

まぁ、玄箱の性能が性能のため、/mnt/share(共有フォルダ)はスキャンする気にはなれませんが・・・w
最近はミラーのほうの容量が大きくなっているのが気になっていたりする(ノ∀`)'`,、'`,、'`,、

リスト読み込みにも対応したほうがいいのかなぁ?
要望などがある場合には「掲示板」に書き込みをしてください。
まぁ、採用するかどうかは気分しだいだけど(を


戻るなら押せ!