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)

    Normal Kaspersky Mcafee NOD32 Sophos Trend
    Benchmark Run: 2 CPUs 1 parallel process: 778.16 636.9 631.8 543.4 699.7 700.8
    Benchmark Run: 2 CPUs 2 parallel process: 1466.86 1136.2 1147.05 904.2 1302.6 1314

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

    2. 各項目(1-Parallel)

    項目 Normal Kaspersky Mcafee NOD32 Sophos Trend
    Dhrystone_2_using_register_variables 3032.12 3012.75 3026.45 2981.1 3019.1 3035.65
    Double-Precision_Whetstone 798.48 795.7 796.9 791.95 796.25 799.05
    Execl_Throughput 354.58 191.2 253.5 104.95 352.9 356.9
    File_Copy_1024_bufsize_2000_maxblocks 1133.52 1031.95 1024.25 1045.1 1031.4 1120.35
    File_Copy_256_bufsize_500_maxblocks 715.56 682.7 665.9 692.65 676.1 739.6
    File_Copy_4096_bufsize_8000_maxblocks 2293.24 2087.25 2169.7 2152.3 1972.7 2247.4
    Pipe_Throughput 457.88 462.3 463.6 436.95 450.3 444.3
    Pipe-based_Context_Switching 254.24 249.6 251.4 246.5 245.7 248.3
    Process_Creation 385.14 378.5 384.75 296.6 385.8 384.1
    Shell_Scripts_(1_concurrent) 1018.18 463.4 405.25 340.15 710.55 601.15
    Shell_Scripts_(8_concurrent) 1546.9 747.35 573.1 542.6 919.5 999.35
    System_Call_Overhead 437.26 437.3 429.3 291.5 423.75 342
    System_Benchmarks_Index_Score 778.16 636.9 631.8 543.4 699.7 700.8

    2. 各項目(2-Parallel)

    項目 Normal Kaspersky Mcafee NOD32 Sophos Trend
    Dhrystone_2_using_register_variables 5778.24 5729.65 5770.05 5562.9 5773.65 5772.55
    Double-Precision_Whetstone 1526.94 1523.45 1522.45 1520.25 1519.65 1525.3
    Execl_Throughput 1089.64 368.1 613.85 160.35 1089.9 1088.1
    File_Copy_1024_bufsize_2000_maxblocks 1977.66 1747.1 1787.95 1773.45 1814.6 1996.55
    File_Copy_256_bufsize_500_maxblocks 1241.38 1093.65 1133.9 1151.65 1135.6 1311.5
    File_Copy_4096_bufsize_8000_maxblocks 4011.54 3722.6 3731.65 3381.2 3552.9 3915.2
    Pipe_Throughput 866.16 851.95 834.05 784.35 853.1 821.05
    Pipe-based_Context_Switching 497.76 472.85 485.7 443.5 481.2 466.55
    Process_Creation 1188.16 1117.9 1139.4 672.85 1149.5 1153.65
    Shell_Scripts_(1_concurrent) 1648.82 680.15 574.45 483.8 977.95 1056.65
    Shell_Scripts_(8_concurrent) 1566.4 805.8 611.7 554.35 910.1 988
    System_Call_Overhead 792.8 821.1 784.9 509.1 811.9 584.75
    System_Benchmarks_Index_Score 1466.86 1136.2 1147.05 904.2 1302.6 1314

    考察

    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)

    Normal Kaspersky Mcafee NOD32 Sophos Trend ClamAV
    Benchmark Run: 2 CPUs 1 parallel process: 778.16 550.05 703.85 494.7 700.85 717.95 711.55
    Benchmark Run: 2 CPUs 2 parallel process: 1466.86 812.1 941.75 617.9 909.5 974.9 917.15

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

    2. 各項目(1-Parallel)

    項目 Normal Kaspersky Mcafee NOD32 Sophos Trend ClamAV
    Dhrystone_2_using_register_variables 3032.12 2460.5 2874.95 2671.2 2872.3 2889.25 2872.7
    Double-Precision_Whetstone 798.48 759 760.7 757.45 759.4 764.95 759.15
    Execl_Throughput 354.58 256.4 325.25 117.25 336.35 344.3 336.55
    File_Copy_1024_bufsize_2000_maxblocks 1133.52 825.95 955 865.8 948.9 952.9 953.85
    File_Copy_256_bufsize_500_maxblocks 715.56 534 621.1 564 612.85 614.25 616.05
    File_Copy_4096_bufsize_8000_maxblocks 2293.24 1668.25 1962.4 1845.05 1981.9 1985.25 2065.65
    Pipe_Throughput 457.88 362.1 424.2 385.55 398.6 442.8 422.1
    Pipe-based_Context_Switching 254.24 168.25 239.2 232.25 233.5 231.85 235.8
    Process_Creation 385.14 305.65 569.25 334.8 578.45 550.1 594.15
    Shell_Scripts_(1_concurrent) 1018.18 422.4 752.65 302.15 797 805.85 797.55
    Shell_Scripts_(8_concurrent) 1546.9 775.1 970.15 427.45 975.85 1020.2 956.15
    System_Call_Overhead 437.26 357.9 424.15 260.6 397 457.05 419.65
    System_Benchmarks_Index_Score 778.16 550.05 703.85 494.7 700.85 717.95 711.55

    2. 各項目(2-Parallel)

    項目 Normal Kaspersky Mcafee NOD32 Sophos Trend ClamAV
    Dhrystone_2_using_register_variables 5778.24 3640.55 4034.35 3633.7 3928.3 4221.05 3832.7
    Double-Precision_Whetstone 1526.94 1530.85 1518.4 1512.95 1517.7 1518.9 1521.45
    Execl_Throughput 1089.64 490.5 689.45 135.7 685.25 757.2 682.45
    File_Copy_1024_bufsize_2000_maxblocks 1977.66 1002.3 1116.3 976.6 1034.45 1044.65 1079.95
    File_Copy_256_bufsize_500_maxblocks 1241.38 654.55 744.5 631.15 662.85 691.75 691.5
    File_Copy_4096_bufsize_8000_maxblocks 4011.54 1988.4 2216.55 2068.75 2242.6 2226.75 2339.65
    Pipe_Throughput 866.16 505.15 595.1 514.7 530 604.9 527.35
    Pipe-based_Context_Switching 497.76 264.5 360.55 314.55 319.65 358.7 340.5
    Process_Creation 1188.16 465 567.75 325.1 608.6 655.9 576.75
    Shell_Scripts_(1_concurrent) 1648.82 710.8 895.35 384.2 868.3 993.35 871.4
    Shell_Scripts_(8_concurrent) 1566.4 1044.65 1067.3 487.4 1068.05 1112.05 1070.4
    System_Call_Overhead 792.8 501.8 539.3 331.8 534 602.45 527.85
    System_Benchmarks_Index_Score 1466.86 812.1 941.75 617.9 909.5 974.9 917.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

