快轉到主要內容

Ubuntu安裝ClamAV防毒軟體:從GUI到自動排程完整設定教學

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux好用軟體
標籤   Linux
目錄

適用系統版本:Ubuntu 24.04以上

本文Ivon將示範如何在Ubuntu安裝 ClamAV,設定防毒掃描與自動排程的作業。

Ubuntu需要防毒軟體嗎?雖然說Linux系統中毒機率不大,因為使用者多半使用自由軟體以及從信任的套件庫下載程式,且程式在沒有使用者同意下是不會自動執行的。但如果是對外網開放的電腦,或者是常常跟Windows電腦交換檔案,依然需要一個掃描可疑檔案的軟體,強化資安。

對於Admin來說,你不希望24小時無人監管的Linux伺服器隨時暴露在危險之中吧?所以最好讓ClamAV定期檢查。

ClamAV是Linux上最著名的防毒軟體,採用GPL授權釋出的自由軟體,能夠掃描受感染的檔案與郵件,並提供高自定義即時防護模式。

Linux大概也只有這一款軟體是開源免費的防毒軟體罷。病毒資料庫由社群以及許多開源公司維護。其他防毒軟體公司雖然有針對Linux開發,例如Microsoft Defender for Endpoint on Linux、ESET NOD32 for Linux,但他們推出的方案實在太高級了,咱一般人用不到,而且授權多半是專有軟體~況且如果防毒軟體本身不開源的話,又叫咱怎麼信任你呢?

ClamAV能夠以命令行模式默默在背景執行,排程自動掃描Linux伺服器的檔案。

也有人製作ClamAV的圖形化介面,讓Linux桌面使用者能夠一覽目前的系統狀態,達到類似Windows的殺毒體驗。當你對下載的檔案安全性存疑的時候,可以拖曳檔案到ClamAV界面,馬上就會產出分析報告。

1. 安裝ClamAV
#

以Ubuntu & Debian系統為例,安裝以下套件:

sudo apt install clamav clamav-daemon

2. 安裝ClamAV-GUI圖形介面
#

這個適合Linux桌面用戶使用,讓你不需要頻繁打指令。目前的圖形界面前端有ClamAV-GUI和ClamTK,後者已經停止維護。你不需要裝圖形介面也能使用ClamAV,這是方便查看狀況。

ClamAV-GUI是使用QT寫成的前端,現由UALinux公司維護,功能選單齊全。安心吧,這個GUI設計的樸實無華,沒有什麼「安全體檢」分數給你製造無謂的焦慮,只有實用的排程掃描按鈕。

  1. ClamAV-GUI官網下載.deb檔安裝。
sudo apt install ./clamav-gui_*-ualinux_amd64.deb
  1. 開啟後就可以單次掃描指定的目錄了

  2. 如果要排程掃描:首先在Profile Manager頁面建立設定檔,再到Scheduler頁面設定排程掃描作業,只要這個面板開著就會定時執行任務。

  3. 還有,點一下ClamAV-GUI的系統匣圖示,開啟DropZone功能,桌面會顯示一個蛤蜊圖示,將檔案拖曳進去就能進行掃描。

  4. 如果要設定開機自動開啟ClamAV-GUI,加入到XDG AutoStart:

cp /usr/share/applications/ClamAV-GUI.desktop ~/.config/autostart/

3. ClamAV單次掃描病毒指令
#

  1. 初次執行,先更新病毒定義庫
sudo systemctl stop clamav-freshclam 

sudo freshclam
  1. ClamAV單次掃描的指令如下,通常是掃描一個目錄或者單一檔案,例如這裡指定整個/home目錄。
clamscan --recursive --infected /home
  1. 我們可以下載歐洲反電腦病毒協會提供的範本病毒檔案,測試CalmAV是否能成功掃描到「病毒」,若成功會回報Known viruses。
curl https://secure.eicar.org/eicar.com.txt | clamscan -

4. 設定ClamAV排程掃描
#

ClamAV並不會自動在背景掃描病毒檔案,需要使用者主動呼叫。這樣能夠防止防毒軟體胡亂佔用系統資源。不過這樣對一些使用者來說不夠放心,所以我們得手動透過Systemd Timer建立掃描作業, 定期進行掃描。

