• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Ubuntu Linux 安裝、使用 ClamAV 防毒軟體 clamonacc 自動掃描教學與範例

介紹如何在 Ubuntu Linux 環境安中並使用 ClamAV 防毒軟體的 clamonacc 工具提供系統自動掃描病毒(On-Access)的功能。


ClamAV 的自動掃描病毒(on-access)是透過 Linux 核心的 fanotify API 功能,阻止行程存取被病毒感染的檔案,這個保護機制是作用在 Linux 核心層級(kernel-space),所以保護力會比一般使用者層級(user-space)更高。

相關文章:
Ubuntu Linux 安裝、使用 ClamAV 防毒軟體 clamscan 掃毒指令教學與範例
Ubuntu Linux 安裝、使用 ClamAV 防毒軟體 clamd 常駐服務教學與範例

安裝 clamonacc

在使用 clamonacc 之前,必須先安裝好 clamd 常駐服務。

若在 Ubuntu Linux 中,clamonacc 這個工具被收錄在 clamav-daemon 套件中,只要安裝好 clamd 常駐服務之後,就可以直接使用 clamonacc 這個工具。

On-Access 自動掃描病毒

若要使用 clamonacc 的 On-Access 自動掃描病毒功能,要先編輯 /etc/clamav/clamd.conf 設定檔,加入基本的 On-Access 相關設定:

# On-Access 自動掃描作用路徑
OnAccessIncludePath /home

# 防止行程存取感染病毒的檔案
OnAccessPrevention true

# 排除 clamav 使用者
OnAccessExcludeUname clamav

這裡的 OnAccessIncludePath 是用來指定 On-Access 自動掃描病毒功能的作用路徑,若指定為 /home,則 clamonacc 就會對整個 /home 目錄與子目路以下的所有檔案進行監控並掃毒。

OnAccessPrevention 功能是自動防止行程存取受病毒感染的檔案,如果有行程嘗試存取有病毒的檔案,就會出現 Operation not permitted 的錯誤。

OnAccessExcludeUname 則是用來排除指定使用者的行程,以 Ubuntu Linux 來說,預設執行 clamd 的使用者是 clamav,所以將其排除。

完成基本的設定之後,就可以用 root 權限執行 clamonacc:

# 啟動 clamonacc 常駐程式
sudo clamonacc

如果 clamonacc 相關的設置都沒問題的話,它就會自動以常駐程式的方式在系統上執行,這樣就完成 On-Access 自動掃描病毒的設置了。

測試自動掃描病毒

如果要測試 On-Access 自動掃描病毒的功能是否有正常運作,我們可以自己建立一個 EICAR 測試病毒檔:

# 建立 EICAR 測試病毒檔
cat > eicar.virus <<'EOF'
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
EOF

接著再以 cat 指令嘗試存取這個測試用的病毒檔案:

# 測試存取病毒檔案
cat eicar.virus
cat: eicar.virus: Operation not permitted

由於 clamonacc 偵測到這一個 eicar.virus 檔案含有病毒,所以就自動禁止 cat 行程讀取該檔案。

所有被 clamonacc 偵測到的病毒檔案也都會自動被記錄在 /var/log/syslog 記錄檔中:

Jun 22 19:22:02 largeimg clamd[10702]: Tue Jun 22 19:22:02 2021 -> ~/home/ubuntu/eicar.virus: Eicar-Signature(69630e4574ec6798239b091cda43dca0:69) FOUND

常用 clamd.conf 設定

以下設定可讓 clamonacc 監控整個系統,排除 root 管理者與 clamav 使用者。由於這裏沒有設定 OnAccessPrevention,所以當發現病毒時並不會限制行程存取,只會顯示警告訊息。

# 監控整個系統
OnAccessMountPath /

# 排除 root 管理者
OnAccessExcludeRootUID yes

# 排除 clamav 使用者
OnAccessExcludeUname clamav

OnAccessIncludePath 與 OnAccessExcludePath 可以納入與排除指定的目錄,並且可以使用多次來指定不同的目錄。以下設定可讓 clamonacc 監控整個 /home 目錄,但排除 /home/user2 與 /home/user4 兩個目錄:

# 監控 /home 目錄,但排除 /home/user2 與 /home/user4 兩個目錄
OnAccessIncludePath /home
OnAccessExcludePath /home/user2
OnAccessExcludePath /home/user4

若希望 OnAccessIncludePath 在指定目錄時,不要涵蓋任何子目錄,可以將 OnAccessDisableDDD 設定為 yes:

# 停用對子目錄掃毒功能
OnAccessDisableDDD yes

常見問題

若 clamonacc 沒有如預期般正常運作,可以加上 --foreground 與 --verbose 參數,讓 clamonacc 以前景模式執行,並輸出詳細的訊息,方便除錯。

如果在執行 clamonacc 時出現類似這樣的錯誤訊息:

ERROR: ClamInotif: could not watch path '/home', No space left on device

可以嘗試執行以下指令,將 /etc/sysctl.conf 中的 fs.inotify.max_user_watches 設定值調高一些:

# 調整 fs.inotify.max_user_watches 的設定值
echo fs.inotify.max_user_watches=524288 | \
  sudo tee -a /etc/sysctl.conf && sudo sysctl -p

參考資料

  • ClamavNet:Documentation – On-Access Scanning

分類:Linux

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide