• 検索結果がありません。

ウィルス検疫機能チューニング

N/A
N/A
Protected

Academic year: 2021

シェア "ウィルス検疫機能チューニング"

Copied!
13
0
0

読み込み中.... (全文を見る)

全文

(1)

ウィルス検疫機能チューニング

F-Secure Linux Security 編

コンピュータ・ハイテック株式会社

(2)

目次

1. はじめに ... 3 1.1 用途 ... 3 1.2 対象者 ... 3 2. ウィルス検疫機能の問題点 ... 4 2.1 TeamFile のウィルス検疫機能 ... 4 2.2 fsav コマンドを利用したウィルス検疫の仕組み ... 4 3. fsavd(daemon)の常時起動 ... 5 3.1 事前準備 ... 5

3.1.1 F-Secure Linux Security のバージョン ... 5

3.2 設定作業 (initd の場合 – CentOS6) ... 5 3.2.1 init スクリプトの準備 ... 5 3.2.2 /etc/init.d/fsavd の編集 ... 5 3.2.3 「teamfile」ユーザを「fsc」グループへ追加 ... 6 3.2.4 /etc/init.d/fsavd の起動と確認 ... 6 3.3 設定作業 (systemctl の場合 – CentOS7) ... 7 3.3.1 Unit ファイルの作成 ... 7 3.3.2 Unit の有効化 ... 7 3.3.3 Unix ドメインソケットの保存パスを作成 ... 7 3.3.4 F-secure の設定ファイルの変更(/tmp の場所変更) ... 8 3.3.5 systemctl によるの起動と確認 ... 8 4. 定義ファイルのアップデートについて ... 9 5. fsavd のリソースについて ... 10 6. daemon の障害に対して ... 11 7. テスト環境 ... 12

(3)

1. はじめに

1.1 用途

この文書には、下記の情報が記載されています。 ➢ TeamFile のウィルス検疫機能を利用する際に発生する問題点とそれに対する対処方法

1.2 対象者

TeamFile サーバ管理者

(4)

2. ウィルス検疫機能の問題点

F-Secure Linux Security に変更されてから「fsav」と呼ばれるコマンドの起動が著しく遅くなるという現 象が発生しています。この現象は旧バージョンでは見受けられなかった現象です。F-Secure のインストー ルもデフォルトインストールで問題がありませんでした。しかし、デフォルトでは動作が遅くなるという現象で は TeamFile サーバの速度低下ということにもつながります。

本章ではどのような仕組みでウィルス検疫が動作し問題をおこしているかを説明します。

2.1 TeamFile のウィルス検疫機能

TeamFile の F-Secure ウィルス検疫機能はコマンドラインへパラメータを渡し fork & exec を行います。 起動するコマンドは、fsav 直接ではなく、TeamFile で用意された Shell コマンドです。これは TeamFile のディレクティブの「TfVscCmd」によって指定されています。

TfVscCmd "/home/yone/apache2/bin/fsav.sh"

この Shell は、内部で F-Secure のコマンドライン「fsav」を呼びパラメータを渡して結果を取得します。

2.2 fsav コマンドを利用したウィルス検疫の仕組み

fsav コマンドは TeamFile より渡されたパラメータのファイルを実行し、fsavd と呼ばれる daemon プログ ラムにそのチェックするデータをソケット(UNIX ドメイン)経由でチェックを行います。 fsav から起動された fsavd はウィルス検疫を行うためにパターンファイルの読み込みを開始します。 fsav は、この fsavd の準備が整うまで待機します。準備まで、およそ 90 秒かかります。(マシンスペックによ ってはさらに時間を要します) TeamFile のウィルス検疫はユーザのファイルアップロードオペレーションと連動している為に、ウィルスチ ェックが終了しない限りファイルアップロードは完了しません。 また、一度起動した fsavd は、次のリクエストが 30 秒間来ない場合には、自動的に停止します。

daemon でありながら fsav コマンド終了によって停止してしまう仕様の( standalone モード)為に TeamFile のアップロード動作にも遅さを感じてしまいます。

(5)

3. fsavd(daemon)の常時起動

fsavd の起動が fsav の呼び出しによる起動では、都度起動を行うために効率が悪くなります。しかし fsavd の常時起動を行うことにより、この問題を解消できます。常時起動を行うことにより都度起動で毎回読み込 まれていたパターンファイルを読み込んでおくようになるため速度が著しく向上します。

3.1 事前準備

3.1.1 F-Secure Linux Security のバージョン

以下のバージョンでの作業を前提とします。

$ fsav –version

F-Secure Linux Security version 11.10 build 68 F-Secure Security Platform version 2.50 build 20576

3.2 設定作業 (initd の場合

– CentOS6)

TeamFile サーバを停止せずにある程度の設定は可能ですが、安全に作業を行うために TeamFile サー バの停止を行ってください。もし停止が困難な場合は、太字下線に注意の上作業をしてください。 3.2.1 init スクリプトの準備 daemon 起動を行うために init.d を利用してマシンの再起動でも起動を行えるようにします。 # cp /opt/f-secure/fssp/etc/fsavd /etc/init.d/ # chkconfig --add fsavd