ClamAV有兩種掃描指令,一個是clamscan,一個是clamdscan,前者會一次性載入病毒資料庫,適合單次掃描使用。後者則是將病毒資料庫常駐在系統,隨時等待接受掃描呼叫。

  1. 首先,開啟FreshClam服務,讓它自動更新病毒資料庫
# 每2小時更新一次病毒庫定義
sudo systemctl enable --now clamav-freshclam.service

# 或者,一天更新一次,具體更新時間透過 systemctl edit clamav-freshclam-once.timer取得
sudo systemctl enable --now clamav-freshclam-once.timer
  1. 然後設定掃描病毒的作業,這裡使用的是clamd服務掃描,它會讀取/etc/clamav/clamd.conf的設定檔等待掃描。
sudo systemctl enable --now clamav-daemon.service
  1. 然後,手動新增一個呼叫掃描作業的服務
sudo vim /etc/systemd/system/clamdscan@.service
  1. 填入以下內容,在這裡%I會讀取systemctl指令@後面傳入的掃描路徑。
[Unit]
Description=ClamAV scan of %I using clamd
Requires=clamav-daemon.service
After=clamav-daemon.service

[Service]
Type=oneshot
ExecStart=/usr/bin/clamdscan --fdpass --multiscan /%I
User=root
Group=root
  1. 再建立一個Systemd Timer:
sudo vim /etc/systemd/system/clamdscan@.timer
  1. 設定排程掃描規則,設定為每日0:00開始掃描。
[Unit]
Description=Daily ClamAV scan of %I

[Timer]
OnCalendar=*-*-* 00:00:00
Persistent=true

[Install]
WantedBy=timers.target
  1. 啟用服務。@後面加上的是要掃描的路徑
sudo systemctl enable --now clamdscan@home.timer
  1. 如果要看掃描的日誌檔案,使用這個指令:
sudo journalctl -u clamdscan@home.service -n 50
  1. ClamAV並沒有找到病毒就自動寄Email通報使用者的功能,這需要自行串接額外服務。例如,在/etc/clamav/clamd.conf裡面,設定VirusEvent的數值,決定偵測到病毒後要執行什麼程式。

5. 啟用即時防護
#

除了設定clamd定期掃描檔案之外,我們還有即時防護模式 (OnAccessScan) 可以使用。OnAccessScan會透過Linux核心的fanotify功能,在檔案被程式存取(讀取或寫入)的時候自動掃描檔案,並在發現病毒的時候禁止行程存取。

  1. 開啟以下服務,啟動監控:
sudo systemctl enable --now clamav-daemon.service

sudo systemctl enable --now clamav-clamonacc.service
  1. 具體會掃描的檔案,在/etc/clamav/clamd.conf裡面的OnAccessIncludePath設定。

  2. 日誌檔案使用以下指令查看:

sudo journalctl -u clamonacc.service -f

其他防毒軟體補強方案
#

光靠防毒軟體軟體不能一勞永逸,請考慮Linux系統是否已經做足以下設定:

  • 給自己的使用者帳號設定難以猜到的強密碼
  • 利用fail2banauditd監控系統登入事件
  • 檢查UFW防火牆規則,擋掉不用的通訊埠
  • SSH關掉Root帳號登入
  • 開啟AppArmor或是SELinux機制
  • 如果要執行來路不明的軟體,可以放在VM或Container裡面測試

參考資料
#

相關文章

Linux用Android Studio模擬器玩手遊的思路(Play商店 + Nvidia GPU加速 + 單獨執行AVD)
分類   Linux系統 Linux好用軟體
標籤   Linux QEMU-KVM Android Scrcpy
如何在Linux安裝電腦版Line,使用Bottles管理Wine容器
分類   Linux系統 Linux好用軟體
標籤   Wine Linux Waydroid
Ubuntu安裝Chrome遠端桌面教學,遠端控制Linux電腦桌面
分類   Linux系統 Linux好用軟體
標籤   Google Chrome Remote Desktop Linux

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。