Linux上で動作するAntiVirusに関して(II)

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

以前(2016)、「Linuxでの効果的なAntivirus の設定と運用」( 改訂版: Linux上で動作するAntiVirusに関して(I) )と題して、AntiVirusソフトウェアの一般的な話から、Antivirusソフトウェアがシステムパフォーマンスにもたらす影響の計測、更に効果的に使用する方法について解説しました。

今年(2019年)に入り、日経Linux様の2019年5月号で再びAntiVirusソフトウェアの一般的な話と、AntiVirusソフトウェアがシステムパフォーマンスにもたらす影響を最新のソフト/環境を用いて測定し直し、掲載して頂いてます。

ここでは、紙面の都合で紹介しきれなかった、システムパフォーマンスにもたらす影響のグラフと、そのデータに関する解説を掲載します。


計測の条件

詳しくは日経Linux様の2019年5月号で説明していますが、なるべく平準化して再現テストを行いたかったため、VMWareゲストを外付けのUSB3.0 SDDにインストールし、ゲスト環境で負荷試験を実施しました。また、パフォーマンス測定ツールがシステムに及ぼす影響を考え、全ての試験毎にVMWareのシャットダウン/ホストのシャットダウンを実施しています。更に、メモリ使用率等システム起動時に不安定になる項目もあるため、起動してから一定時間を置いて測定しています。

更に、今回使用したソフトウェアですが、オプション類は「デフォルト値」を使用しています。勿論オプションの設定で(スキャンするタイミングをsys_openにするのかsys_writeにするのか等)、パフォーマンスに影響が出てくることは分かっていますが、今回の検証に限ってはあくまでも「何も知らないユーザがインストールしてどのくらい影響があるのか?」を検証したかったためです。詳細オプションを修正することによりどの程度パフォーマンスに影響があるのかは、また別途機会を設けて行いたいと思います。

  1. テスト環境
  2. 
    ホストPC: Thinkpad X230 / Memory 16GB, Swap 16GB
    ホストOS: Debian(stretch)
    VMWareバージョン: VMWare Workstation 12.5.9 build-7535481
    VMWare ゲスト:
    (2 vcpus, 2 GB memory, 4GB Swap)
    (CPU: Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz)
    Storage: 36GB SSD
    開放したNetworkポート: 22(ssh), 14942-14943(Trend Micro WebUI用)
    OS: CentOS 7.6 ("yum -y groupinstall Server with GUI"でGUIを追加。)
    
  3. 比較ソフト
    • ESET NOD32 Antivirus 4 for Linux Desktop
    • Kaspersky Endpoint Security for Linux
    • Mcafee Endpoint Security for Linux Threat Prevention
    • Sophos Antivirus for Linux
    • ServerProtect for Linux
  4. 検証内容

    オンアクセススキャン/オンデマンドスキャンのそれぞれで、vmstatを用いてメモリの使用率を測っています。また、Phoronix Testsuiteを用いて以下の4つのテストを行いました。

    • AIO-Stress: Random Write (MB/s)
    • build-linux-kernel: Time To Compile (sec.)
    • ffmpeg: H.264 HD To NTSC DV (sec.)
    • openssl: RSA 4096-bit Performance (Sing/sec.)

    これらの検証結果に関しては、日経Linux 5月号に記載されています。

    また、同時に全てのスキャンでUnixBenchで性能の劣化を測っています。こちらのUnixBenchの測定の方はページの関係から雑誌の方には載せられなかったため、こちらのサイトで公開します。

  5. UnixBench内容
    UnixBenchの各項目が示す概略は以下のようになります。

    • Dhrystone 2 using register variables

      Dhrystone ベンチマークと呼ばれる整数演算処理のベンチマークになります。

    • Double-Precision Whetstone

      Whetstoneというベンチマークツールを使用した、浮動小数演算処理の性能のベンチマークになります。

    • Execl Throughput

      execl関数を実行して、システムコール処理性能をベンチマークします。

    • File Copy 1024 bufsize 2000 maxblocks

      ファイルのコピーを繰り返すテストで、2MByteのファイルを1024Byteごとに処理します。

    • File Copy 256 bufsize 500 maxblocks

      ファイルのコピーを繰り返すテストで、500KByteのファイルを256Byteごとに処理します。

    • File Copy 4096 bufsize 8000 maxblocks

      ファイルのコピーを繰り返すテストで、8MByteのファイルを4096Byteごとに処理します。

    • Pipe Throughput

      512Byteのデータのパイプ処理を繰り返しスループットをテストします。

    • Pipe-based Context Switching

      2つのプロセス間で更新される値をパイプで渡すことで、OSとCPUの処理性能をみます。

    • Process Creation

      プロセスのフォークを繰り返すことで、OSとCPUの処理性能をみます。

    • Shell Scripts (1 concurrent)

      sort、grepなどのテキスト処理を繰り返すシェルスクリプトを実行することで、CPUの処理性能をみます。

    • Shell Scripts (8 concurrent)

      上記の「1 concurrent」のシェルスクリプトを8個同時に実行することで、CPUの処理性能を見ます。

    • System Call Overhead

      getpid()システムコールを繰り返し実行することで、OSとCPUの処理性能をみます。


