雑木林

頭の中の整理と忘れないための確認メモ

Sophos Anti-Virus for Linuxを使う

今までLinuxの無償アンチウイルスソフトといえばClamAVが代表的でしたが5月18日にSophos Anti-Virus for Linuxに無償版が提供されることが発表され、選択肢が広がりました(個人利用に限りますが…)。
基本的な使い方をさらってみたのでメモしておきます。

Sophos Anti-Virus for Linux(Free Edition)をダウンロードする

本体はこちらのサイトからダウンロード可能です。
ちなみに400MB以上あるので、気長にダウンロードが完了するのを待ちます。
また、上記URLにシステム要件等へのリンクも貼られています。
ただ、パッケージの要件がわからないのが難点です。

Sophos Anti-Virus for Linux(Free Edition)をインストールする

今回はCentOS7.1の最小構成インストールした環境にSophosを導入します。
念のため、firewalldは停止し、SELinuxもdisabledにしています。

はじめに、オンアクセススキャンを有効にするにはTalpa バイナリパックというのが必要になります。
主要なディストリビューションの場合、Sophosのアップデートサーバ側に用意されているようです。
CentOSの場合、7.1も対象になっているため自分で用意する必要はありません。
ちなみに自分でビルドする場合はgccをインストールする必要があります。
本当はkernel-headersも必要なのですが、gccをインストールすると依存関係でインストールされます。
詳細は(オンアクセススキャンのための Talpa バイナリパックをローカルでコンパイルする)を参照。


さて、インストールについてです。
予めダウンロードしたファイルを解凍し、インストーラを起動します。
インストーラの途中で無償バージョンか聞かれる点だけ気を付ければ良いです。

[root@localhost ~]# cd /tmp
[root@localhost tmp]# tar zxvf sav-linux-free-9.9.tgz
sophos-av/
sophos-av/sav.tar
sophos-av/talpa.tar
sophos-av/uncdownload.tar
sophos-av/install.sh
[root@localhost tmp]# sophos-av/install.sh



Sophos Anti-Virus
=================
Copyright (c) 1989-2015 Sophos Limited. All rights reserved.

Sophos Anti-Virus インストーラへようこそ。Sophos Anti-Virus には、オンアクセススキャナ、オンデマンドコマンドラインスキャナ、Sophos Anti-Virus デーモン、および Sophos Anti-Virus GUI があります。

オンアクセススキャナ         ファイルがアクセスされると検索し、未感染の場合のみアクセスを許可
オンデマンドスキャナ         コンピュータの全体または一部を直ちに検索
Sophos Anti-Virus デーモン  Sophos Anti-Virus にコントロール、ログ、メール警告機能を提供するバックグラウンドプロセス
Sophos Anti-Virus GUI        Web ブラウザ経由でアクセスするユーザーインターフェース


「Enter」キーを押して、使用許諾契約書を表示してください。そして、<spc> を押してスクロールダウンしてください。

(中略)

ライセンス内容に同意しますか? はい(Y)/いいえ(N) [N]
> Y

Sophos Anti-Virus のインストール先を指定してください。 [/opt/sophos-av]
>

オンアクセス検索を有効にしますか? はい(Y)/いいえ(N) [Y]
>

パスワードが入力されなかったため、Sophos Anti-Virus GUI を無効にしています。有効にするには、/opt/sophos-av/bin/savsetup を実行してください。
ソフォスは、Sophos Anti-Virus での自動アップデートの設定をお勧めします。

ソフォスから直接アップデートしたり(要アカウント情報)、自社サーバー(ディレクトリや Web サイト(アカウント情報が必要な場合もあります))からアップデートすることができます。

オートアップデートの種類を選択してください: ソフォス(s)/自社サーバー(o)/なし(n) [s]
>

ソフォスから直接アップデートしています。
SAV for Linux の無償バージョン (f) と サポート対応付きバージョン (s) のどちらをインストールしますか? [s]
> f

Sophos Anti-Virus for Linux の無償バージョンに対して、サポート対応は提供されていません。
無償ツールのフォーラムは次のサイトを参照してください。http://openforum.sophos.com/
ソフォスからアップデートを行うためにプロキシが必要ですか? はい(Y)/いいえ(N) [N]
>
Sophos Anti-Virus をインストールしています....
適切なカーネルサポートを選択しています...
Sophos Anti-Virus が起動すると、カーネルサポートを見つけるためアップデートします。 これによって大幅な遅れが発生することがあります。
Sophos Anti-Virus は、インストール終了後、開始されました。

