こんにちは。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にするのか等)、パフォーマンスに影響が出てくることは分かっていますが、今回の検証に限ってはあくまでも「何も知らないユーザがインストールしてどのくらい影響があるのか?」を検証したかったためです。詳細オプションを修正することによりどの程度パフォーマンスに影響があるのかは、また別途機会を設けて行いたいと思います。
- テスト環境
- 比較ソフト
- 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
- 検証内容
オンアクセススキャン/オンデマンドスキャンのそれぞれで、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の測定の方はページの関係から雑誌の方には載せられなかったため、こちらのサイトで公開します。
- 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の処理性能をみます。
- Dhrystone 2 using register variables
ホスト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を追加。)
検証結果
UnixBenchの検証結果を記載します。各項目で、AntiVirusソフトウェアをインストールしていない状態(normal)でのUnixBench結果(Score)を100%とし、それぞれのAntiVirusソフトウェアをインストール後に実行したUnixBench結果を%で表しています。これにより、グラフ内で下に行くほど性能が劣化していることになります。
- オンアクセススキャン
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
に関しては、数値上大きな変動がみられません。このため、オンアクセススキャンを有効にしている場合には、特にファイルアクセスやプロセス実行時など、システムコールを使用する際にオーバーヘッドが掛かるということがわかります。
- オンデマンドスキャン
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 - 考察
AntiVirusのオンデマンドスキャンにより、当然のように処理が増えるため全体の数値が悪くなっています。特にCPUの機能劣化が顕著で、次にファイルアクセス、シェルの実行と機能が劣化しています。
このため、オンデマンドスキャンを実施している場合には、CPU処理やファイルアクセスが必要な処理は特にオーバーヘッドが掛かるということがわかります。
考察
vmstatやPhoronix Test Suiteでのテストの結果に関しては日経Linuxを参照していただきたいのですが、以下のような結果が得られました。
- 代表的なAntiVirusソフトウェアをインストールした場合、定常状態(特にスキャンなどを行わない)状態では、CPUにはあまり性能の劣化は見られませんでした。メモリに関しては、オンアクセス/オンデマンド時の結果から、最大で1.3GB程度の使用量の増加が測定されました。
- システム上でアプリケーションが動作する場合、ファイルへのアクセスやシステムコールを多く使用しているほど、アプリケーションに対して性能の劣化があることがわかりました。
- スキャンを行っている際には、CPU・メモリに関しての使用率が上がるため、システムに負荷がかかることがわかりました。
- OSSであるClamAVは、オン・デマンドスキャン時にシステムに及ぼす性能劣化の影響としては、主要な商用AntiVirus製品と同程度であることがわかりました。
これらの結果から、以下のような結論が導き出せます。
- 各サーバにAntiVirus製品をインストールする際は、定常状態・スキャンの実施状態共に、メモリに影響を及ぼすため、メモリを多めに確保する必要がある。
- 通常の運用中にスキャンをなるべく行わないように設計することで、システムに及ぼす影響は最低限に抑えられる。
- オンデマンドスキャンなどが走る際にはシステムに影響を及ぼすため、システム上で動いているアプリケーションの運用などを考え、スキャン中にレスポンスを必要とするような処理を避ける様にスケジュールを考える必要がある。また、オンデマンドスキャン実施時にその他のアプリケーションのジョブを避けることが出来るのであれば、OSSのClamAVでも十分に使うことが出来る。
- 上記の点を考慮した設計を行えば、AntiVirusをインストールすることは、セキュリティを担保するために有益である。
セキュリティ系連載案内
- OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
- OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
- OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2018のレポートが紹介されています。
- OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。
- OSSセキュリティ技術の会の面により、@ITで「OpenSCAPで脆弱性対策はどう変わる?」が連載されています。
- OSSセキュリティ技術の会のメンバーにより、@ITで「Berkeley Packet Filter(BPF)入門」が連載されています。
日々のメモを更新しています。
セキュリティ関係で気になったニュースの備忘録を兼ねたメモを更新しています。個別で情報出せるようになる前の簡単な情報・リンクなんかも載せていきます。
セミナー情報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日(月))と企画セッションを行いますので,ご投稿とご参加よろしくお願いいたします。