検証結果

UnixBenchの検証結果を記載します。各項目で、AntiVirusソフトウェアをインストールしていない状態(normal)でのUnixBench結果(Score)を100%とし、それぞれのAntiVirusソフトウェアをインストール後に実行したUnixBench結果を%で表しています。これにより、グラフ内で下に行くほど性能が劣化していることになります。

  1. オンアクセススキャン
  2. 1. 総合スコア(System Benchmarks Index Score)

    NormalKasperskyMcafeeNOD32SophosTrend
    Benchmark Run: 2 CPUs 1 parallel process:778.16636.9631.8543.4699.7700.8
    Benchmark Run: 2 CPUs 2 parallel process:1466.861136.21147.05904.21302.61314

    単純に総合スコアを見た場合には、特にスキャン処理を実施していなくてもTrend>Sophos>Mcafee,Kaspersky>ESET NOD32の順で、AntiVirusソフトウェアをインストールする前と比べて性能が劣化していきます。

    2. 各項目(1-Parallel)


    項目NormalKasperskyMcafeeNOD32SophosTrend
    Dhrystone_2_using_register_variables3032.123012.753026.452981.13019.13035.65
    Double-Precision_Whetstone798.48795.7796.9791.95796.25799.05
    Execl_Throughput354.58191.2253.5104.95352.9356.9
    File_Copy_1024_bufsize_2000_maxblocks1133.521031.951024.251045.11031.41120.35
    File_Copy_256_bufsize_500_maxblocks715.56682.7665.9692.65676.1739.6
    File_Copy_4096_bufsize_8000_maxblocks2293.242087.252169.72152.31972.72247.4
    Pipe_Throughput457.88462.3463.6436.95450.3444.3
    Pipe-based_Context_Switching254.24249.6251.4246.5245.7248.3
    Process_Creation385.14378.5384.75296.6385.8384.1
    Shell_Scripts_(1_concurrent)1018.18463.4405.25340.15710.55601.15
    Shell_Scripts_(8_concurrent)1546.9747.35573.1542.6919.5999.35
    System_Call_Overhead437.26437.3429.3291.5423.75342
    System_Benchmarks_Index_Score778.16636.9631.8543.4699.7700.8

    2. 各項目(2-Parallel)


    項目NormalKasperskyMcafeeNOD32SophosTrend
    Dhrystone_2_using_register_variables5778.245729.655770.055562.95773.655772.55
    Double-Precision_Whetstone1526.941523.451522.451520.251519.651525.3
    Execl_Throughput1089.64368.1613.85160.351089.91088.1
    File_Copy_1024_bufsize_2000_maxblocks1977.661747.11787.951773.451814.61996.55
    File_Copy_256_bufsize_500_maxblocks1241.381093.651133.91151.651135.61311.5
    File_Copy_4096_bufsize_8000_maxblocks4011.543722.63731.653381.23552.93915.2
    Pipe_Throughput866.16851.95834.05784.35853.1821.05
    Pipe-based_Context_Switching497.76472.85485.7443.5481.2466.55
    Process_Creation1188.161117.91139.4672.851149.51153.65
    Shell_Scripts_(1_concurrent)1648.82680.15574.45483.8977.951056.65
    Shell_Scripts_(8_concurrent)1566.4805.8611.7554.35910.1988
    System_Call_Overhead792.8821.1784.9509.1811.9584.75
    System_Benchmarks_Index_Score1466.861136.21147.05904.21302.61314

    考察

    AntiVirusのオンアクセススキャンは、通常Read/Write/Executeなどのシステムコールをフックして、アクセス先のファイルのスキャン処理を行います。そのため、グラフを見て分かる通り、処理が増えるため全体の数値が悪くなるのは理論上当然ですが、特に

    • Execl Throughput
    • File Copy *** bufsize *** maxblocks
    • Process Creation
    • Shell Scripts (8 concurrent)

    など、sys_read/sys_write/sys_execのシステムコールが発生するテストに於いて、通常のシステムに比べて一段と数値が悪くなっています。

    • System Call Overhead

    に関しては、getpid()だけなので本来数値が悪くならないはずですが(Sophos, Mcafee, Kaspersky)、TrendとNOD32は数値が悪くなっているため、getpid()を実行する際になんらかの処理を行っているものと推定されます。

    その他の純粋にCPU内だけの処理

    • Dhrystone 2 using register variables
    • Double-Precision Whetstone
    • Pipe Throughput

    に関しては、数値上大きな変動がみられません。このため、オンアクセススキャンを有効にしている場合には、特にファイルアクセスやプロセス実行時など、システムコールを使用する際にオーバーヘッドが掛かるということがわかります。

  3. オンデマンドスキャン
  4. 1. 総合スコア(System Benchmarks Index Score)

    NormalKasperskyMcafeeNOD32SophosTrendClamAV
    Benchmark Run: 2 CPUs 1 parallel process:778.16550.05703.85494.7700.85717.95711.55
    Benchmark Run: 2 CPUs 2 parallel process:1466.86812.1941.75617.9909.5974.9917.15

    単純に総合スコアを見た場合には、特にスキャン処理を実施していなくてもTrend,ClamAV>Sophos,Mcafee>Kaspersky>ESET NOD32の順で、AntiVirusソフトウェアをインストールする前と比べて性能が劣化していきます。

    2. 各項目(1-Parallel)


    項目NormalKasperskyMcafeeNOD32SophosTrendClamAV
    Dhrystone_2_using_register_variables3032.122460.52874.952671.22872.32889.252872.7
    Double-Precision_Whetstone798.48759760.7757.45759.4764.95759.15
    Execl_Throughput354.58256.4325.25117.25336.35344.3336.55
    File_Copy_1024_bufsize_2000_maxblocks1133.52825.95955865.8948.9952.9953.85
    File_Copy_256_bufsize_500_maxblocks715.56534621.1564612.85614.25616.05
    File_Copy_4096_bufsize_8000_maxblocks2293.241668.251962.41845.051981.91985.252065.65
    Pipe_Throughput457.88362.1424.2385.55398.6442.8422.1
    Pipe-based_Context_Switching254.24168.25239.2232.25233.5231.85235.8
    Process_Creation385.14305.65569.25334.8578.45550.1594.15
    Shell_Scripts_(1_concurrent)1018.18422.4752.65302.15797805.85797.55
    Shell_Scripts_(8_concurrent)1546.9775.1970.15427.45975.851020.2956.15
    System_Call_Overhead437.26357.9424.15260.6397457.05419.65
    System_Benchmarks_Index_Score778.16550.05703.85494.7700.85717.95711.55

    2. 各項目(2-Parallel)


    項目NormalKasperskyMcafeeNOD32SophosTrendClamAV
    Dhrystone_2_using_register_variables5778.243640.554034.353633.73928.34221.053832.7
    Double-Precision_Whetstone1526.941530.851518.41512.951517.71518.91521.45
    Execl_Throughput1089.64490.5689.45135.7685.25757.2682.45
    File_Copy_1024_bufsize_2000_maxblocks1977.661002.31116.3976.61034.451044.651079.95
    File_Copy_256_bufsize_500_maxblocks1241.38654.55744.5631.15662.85691.75691.5
    File_Copy_4096_bufsize_8000_maxblocks4011.541988.42216.552068.752242.62226.752339.65
    Pipe_Throughput866.16505.15595.1514.7530604.9527.35
    Pipe-based_Context_Switching497.76264.5360.55314.55319.65358.7340.5
    Process_Creation1188.16465567.75325.1608.6655.9576.75
    Shell_Scripts_(1_concurrent)1648.82710.8895.35384.2868.3993.35871.4
    Shell_Scripts_(8_concurrent)1566.41044.651067.3487.41068.051112.051070.4
    System_Call_Overhead792.8501.8539.3331.8534602.45527.85
    System_Benchmarks_Index_Score1466.86812.1941.75617.9909.5974.9917.15
  5. 考察
  6. AntiVirusのオンデマンドスキャンにより、当然のように処理が増えるため全体の数値が悪くなっています。特にCPUの機能劣化が顕著で、次にファイルアクセス、シェルの実行と機能が劣化しています。
    このため、オンデマンドスキャンを実施している場合には、CPU処理やファイルアクセスが必要な処理は特にオーバーヘッドが掛かるということがわかります。


