clamav(ウイルス検出)

Linuxだからといってウイルスが居ないわけじゃない。
ただ、Linuxを使う人が少ないからウイルスを作る人が少ないだけで・・・

こんぴゅーたーういるすは、
「1匹居たらPCをフォーマット♪」とまで言われる嫌われ者です。
Winでウイルスにかかった人はもとより、
アンチウイルスソフトがないと夜も眠れないという人、
ウイルスが怖いのでパソコンをやめたという人(実在する)、
Winが不正終了するたびにウイルスにかかったとびびる人、
そんな人たちにお勧めな、フリーで使える(申請の必要も無い)アンチウイルスソフトです。

まぁ、いろいろ使えるみたいですし・・・
「clamav」
このソフトはWinのアンチウイルスソフトのように常駐監視するわけじゃないですし、
ましてや駆除・削除などもしません(を
ウイルスを見つけるだけのソフトです。
まぁ、見つけた後は削除するなりご自由にと言う感じでしょうか?

メール鯖と連携させてウイルス駆除(当然、ウイルスメールは削除or拒否する)したり、
他のソフトと連携して使うことのほうが多いようです。
まぁ、Linuxシステムを侵食するウイルスは少ないですから・・・

やること一覧
	・事前準備インストールデータベースの更新使い方(簡単に)

関連ページ
	・定期ウイルスチェックスクリプト



事前準備

結構いろいろなソフトが必要になる。
片っ端から入れていこう。

その1)gmp(謎ソフト:電子署名関係のソフトらしい)
gmp-4.2.1.tar.gzを探してくる。
The GNU MP Bignum Library
Index of /pub/GNU/gmp
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ

	$ tar xvfz gmp-4.2.1.tar.gz
	$ cd gmp-4.2.1
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
		注:結構時間がかかる

その2)curl(謎ソフト:なんだろう?wgetみたいな奴??)
インストール手順は別項:rep2(2ちゃんねるビューア)#curlのインストール参照

素のcurlのインストールは以下の通り
curl-7.16.1.tar.gzを探してくる。
cURL and libcurl
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ
	$ tar xvfz curl-7.16.1.tar.gz
	$ cd curl-7.16.1
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
おまじない
	# strip -p /usr/bin/curl

その3)bc(電卓ソフト)
bc-1.06.tar.gzを探してくる。
Index of /pub/gnu/bc
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ
	$ tar xvfz bc-1.06.tar.gz
	$ cd bc-1.06
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
おまじない
	# cd /usr/bin
	# strip -p bc dc
その4)check(謎ソフト)
check-0.9.5.tar.gzを手に入れる。
	$ wget http://downloads.sourceforge.net/check/check-0.9.5.tar.gz
		参考:Check
例のあれ
	$ tar xvfz check-0.9.5.tar.gz
	$ cd check-0.9.5
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
インストールされるもの
	[prefix]/include/check.h
	[prefix]/info/check.info
	[prefix]/lib/libcheck.*
	[prefix]/lib/pkgconfig/check.pc
	[prefix]/share/aclocal/check.m4
	[prefix]/share/doc/check/
その5)bzip2 and libbzip2(圧縮展開用ソフト)
bzip2-1.0.6.tar.gzを手に入れる。
	$ wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
		参考:bzip2
例のあれ
	$ tar xvfz bzip2-1.0.6.tar.gz
	$ cd bzip2-1.0.6
	$ make -f Makefile-libbz2_so
	$ make
	$ make check
	# make install PREFIX=/usr
	
	ライブラリの置き換え
	# cp libbz2.so.1.0 libbz2.so.1.0.6 /usr/lib/
	# rm /usr/lib/libbz2.so /usr/lib/libbz2.so.0 /usr/lib/libbz2.so.1
	# ln -s /usr/lib/libbz2.so.1.0.6 /usr/lib/libbz2.so
	# ln -s /usr/lib/libbz2.so.1.0.6 /usr/lib/libbz2.so.0
	# ln -s /usr/lib/libbz2.so.1.0.6 /usr/lib/libbz2.so.1
		(参考)6.36. Bzip2-1.0.5
			bzip2-1.0.6

インストールされるもの?
	[prefix]/bin/
		bunzip2 bzcmp bzegrep bzgrep bzip2recover bzmore bzcat
		bzdiff bzfgrep bzip2 bzless
	[prefix]/include/bzlib.h
	[prefix]/lib/libbz2.a
	[prefix]/man/man1/
		bzcmp.1 bzdiff.1 bzegrep.1 bzfgrep.1 bzgrep.1 bzip2.1 bzless.1 bzmore.1