2019/07/31 10:00-17:00で開催される、一般社団法人 日本情報システム・ユーザ協会(JUAS)様による有料ハンズオンセミナー「ハンズオンで学ぶ!クラウド時代の運用管理とセキュリティ対策 」にて当ブログの筆者「面 和毅」が講師を努めます。

本セミナーでは、大手ベンダーや外資系企業、ユーザー企業などでセキュリティの専門家として20年以上の経験を持ち、現在、セキュリティエバンジェリストとして活躍する講師が実体験を交えながら、クラウド上のサーバーを安価に守る方法を、演習をまじえ、具体的にお伝えします。

https://juasseminar.jp/seminars/view/4119290にて申し込みを行っております。奮ってご参加ください。


セミナー情報2

2019/05/30 18:00-22:00で、「「やってはイケナイ」をやってみよう」セミナーを行います。

このセミナーでは、実際に色々な「やってはイケナイ」をデモを交えて行い、実際にどのような問題が発生するのかを確認し、その様な万が一の場合を防ぐために行っておくべき対策を紹介していきます。

https://sios.connpass.com/event/129136/がプログラム内容と申し込みの詳細になります。奮ってご参加下さい。


OSSに関するお困りごとは サイオス OSSよろず相談室まで

サイオスOSSよろず相談室 では、OSSを利用する中で発生する問題に対し、長年培ってきた技術力・サポート力をもって企業のOSS活用を強力に支援します。Red Hat Enterprise Linux のほか、CentOS をご利用されている環境でのサポートも提供いたします。

前へ

Mcafee Endpoint Security for Linuxインストール時のTips(CentOS 7上でのfileaccess_modモジュールによるKernel Crash等の問題と解決方法)

次へ

【リリース情報】OpenSSLのバグフィックスバージョン(OpenSSL 1.1.1c, 1.1.0k, 1.0.2s)のリリース