こんにちは。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)
- まず「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が有効になっています。
- 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:~#
- 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. - AppArmorでclamdの設定を行います。
root@localhost:~# aa-complain clamd Setting /usr/sbin/clamd to complain mode.
- /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
- clamonaccコマンドを起動します。今回は簡単に、読み込むclamd設定ファイルとログの吐き出し先を指定してあります。
root@localhost: clamonacc --config-file=/etc/clamav/clamd.conf --log=/var/log/clamav/clamonacc.log
- 起動すると、ログが/var/log/clamav/clamonacc.logファイルに追記されていきます。
fanotifyを利用したオンアクセススキャンのテスト
Wikipedia等でテスト用の無害なマルウェア(EICAR)を使用してテストを行います。
- EICARをEICAR.txtなどとして/home/siosに保存します。
- /var/log/clamav/clamonacc.logファイルを見ると、きちんとログが表示されていることが確認できます。
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
セキュリティ系連載案内
- 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日(月))と企画セッションを行いますので,ご投稿とご参加よろしくお願いいたします。