おまじない
	# strip -p /usr/bin/bunzip2 /usr/bin/bzip2
その6)pcre(謎w):0.99.2あたりでデータベース更新時エラーが出るので。
pcre-8.34.tar.gzを手に入れる。
	$ wget https://ftp.pcre.org/pub/pcre/pcre-8.34.tar.gz
		参考:PCRE - Perl Compatible Regular Expressions
例のあれ
	$ tar xvfz pcre-8.34.tar.gz
	$ cd pcre-8.34
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
インストールされるもの: install files list(default): use command is: ls -pR /usr/local >~/bin.txt

	[prefix]/bin:
		pcre-config pcregrep pcretest
	[prefix]/include:
		pcre.h pcre_scanner.h pcre_stringpiece.h pcrecpp.h pcrecpparg.h pcreposix.h
	[prefix]/lib:
		libpcre.a libpcre.la libpcre.so* libpcrecpp.a libpcrecpp.la libpcrecpp.so*
		libpcreposix.a libpcreposix.la libpcreposix.so*
	[prefix]/lib/pkgconfig:
		libpcre.pc libpcrecpp.pc libpcreposix.pc
	[prefix]/share/doc/pcre:
		pcre-config.txt pcre.txt pcregrep.txt pcretest.txt
	[prefix]/share/doc/pcre/html/pcre*.html
	[prefix]/share/man/man1/pcre*.1
	[prefix]/share/man/man3/pcre*.3
		一部除く(正確にはリンクテキスト内を参照)
「謎ソフト」
事前準備に必要なソフトはclamavのconfigure時に文句の出る部分です。
まぁ、一部は「インストールの必要がない」といったサイトも見られますが、
エラーとかワーニングが出たままってのはちょっと嫌な気分ですので、
つぶせるならつぶそうかと。。。

まぁ、気分の問題ですので気にしなければ(゚ε゚)キニシナイでOKかなぁ?