# chkconfig --list fsavd

fsavd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

この作業は root で行ってください。 TeamFile サーバの停止を行わずに安全に作業ができます。

3.2.2 /etc/init.d/fsavd の編集

20 行目の以下の部分を「teamfile」ユーザへ変更します。

# ${fsavuser} is username for fsavd. Leaving it empty will # cause program to run as current user.

#fsavuser=fsav << ここをコメントアウト fsavuser=teamfile << これを追加

(6)

3.2.3 「teamfile」ユーザを「fsc」グループへ追加

fsavd の起動は、/etc/opt/f-secure/fssp/fssp.conf を読み込み行われます。また、このファイルは fsav コマンドでも参照されるファイルです。しかし、3.2.2 で追加した「teamfile」ユーザではこのファイルは権 限んがなく、参照できません。デフォルトインストールは以下のような権限になっています。 -rw-r--- 1 root fsc 13775 9月 12 12:10 fssp.conf fsc と呼ばれるグループが既に f-secure のインストーラーによって作られています。このグループに 「teamfile」ユーザを vigr コマンドを利用して追加します。 # vigr fsc:x:505:teamfile << teamfileを最後に追加 続けて、/etc/gshadow も同じように変更してください。 この作業は root で行ってください。 TeamFile サーバの停止を行わずに安全に作業ができます。 3.2.4 /etc/init.d/fsavd の起動と確認 init スクリプトを root で実行します。起動したメッセージと同時にプロンプトが戻ります。 # /etc/init.d/fsavd start

Starting F-Secure Anti-Virus daemon. #

起動したことを確認しますが、起動して数十秒はプロセスがひとつの以下の状態です。

# ps -ef | grep fsav

teamfile 1647 1 97 13:56 ? 00:00:37 /opt/f-secure/fssp/sbin/fsavd # 約 90 秒(これはスペックにより異なります)後には以下の通り二つのプロセスが起動されます。 teamfile 1647 1 34 13:56 ? 00:01:39 /opt/f-secure/fssp/sbin/fsavd teamfile 1775 1647 0 13:57 ? 00:00:00 /opt/f-secure/fssp/sbin/fsavd この状態で fsavd がパターンファイルを読み込み、リスナー起動した完全な起動状態になります。 この一つのプロセスの状態から二つのプロセスへの遷移は、fsav を起動してウィルス検疫を行う時間と等し いです。つまり、もしこの間にチェックが行われた場合でも、二つ目のプロセスが起動されるまでユーザは待 機させられます。 この作業は、TeamFile サーバの停止を行った後に行うことが望ましいです。しかし、従来の都度起動型と今 回の起動ではプロセスが異なりますので、稼働中に行っても問題は起きません。本プロセスが正常に起動した 段階で、起動後のチェックはすべてこちらの daemon タイプのチェックに流れるようになります。

(7)

3.3 設定作業 (systemctl の場合

– CentOS7)

TeamFile サーバを停止せずにある程度の設定は可能ですが、安全に作業を行うために TeamFile サー バの停止を行ってください。もし停止が困難な場合は、太字下線に注意の上作業をしてください。 3.3.1 Unit ファイルの作成 F-Secure をデーモンで起動するための Unit ファイルが容易されていない為新規で作成します。 [Unit]

Description=F-Secure Anti-Virus daemon

After=network.target remote-fs.target nss-lookup.target [Service]

User=teamfile Group=teamfile Type=simple

ExecStart=/opt/f-secure/fssp/sbin/fsavd --nodaemon ExecReload=/bin/kill -HUP $MAILPID

ExecStop=/opt/f-secure/fssp/bin/fsav --shutdown PrivateTmp=false [Install] WantedBy=multi-user.target このファイルを次の場所に配置します。 /usr/lib/systemd/system/fsavd.service パーミッションを次の通りとします。 # chmod 644 /usr/lib/systemd/system/fsavd.service 3.3.2 Unit の有効化 # cd /usr/lib/systemd/system/ # systemctl enable fsavd.service

Created symlink from /etc/systemd/system/multi-user.target.wants/fsavd.service to /usr/lib/systemd/system/fsavd.service.

3.3.3 Unix ドメインソケットの保存パスを作成

対象のパスを生成して権限を変更します。

# mkdir -p /var/lib/teamfile/tmp

# chown teamfile:teamfile /var/lib/teamfile/tmp

(8)

3.3.4 F-secure の設定ファイルの変更(/tmp の場所変更) Unix ドメインを利用するために、デフォルトの/tmp を変更します。 変更する f-secure 設定ファイルパス /etc/opt/f-secure/fssp/fssp.conf 526 行あたり #

# FSAV will add the current user-id to the path to make it possible for # different users to run independent instances of the server.

# #daemonSocketPath /tmp/.fsav daemonSocketPath /var/lib/teamfile/tmp/.fsav この修正を実施しないと、ウィルスチェックの度に新しいプロセスを作ってしまうため TeamFile 自体のアッ プロード速度が低下します。 3.3.5 systemctl によるの起動と確認