インストールが完了しました。
オンアクセス検索は実行できません。kernel-headers がインストールされていないため、適切なカーネルサポートを取得・構築することができませんでした。
メールが /var/spool/mail/root にあります
[root@localhost tmp]#

このとき、gccが無いとgccが無いのでオンアクセス検索はできないと言われます。
上記はgccを入れた状態ですが、なぜか kernel-headersがあっても無いと怒られます…仕様?

オンアクセススキャンを有効にする

インストール直後のログを見ます。

[root@localhost ~]# /opt/sophos-av/bin/savlog
日時                     カテゴリ           イベント
2015年05月27日 22時23分10秒: savd.daemon    Sophos Anti-Virus デーモンが開始されました。
2015年05月27日 22時23分11秒: talpa.startup  Talpa モジュールをロードできません。

どうやら今回利用したインストーラではTalpaモジュールを作ってくれず、
CentOS7.1用のTalpaモジュールも入っていないため、このような動作になるようです。
CentOS7.1用のTalpaモジュールは手動でアップデートすることで取得することが可能です。

[root@localhost ~]# /opt/sophos-av/bin/savupdate
Updating Sophos Anti-Virus....
Updating Talpa Binary Packs
Updating SAVScan on-demand scanner
Updating Virus Engine and Data
Updating Talpa Kernel Support
Updating Manifest
Selecting appropriate kernel support...
Update completed.
sdds:SOPHOS からの Sophos Anti-Virus のアップデートに成功しました
[root@localhost ~]#

もう一度ログを見ます。

[root@localhost ~]# /opt/sophos-av/bin/savlog
日時                     カテゴリ           イベント
2015年05月27日 22時23分10秒: savd.daemon    Sophos Anti-Virus デーモンが開始されました。
2015年05月27日 22時23分11秒: talpa.startup  Talpa モジュールをロードできません。
2015年05月27日 22時27分57秒: update.updated Updating Sophos Anti-Virus....
Updating Talpa Binary Packs
Updating SAVScan on-demand scanner
Updating Virus Engine and Data
Updating Talpa Kernel Support
Updating Manifest
Selecting appropriate kernel support...
Update completed.
2015年05月27日 22時27分57秒: update.updated sdds:SOPHOS からの Sophos Anti-Virus のアップデートに成功しました
2015年05月27日 22時28分00秒: savd.daemon    talpa を使用してオンアクセス検索が有効になりました。

またステータスを確認することでオンアクセススキャンが有効であることが確認できます。

[root@localhost ~]# /opt/sophos-av/bin/savdstatus
Sophos Anti-Virus はアクティブで、オンアクセス検索を実行中です

ウイルス検知時の挙動

