ClamAVで+(clamd、clamonacc)+fanotifyを用いたオンアクセススキャンの確認とテスト

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

今回は前回(2016年の記事)の情報が古くなっていましたので、2021年時点でのfanotify + clamd, clamonaccを使ったClamAVによるオンアクセススキャンの設定方法を紹介します。

一部、前回と重なるところもありますので、適宜前回の情報へのリンクを貼りながら説明を行います。

また、参考文献はこちらのClamAVのオフィシャルドキュメントとなります。


1. AntiVirusでのスキャンの種類とオンアクセススキャン

前回も説明したとおり、AntiVirusソフトでは、大きく分けて二種類のスキャン(手動スキャンとオンアクセススキャン)があります。

 これらのどちらが良いかに関しては、ケースバイケースです。大まかに言ってしまうと下記のような特色があります。

  • 定時スキャン:感染した後にスキャンになるが、負荷が低い。また、処理がおかしくなる可能性が低い
  • オンアクセススキャン:感染を未然に防げるが、負荷が高い。また、実装によっては処理がおかしくなる事がある。

ClamAVのオンアクセススキャンについて

ClamAVは、前回も紹介したとおり、Linux Kernelで実装されたfanotifyを使用することでオンアクセススキャンを行うことができます。

前回との差分として、前回は「clamdのみ」でオンアクセススキャンを行っていましたが、現在のバージョンでは「clamonacc」プロセスを用いて、clamonaccプロセスがclamdと連携することによりオンアクセススキャンを行っています。

ClamAV + clamonaccのインストールと、fanotifyを利用したオンアクセススキャンのテスト

環境

  • OS:Ubuntu 20.10 (Groovy Gorilla)
  1. まず「fanotify」が有効になっているかを確認します。Ubuntu 20.10ではfanotifyが有効になったLinux Kernelを使用しています。念の為に確認する方法としては、
    
    root@localhost:/proc/sys/fs/fanotify# ls /proc/sys/fs/fanotify/
    max_queued_events  max_user_groups  max_user_marks
    root@localhost:/proc/sys/fs/fanotify# 
    

    のように、/proc/sys/fs以下にfanotifyディレクトリができている場合には、fanotifyが有効になっています。

  2. Ubuntuではclamav, clamd(clamav-daemon)をaptを用いてインストールします。
    
    root@localhost:~# apt install clamav clamav-daemon clamav-freshclam 
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています                
    状態情報を読み取っています... 完了
    以下の追加パッケージがインストールされます:
    --省略--
    man-db (2.9.3-2) のトリガを処理しています ...
    libc-bin (2.32-0ubuntu3) のトリガを処理しています ...
    root@localhost:~#
    
  3. AppArmorの設定をするために、aa-compliantをインストールします。
    
    root@localhost:~# apt install apparmor-utils
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています                
    状態情報を読み取っています... 完了
    --省略--
    root@localhost:~#
    apparmor-utils (3.0.0-0ubuntu1) を設定しています ...
    man-db (2.9.3-2) のトリガを処理しています ...
    
    root@localhost:~# aa-complain clamd Setting /usr/sbin/clamd to complain mode.
  4. AppArmorでclamdの設定を行います。
    
    root@localhost:~# aa-complain clamd
    Setting /usr/sbin/clamd to complain mode.
    
  5. /etc/clamav/clamd.confファイルを設定してオンアクセススキャンが出来るようにします。
    
    ---省略---
    #User clamav
    User root                <- fanotifyを使用するためrootで起動するようにする
    ---省略---
    BytecodeTimeout 60000
    OnAccessMaxFileSize 5M
    --- 以下をclamd.confファイルに追記 ---
    OnAccessPrevention yes
    OnAccessExtraScanning true
    OnAccessExcludeUID 0
    OnAccessExcludeUname root
    OnAccessIncludePath /home/sios
    
  6. clamonaccコマンドを起動します。今回は簡単に、読み込むclamd設定ファイルとログの吐き出し先を指定してあります。
    
    root@localhost: clamonacc --config-file=/etc/clamav/clamd.conf --log=/var/log/clamav/clamonacc.log
    
  7. 起動すると、ログが/var/log/clamav/clamonacc.logファイルに追記されていきます。

fanotifyを利用したオンアクセススキャンのテスト

Wikipedia等でテスト用の無害なマルウェア(EICAR)を使用してテストを行います。

  1. EICARをEICAR.txtなどとして/home/siosに保存します。
  2. /var/log/clamav/clamonacc.logファイルを見ると、きちんとログが表示されていることが確認できます。
  3. 
    root@localhost:/var/log# tail -f clamav/clamonacc.log 
    --------------------------------------
    ClamInotif: watching '/home/sios' (and all sub-directories)
    ClamInotif: extra scanning on inotify events enabled
    
    /home/sios/eicar.txt: Eicar-Signature FOUND
    
    

セキュリティ系連載案内

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

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

セミナー情報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/


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

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

前へ

ClamAVでのfanotifyの有効化(2016年記事の再掲)

次へ

Linux Kernelの脆弱性(CVE-2021-40490)