# systemctl start fsavd

(9)

4. 定義ファイルのアップデートについて

F-Secure はほぼ毎日定義ファイルを更新します。今回の仕組みは daemon 起動ですがこの定義ファイ ルはしかるべくタイミングで読み込みを行うようにされています。 この情報は F-secure 社からの回答をうけております。 また、このタイミングは弊社が調査した結果、以下の動きを行っていると予想されます。 1. パターンファイルのアップデート(これは dbupdate(cron)によって行われます)) 2. fsav のウィルスチェック時に1のパターンの変更状態を確認 3. 変更があれば再度読み込みなおしチェックをおこなう。 2から3の時に少しばかり待たされる動きをとりました。しかし都度起動のような遅さではありません。つまりア ップデートファイルの適用はすべて自動で行われるようになっています。

(10)

5. fsavd のリソースについて

fsavd は一つのプロセスで一つのファイルをチェックします。連続的なチェックの場合でもそれは同じです。 しかしながら TeamFile のように複数のプロセスがチェックを行わせるようなケースの場合、fsavd は自分 自身を複製し対応するようになります。 デフォルトでは/etc/opt/f-secure/fssp/fssp.conf の daemonMaxScanProcesses の4プロセスです。 このパラメータは 100 まで設定できますが、デフォルトの4でも4つまでのプロセスしか処理しないわけでは なく振り分けながら処理を行います。(5つめがきても待たされません) また、一度起動したプロセスは負荷が低下してもそのまま待機し続けます。これは OS のリソースを無駄に 消費する可能性もありますのであまり大きな数字を設定してはシステムリソースを圧迫します。 デフォルトの状態で実際の TeamFile のアップロードで速度の低下を感じた時にこの数字を変更してくだ さい。変更を行った場合は、サービスの再起動が必要です。

(11)

6. daemon の障害に対して

daemon モードは常時起動となっていますが、もしこの daemon がダウンしてしまった場合にウィルスチェ ッ ク が 行 え な い と い う 訳 で は あ り ま せ ん 。 Fsav が daemon を 利 用 す る か 否 か は 、 /etc/opt/f-secure/fssp/fssp.conf 内で記載されている以下の部分で決められています。(304 行目)

#

# In standalone mode a new fsavd daemon is launched for every client. Usually # you do not want this because launching the daemon has considerable overhead. # # Possible values: # 0 - No # 1 - Yes # 2 - Auto # odsStandalone 2 daemon モードをどのような動きにするかを決定します。デフォルトでは「2の Auto」になります。 この状態だと、daemon が存在すればそれを利用しなければ自分で fsavd を起動し利用するようになりま す。0だと daemon が存在しない場合 fsav コマンドが失敗します。

(12)

7. テスト環境

本資料を作成する為に利用したマシン構成です。

7.1 cat /proc/cpuinfo(CentOS7 on VMWare)

[root@rhel7(x64) system]# cat /proc/cpuinfo processor : 0

vendor_id : GenuineIntel cpu family : 6

model : 23

model name : Intel(R) Xeon(R) CPU E5420 @ 2.50GHz stepping : 6 microcode : 0x606 cpu MHz : 2493.750 cache size : 6144 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 10 wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx lm constant_tsc

arch_perfmon pebs bts nopl tsc_reliable nonstop_tsc aperfmperf eagerfpu pni ssse3 cx16 sse4_1 hypervisor lahf_lm dtherm

bogomips : 4987.50 clflush size : 64 cache_alignment : 64

address sizes : 40 bits physical, 48 bits virtual power management:

(13)

Copyright (c) 2018 COMPUTER HI-TECH INC., All rights reserved. 本書の無断転載を禁じます。

TeamFile はコンピュータ・ハイテック株式会社の登録商標です。

のロゴはコンピュータ・ハイテック株式会社の商標です。 本書に記載されているその他の名称及びマークは各社の登録商標または商標です。

コンピュータ・ハイテック株式会社 (COMPUTER HI-TECH INC.) 〒110-0015

東京都台東区東上野 3-18-7 上野駅前ビル E-mail: teamfile@cht.co.jp

参照

関連したドキュメント

攻撃者は安定して攻撃を成功させるためにメモリ空間 の固定領域に配置された ROPgadget コードを用いようとす る.2.4 節で示した ASLR が機能している場合は困難とな

Generative Design for Revit は、Generative Design を実現するために Revit 2021 から搭 載された機能です。このエンジンは、Dynamo for

チューリング機械の原論文 [14]

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

Jabra Talk 15 SE の操作は簡単です。ボタンを押す時間の長さ により、ヘッドセットの [ 応答 / 終了 ] ボタンはさまざまな機

口腔の持つ,種々の働き ( 機能)が障害された場 合,これらの働きがより健全に機能するよう手当

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

ここで, C ijkl は弾性定数テンソルと呼ばれるものであり,以下の対称性を持つ.... (20)