スタンドアローンの場合、デフォルトでは検知時に以下の挙動をします。

  • ユーザーへの通知(コンソール or GUI
  • root宛にメール送付
  • syslogへの記録(/var/log/messages)
  • savlogへの記録
[root@localhost ~]# wget http://files.trendmicro.com/products/eicar-file/eicar.com
--2015-05-27 23:18:58--  http://files.trendmicro.com/products/eicar-file/eicar.com
files.trendmicro.com (files.trendmicro.com) をDNSに問いあわせています... 61.213.181.179, 61.213.181.154
files.trendmicro.com (files.trendmicro.com)|61.213.181.179|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 68 [text/plain]
`eicar.com' に保存中

100%[===========================================================================================================================================================>] 68          --.-K/s 時間 0s

2015-05-27 23:18:58 (19.5 MB/s) - `eicar.com' へ保存完了 [68/68]

[root@localhost ~]#
********************** Sophos Anti-Virus 警告 **********************
脅威 "EICAR-AV-Test" が次のファイルで検出されました
"/root/eicar.com".

ファイルはまだ感染しています

**********************************************************************



[root@localhost ~]#
メールが /var/spool/mail/root にあります
[root@localhost ~]# cat /var/spool/mail/root
(中略)

From root@localhost.localdomain  Wed May 27 23:18:58 2015
Return-Path: <root@localhost.localdomain>
X-Original-To: root@localhost
Delivered-To: root@localhost.localdomain
Received: from localhost.localdomain (localhost [IPv6:::1])
        by localhost.localdomain (Postfix) with ESMTP id ADF63812A4A0
        for <root@localhost>; Wed, 27 May 2015 23:18:58 +0900 (JST)
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: root@localhost.localdomain
To: root@localhost.localdomain
Date: Wed, 27 May 2015 14:18:58 -0000
Subject: [SAV-LINUX] Threat 'EICAR-AV-Test' detected on localhost.localdomain
Message-Id: <20150527141858.ADF63812A4A0@localhost.localdomain>

A threat classified as 'EICAR-AV-Test' was detected in the file '/root/eicar.com' when closing it at Wed May 27 23:18:58 2015 JST +0900 (2015-05-27 14:18:58 UTC).



[root@localhost ~]# tail /var/log/messages
May 27 23:00:59 localhost systemd: Started "Sophos Anti-Virus GUI daemon".
May 27 23:01:01 localhost systemd: Starting Session 3 of user root.
May 27 23:01:01 localhost systemd: Started Session 3 of user root.
May 27 23:04:50 localhost savd: update.check: Successfully updated Sophos Anti-Virus from sdds:SOPHOS
May 27 23:18:54 localhost yum[4110]: Installed: wget-1.14-10.el7_0.1.x86_64
May 27 23:18:58 localhost kernel: talpa-deny: Access denied while closing /root/eicar.com on behalf of process wget[4115/4115] owned by 0(0)/0(0) <0>
May 27 23:18:58 localhost savd: Threat detected: EICAR-AV-Test in /root/eicar.com
May 27 23:23:10 localhost systemd: Stopped "Sophos Anti-Virus update".
May 27 23:23:10 localhost systemd: Starting "Sophos Anti-Virus update"...
May 27 23:23:10 localhost systemd: Started "Sophos Anti-Virus update".


[root@localhost ~]# /opt/sophos-av/bin/savlog
日時                     カテゴリ           イベント
2015年05月27日 22時23分10秒: savd.daemon    Sophos Anti-Virus デーモンが開始されました。
2015年05月27日 22時23分11秒: talpa.startup  Talpa モジュールをロードできません。
2015年05月27日 22時27分57秒: update.updated Updating Sophos Anti-Virus....
Updating Talpa Binary Packs
Updating SAVScan on-demand scanner
Updating Virus Engine and Data
Updating Talpa Kernel Support
Updating Manifest
Selecting appropriate kernel support...
Update completed.
2015年05月27日 22時27分57秒: update.updated sdds:SOPHOS からの Sophos Anti-Virus のアップデートに成功しました
2015年05月27日 22時28分00秒: savd.daemon    talpa を使用してオンアクセス検索が有効になりました。
2015年05月27日 23時04分50秒: update.check   sdds:SOPHOS からの Sophos Anti-Virus のアップデートに成功しました
2015年05月27日 23時18分58秒: log.threat     脅威が /root/eicar.com で検出されました: EICAR-AV-Test (閉じる)。(ファイルはまだ感染しています。)

設定にかんするアレコレ

デフォルトのサービス起動設定はこんな感じです。
スタンドアローンで実施する場合はいじらなくて良いと思います。
(自動アップデート等も設定されています。)

[root@localhost ~]# systemctl list-unit-files
(中略)
sav-protect.service                         enabled    (Sophos Anti-Virus daemon)
sav-rms.service                             disabled    (Sophos Management Agent)
sav-update.service                          disabled    (Sophos Anti-Virus update)
sav-web.service                             disabled    (Sophos Anti-Virus GUI daemon)

起動設定を変更する場合はsavdctlを使って設定します。

[root@localhost ~]# /opt/sophos-av/bin/savdctl
savdctl: Sophos Anti-Virus デーモンの制御
使用方法: savdctl [--daemon | --no-daemon] [コマンド][引数]
コマンド:
  help                   このヘルプ情報を表示する
  version                バージョンおよび著作権情報を表示する
  enable                 オンアクセス検索を有効にする
  disable                オンアクセス検索を無効にする
  enableOnBoot SERVICE   システム起動時に SERVICE を開始する
  disableOnBoot SERVICE  システム起動時に SERVICE を開始しない
  SERVICE                savd savwebd sav-protect sav-web

また、CLIでの設定はsavdconfigで行います。

[root@localhost ~]# /opt/sophos-av/bin/savconfig
savconfig: Sophos Anti-Virus の設定
使用方法: savconfig [オプション] ... [操作] [パラメータ] [値]
オプション:
  --[no]append        追加モードを設定する
  --[no]lock          ユーザーによる上書きを禁止する
  -u, --user          ユーザーレイヤーにアクセスする
  -c, --corporate     コーポレートレイヤーにアクセスする
  -U, --consoleupdate コンソール アップデートポリシーレイヤーにアクセスする
  -A, --consoleav     コンソール ウイルス対策ポリシーレイヤーにアクセスする
  -s, --sophos        ソフォスレイヤーにアクセスする
  -f, --configfile    別の環境設定ファイルを使用する
  -v, --all           基本的なパラメータの値やヘルプを表示する
  --advanced          高度なパラメータの値やヘルプを表示する

他のオプション:
  -F, --readfromfile        ファイルから読み取った値で引数を置き換える

操作:
  set                      パラメータを設定する
  update                   指定した検索をアップデートする
  add                      パラメータリストの終わりに値を追加する
  remove                   パラメータリストから値を除去する
  delete                   パラメータを削除する
  query/get                パラメータの値を出力する
  help                     このヘルプ情報を表示する

‘query’操作はパラメータなしで使用して、設定済みの値すべてを表示できます。
‘help’を指定すると、指定したパラメータに関する詳細情報を表示できます。
オプション‘-v’や‘--all’と共に指定すると、すべてのパラメータに関する詳細情報を表示できます。

デフォルトの設定値はこんな感じ。

[root@localhost ~]# /opt/sophos-av/bin/savconfig --advanced query
AllowCorruptInCleanArchive: オン
CacheFilesystems: ext3
                  ext4
                  ext2
                  tmpfs
                  devtmpfs
                  iso9660
                  udf
                  xfs
                  reiserfs
                  jfs
                  vfat
                  msdos
                  ntfs
                  hfs
                  minix
                  ramfs
                  romfs
                  ufs
                  umsdos
                  xenix
                  cramfs
DenyOnCorruptFile: オフ
DenyOnDetectionError: オフ
DenyOnOperatingSystemError: オン
Email: root@localhost
EmailDemandSummaryAlways: オフ
EmailDemandSummaryIfThreat: オン
EmailLanguage: English
EmailNotifier: オン
EmailServer: localhost:25
EnableOnStart: オン
EnableAutoUpdating: オン
ExclusionEncodings: UTF-8
                    EUC-JP
                    ISO-8859-1
FileCacheSizeBytes: 4096
FileScanTimeoutMs: 10000
FilesystemScanTimeoutMs: 60000
GraceKillTimeoutMs: 2000
GraceStopTimeoutMs: 10000
HookModule: talpa_vfshook
HttpPort: 8081
HttpUsername: admin
LogMaxSizeMB: 100
LogNotifier: オン
NotificationQueueLimit: 50
NotifyOnUpdate: オフ
NotifyOnUpdateCheck: オフ
OnAccessCache: オン
OnAccessIncludePath: /
PrimaryUpdateSourcePath: sophos:
PrimaryUpdateCachePath: /opt/sophos-av/update/cache/Primary
PrimaryUpdateUsername: FAVL3LPMS8733
PrimaryUpdatePassword: ********
PrimaryUpdateAllDistros: オフ
Processes: 2
RespawnLimit: 5
RespawnMax: 10
RespawnPeriodDurationMs: 20000
RestrictProcessExclusions: オフ
SendEmailMsgID: USING_BACKUP_CONFIGURATION
                ALL_UPDATE_SOURCES_FAILED
                RESPAWN-LIMIT
                VIRUS-DATA-OLD
                TALPA-FAILURE
                TALPA-COMPILED
SendEmailLogLevel: FATAL
SendErrorEmail: オン
SendThreatEmail: オン
StartupTimeoutMs: 60000
StopScanTimeoutMs: 10000
StopTimeoutMs: 20000
SyslogFacility: DAEMON
SyslogNotifier: オン
TalpaDebug: オフ
TalpaInclusionProcessor: オフ
TalpaVettingGroup: 0
TalpaVettingTimeoutMs: 100
ThreadsPerProcess: 5
AdaptiveThreading: オン
MaximumThreads: 5
UINotifier: オン
UIpopupNotification: オン
UIttyNotification: オン
UpdatePeriodMinutes: 60
UseExtendedRegex: オン
XSmartSchedulerFix: オン
LiveProtection: 有効
ScanArchives: オン/オフ

Sophos Anti-Virus for Linux(Free Edition)をアンインストールする

アンインストールする際はインストールフォルダ配下のuninstall.shを実行します。

[root@localhost ~]# /opt/sophos-av/uninstall.sh 
Sophos Anti-Virus をアンインストールしています。
警告: Sophos Anti-Virus はまだ稼動しています。
Sophos Anti-Virus を停止しますか? はい(Y)/いいえ(N) [N]
> Y

Sophos Anti-Virus を停止しています。
Sophos Anti-Virus はアンインストールされました。