あ、pkg-configはインストールしなくても関係ないみたいだからパスな(を

インストール

専用のユーザーを作る。

	# groupadd -g 22 clamav
	# useradd -g clamav -u 22 -d /var/empty -s /bin/false clamav
ユーザーをロックする
	# vipw
	または
	# vi /etc/passwd
		変更点:! を * に書き換える

サクっとインストールする。
clamav-0.100.1.tar.gzを探してくる。
ClamAV: Project News
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ
	$ tar xvfz clamav-0.100.1.tar.gz
	$ cd clamav-0.100.1
	$ ./configure --prefix=/usr
	$ wget http://kuro.crow2.net/enhance/data/manager.c.patch
	$ patch -p0 < manager.c.patch
	$ make
	$ make check
	# make install
		注:やっぱりそれなりに時間がかかる
		注:0.100.1からエラーでmakeがこけるのでfreshclam/manager.cの修正が必要
			「変数?が宣言されていない」と言うエラーを吐くので無かったことにするパッチです(→荒療治)
参考:clamav0.95以前からのアップデート場合は[prefix]/lib/の libclamav* libclamunrar* を削除する。
	make check のログ(一部)
	┃LibClamAV Error: magic_scandesc: Can't fstat descriptor 1835103789
	┃LibClamAV Warning: cli_unlink: failure - No such file or directory
	┃LibClamAV Error: magic_scandesc: Can't fstat descriptor 1835103789
	┃LibClamAV Warning: cli_unlink: failure - No such file or directory
	┃clamscan did not detect all testfiles correctly!
	┃make[2]: *** [check-TESTS] Error 1
	┃make[1]: *** [check-am] Error 2
	┃make: *** [check-recursive] Error 1
		注:他にもテスト中、clamd.shでFAILしたりする。
参考:clamav0.98のmake checkでエラーが出る。
内容を調べると「規定時間内に処理が完了しなかった」的な?(どう判断するかは皆さん次第)
	make check のログ(一部)
	┃FAIL: check_clamav
	┃PASS: check_freshclam.sh
	┃PASS: check_sigtool.sh
	┃SKIP: check_unit_vg.sh
	┃PASS: check1_clamscan.sh
	┃PASS: check2_clamd.sh
	┃PASS: check3_clamd.sh
	┃PASS: check4_clamd.sh
	┃SKIP: check5_clamd_vg.sh
	┃SKIP: check6_clamd_vg.sh
	┃SKIP: check7_clamd_hg.sh
	┃SKIP: check8_clamd_hg.sh
	┃SKIP: check9_clamscan_vg.sh
	┃========================================
	┃1 of 7 tests failed
	┃(6 tests were not run)
	┃See unit_tests/test-suite.log
	┃Please report to http://bugs.clamav.net/
	┃========================================
	┃make[3]: *** [test-suite.log] Error 1
	┃make[3]: Leaving directory `/mnt/home/rutiferu/clamav-0.98/unit_tests'
	┃make[2]: *** [check-TESTS] Error 2
	┃make[2]: Leaving directory `/mnt/home/rutiferu/clamav-0.98/unit_tests'
	┃make[1]: *** [check-am] Error 2
	┃make[1]: Leaving directory `/mnt/home/rutiferu/clamav-0.98/unit_tests'
	┃make: *** [check-recursive] Error 1
インストールされるもの
	[prefix]/bin/
		clam* freshclam sigtool
	[prefix]/etc/
		clamd.comf freshclam.conf
	[prefix]/include/clamav.h
	[prefix]/lib/
		libclamav* libclamunrar*
	[prefix]/lib/pkgconfig/libclamav.pc
	[prefix]/sbin/clamd
	[prefix]/share/clamav/
	[prefix]/share/man/man1/
		clam* freshclam.1 sigtool.1
	[prefix]/share/man/man5/
		calmd.conf.5 freshclam.conf.5
	[prefix]/share/man/man8/
		clamav*
おまじない
	# cd /usr/bin
	# strip -p clamdscan clamscan freshclam sigtool clamconf
	# strip -p /usr/sbin/clamd
初期設定とか
設定ファイルの変更
	# vi /usr/etc/freshclam.conf
	# vi /usr/etc/clamd.conf
		(追加)
		┃#Example
			注:両方とも同じ変更
freshclamのログファイルを作成
	# touch /var/log/freshclam.log
	# chown clamav /var/log/freshclam.log
「clamav」
はい。このサブタイトル2回目ですw
clamavについてですね。
あ〜・・・え〜・・・っと、
アンチウイルスソフトですのでデータベース(シグネチャといっているようですが)の更新と
ソフト自体のアップデートが多いです。
データベースのほうは自動化できますが、流石にアップデートまでは・・・
(がんばればスクリプト組めると思うけど・・・ルーティーン作業だから)
ということで、再インストールの方法を・・・

普通にコンパイルしてインストール。以上。
あ、デーモンで動かしている人は止めてからね。インストールは。
ただそれだけ。Linuxって簡単♪
Winだとアンインストールしてから・・・とか、再起動が必要・・・とか、五月蝿いけど、ね。

データベースの更新

ウイルス情報を格納しているデータベースの更新方法。
これをやらないとウイルスソフトも無用の長物(ちょっと言いすぎ)

	# freshclam --quiet -l /var/log/freshclam.log
		

option説明など
--quiet標準出力への表示を抑止する
-lログファイルを作成(追記)する

以上。
都度、実行すること。。。って、面倒臭いorz
なので、cronさんにお願いすることにする。
	# crontab -e
		┃3  */4   *   *   *  freshclam -l /var/log/freshclam.log | grep WARNING
			注:上記では毎日4時間ごとの3分にデータベースの更新確認をします
「quiet」
これを使うと不要な情報が表示されないようになります。
でも、clamavの更新情報(warningレベル)も表示されないので、cronさんにお願いするときには
freshclam -l /var/log/freshclam.log | grep WARNING
とコマンドを変更したほうがいいです(本文のほうもそうしてあるけど)
メール鯖があるならこれで更新情報が手に入リますので。

使い方(簡単に)

簡単に使う方法をメモ。

スキャン方法(手動)

	$ clamscan [-vr] pass..
		

option説明など
-v詳細を出力する
-r再帰的に検査する
ディレクトリを指定すると指定したディレクトリ自身と
そのサブディレクトリに存在するファイルを全て検査する

結果「OK」:問題なし 結果「FOUND」:ファイルにウイルスが含まれる 結果「Access denied」:アクセス権限が無いため検査できなかった

「スキャン」
何度も書いていますが、clamavで判るのは「ウイルスに感染している可能性が高いかどうか?」です。
もちろん、誤判定もありますので検査後の処理は各自の責任で行ってください。

なお、玄箱(ノーマル)の性能では1GBを検査するのに約30分かかります。
/mnt/shareを-r付きで処理して「いつまでたっても終わらない・・・」という落ちはなしの方向で。
よろしく♪

まぁ、この手動スキャンもいちいちやってると面倒なので自動化したのですが、
それはまた別の話で・・・


戻るなら押せ!