Linuxをサーバー用途でなくデスクトップで使う場合は、ウィルスチェックのソフトは必要ないという意見もあるが、インストールして心の平穏を得られるのであれば、入れる価値がある。
非力なPCに不要なソフトを追加しなくても良いという意見もあるが、そこは負荷をかけないようにniceで調整だ。
Linuxのフリーのウィルスチェックソフトといえば、ClamAVが定番だ。
ググればインストール方法が山のように出てくる。
今回もそれに従って、サクッと終わる予定だったのだが、思った以上に手間取った。
手間取った理由の1つは、OnAccessの設定がUbuntuでは難しいのだ。
1.ClamAvのインストール
まずはClamAvのインストールを行う。
コマンドウィンドウから以下の実行
sudo apt install clamav clamav-daemon
2.ウィルスファイルの移動先を準備
ウィルスが見つかったら移動する場所を作る。
mkdir /root/quarantine
3.clamd.confの修正
ClamAVが読むconfigurationファイルを修正する。
赤字が修正箇所。
ここのサイトを参考に修正した。
ExcludePathを追加している。
#Automatically Generated by clamav-daemon postinst #To reconfigure clamd run #dpkg-reconfigure clamav-daemon #Please read /usr/share/doc/clamav-daemon/README.Debian.gz for details #LocalSocket /var/run/clamav/clamd.ctl #FixStaleSocket true #LocalSocketGroup clamav #LocalSocketGroup root #LocalSocketMode 666 # TemporaryDirectory is not set to its default /tmp here to make overriding # the default with environment variables TMPDIR/TMP/TEMP possible TCPSocket 3333 TCPAddr 127.0.0.1 #User clamav User root ScanMail true ScanArchive true ArchiveBlockEncrypted false MaxDirectoryRecursion 15 FollowDirectorySymlinks false FollowFileSymlinks false ReadTimeout 180 MaxThreads 12 MaxConnectionQueueLength 15 LogSyslog false LogRotate true LogFacility LOG_LOCAL6 LogClean false LogVerbose false PreludeEnable no PreludeAnalyzerName ClamAV DatabaseDirectory /var/lib/clamav OfficialDatabaseOnly false SelfCheck 3600 Foreground false Debug false ScanPE true MaxEmbeddedPE 10M ScanOLE2 true ScanPDF true ScanHTML true MaxHTMLNormalize 10M MaxHTMLNoTags 2M MaxScriptNormalize 5M MaxZipTypeRcg 1M ScanSWF true ExitOnOOM false LeaveTemporaryFiles false AlgorithmicDetection true ScanELF true IdleTimeout 30 CrossFilesystems true PhishingSignatures true PhishingScanURLs true PhishingAlwaysBlockSSLMismatch false PhishingAlwaysBlockCloak false PartitionIntersection false DetectPUA false ScanPartialMessages false HeuristicScanPrecedence false StructuredDataDetection false CommandReadTimeout 30 SendBufTimeout 200 MaxQueue 100 ExtendedDetectionInfo true OLE2BlockMacros false AllowAllMatchScan true ForceToDisk false DisableCertCheck false DisableCache false MaxScanTime 120000 MaxScanSize 100M MaxFileSize 25M MaxRecursion 16 MaxFiles 10000 MaxPartitions 50 MaxIconsPE 100 PCREMatchLimit 10000 PCRERecMatchLimit 5000 PCREMaxFileSize 25M ScanXMLDOCS true ScanHWP3 true MaxRecHWP3 16 StreamMaxLength 25M LogFile /var/log/clamav/clamav.log LogTime true LogFileUnlock false LogFileMaxSize 0 Bytecode true BytecodeSecurity TrustSigned BytecodeTimeout 60000 ExcludePath ^/dev/ ExcludePath ^/proc/ ExcludePath ^/snap/ ExcludePath ^/run/ ExcludePath ^/sys/ ExcludePath ^/root/quarantine #ScanOnAccess true OnAccessMaxFileSize 5M OnAccessMountPath /home OnAccessIncludePath /home OnAccessExcludeUname root OnAccessPrevention true OnAccessExtraScanning false VirusEvent /root/bin/notify_viruscheck.sh OnAccessExcludeRootUID yes OnAccessRetryAttempts 3 |
4.発見時の動作スクリプトnofity_viruscheck.shの準備
メールで知らせることもありだが、今回はメールサーバーも立ち上げる予定もないので、notify-sendのコマンドで、ユーザーに知らせることにした。
ここのサイトを参照した。
ただし、notify-sendコマンドは10秒程度でメッセージが消えてしまうので、表示時間を長くしてある。
この指定をすると約25日(!)表示することになる。
#!/bin/bash PATH=/usr/bin # Send an alert to all graphical users. |
5.clamonaccのサービスを作成
Linux Mintに限らず、Ubuntuではclamonaccのサービスは標準では用意されていないらしい。
/etc/systemd/system/clamonacc.service
を作成する。
これも、ここのサイトを参照したが、clamonaccのオプションに–fdpassが抜けており、そのままにするとclamavのアカウントで読めないファイルがに対して、
“File path check failure on: ……………………”
のエラーがsystemのログに大量に発生することになる。
[Unit] [Service] [Install] |
6.サービスの開始
用意したサービスを開始する。
systemctl enable clamav-daemon.service
systemctl enable clamonacc.service
systemctl enable clamav-freshclam.service
念のため、エラーがないことを確認。
systemctl status clamav-daemon.service
systemctl status clamonacc.service
systemctl status clamav-freshclam.service
7.rootをclamavに登録
usermod -a -G clamav root
8.cronの登録
$sudo crontab -e
これで、一日2度のワクチンファイルのアップデート
週に5回の/homeと/tmpのウィルスチェック
週に1回の全ファイルチェックが行われる。
niceで優先度低めなので、遅いPCでも大丈夫だろう。
00 01,13 * * * /usr/bin/freshclam –quiet 0 19 * * 1-5 nice -n 16 systemd-cat –identifier=”clamav-scan” clamdscan –quiet –fdpass –move=/root/quarantine /home /tmp >/dev/null 2>&1 0 6 * * 6 nice -n 18 systemd-cat –identifier=”clamav-scan” clamdscan –quiet –fdpass –move=/root/quarantine / >/dev/null 2>&1 |
9.リブート
PCをリブートだ。
今回、PCを定期的にチェックする方法はいろいろなところに説明の情報がWEBで見つかったけど、OnAccessのやり方が少なくて、結構苦労した。
これができないと、ウィルスファイルをダウンロードしてもすぐにわからない。
実際に動作するかテストする。
https://www.eicar.org/
からダミーのウィルスファイルをダウンロードすると、画面の右上にウィルス発見と表示するようなった。
ようやく、ウィルスチェックができるようになった。