考察

vmstatやPhoronix Test Suiteでのテストの結果に関しては日経Linuxを参照していただきたいのですが、以下のような結果が得られました。

  1. 代表的なAntiVirusソフトウェアをインストールした場合、定常状態(特にスキャンなどを行わない)状態では、CPUにはあまり性能の劣化は見られませんでした。メモリに関しては、オンアクセス/オンデマンド時の結果から、最大で1.3GB程度の使用量の増加が測定されました。
  2. システム上でアプリケーションが動作する場合、ファイルへのアクセスやシステムコールを多く使用しているほど、アプリケーションに対して性能の劣化があることがわかりました。
  3. スキャンを行っている際には、CPU・メモリに関しての使用率が上がるため、システムに負荷がかかることがわかりました。
  4. OSSであるClamAVは、オン・デマンドスキャン時にシステムに及ぼす性能劣化の影響としては、主要な商用AntiVirus製品と同程度であることがわかりました。

これらの結果から、以下のような結論が導き出せます。

  1. 各サーバにAntiVirus製品をインストールする際は、定常状態・スキャンの実施状態共に、メモリに影響を及ぼすため、メモリを多めに確保する必要がある。
  2. 通常の運用中にスキャンをなるべく行わないように設計することで、システムに及ぼす影響は最低限に抑えられる。
  3. オンデマンドスキャンなどが走る際にはシステムに影響を及ぼすため、システム上で動いているアプリケーションの運用などを考え、スキャン中にレスポンスを必要とするような処理を避ける様にスケジュールを考える必要がある。また、オンデマンドスキャン実施時にその他のアプリケーションのジョブを避けることが出来るのであれば、OSSのClamAVでも十分に使うことが出来る。
  4. 上記の点を考慮した設計を行えば、AntiVirusをインストールすることは、セキュリティを担保するために有益である。


セキュリティ系連載案内

日々のメモを更新しています。

セキュリティ関係で気になったニュースの備忘録を兼ねたメモを更新しています。個別で情報出せるようになる前の簡単な情報・リンクなんかも載せていきます。


セミナー情報1

2021/09/13 18:30から、OSSセキュリティ技術の会 第九回勉強会を行います。

7/30にリリースされたKeycloak 15で、FAPI(Financial-Grade API)、CIBA(Client Initiated Backchannel Authentication)に対応しました(Certificateはまだですが…)。またDevice Flowにも対応しています。これを記念し、KeycloakのFAPI,CIBAの主要開発者もお招きして、「KeycloakのFAPI CIBA 対応記念の巻」と題して勉強会を行います。

Connpassのこちらがプログラム内容と申し込みの詳細になります。奮ってご参加下さい。

セミナー情報2

コンピュータセキュリティシンポジウム(CSS)2021併設のワークショップ、 OSSセキュリティ技術ワークショップ(OWS) 2021の企画講演セッション及び、 一般論文セッションの発表募集をさせていただきます。

今年もオンラインでの開催となり、OWSトラックの一般論文セッションの論文募集(申込締め切り: 2021年08月02日(月))と企画セッションを行いますので,ご投稿とご参加よろしくお願いいたします。

https://www.iwsec.org/ows/2021/


タイトルとURLをコピーしました