記事内に広告を含みます

【あれこれ】Linux Mint 22.2で無料ウイルス対策!OS・ソフトの自動更新とClamAV監視の完全ガイド

この記事は…

今回は、LinuxMintのセキュリティを強化した内容をまとめています。

前回はLinuxMintのインストールまで行いました。

【あれこれ】古いWindows10パソコンを無料OSで復活!Linux Mint導入ガイド

Linux は Windows よりもウイルスの被害は少ないですが、メール添付ファイルのスキャンやWindows の共有フォルダを守る用途などで必要になる場合があります。

あと、自分の Linux 環境を守るというよりは、他のユーザー(Windows ユーザー)に感染を広げないために使われるケースが多いらしいです。

いずれにしても、やらないよりやっておいた方が良いと思います👍

Linux系のシステム管理やセキュリティ設定はターミナル操作で

Linux Mint は Ubuntu をベースにした初心者向けのディストリビューション1です。
GUI(グラフィカルな画面操作)が充実しているため、普段の利用はマウス操作で十分ですが、Linux 全般ではシステム管理やセキュリティ設定の多くを「ターミナル」で行うのが基本です。
(本記事は Linux Mint 22.2 を対象に説明します)

ターミナルを表示させるにはいくつかの方法があります。

  • 一番簡単:画面下パネルの「ターミナル」をクリック
  • アイコンを消している場合:スタートメニュー → アプリケーション → システム → ターミナル
  • ショートカットキー:Ctrl + Alt + T

ターミナルはこんな感じだよっ!ってのがコレ↓↓↓です。

以下の操作はすべて「ターミナル」で行います。

パッケージ情報を最新化する

Linux Mint が利用しているソフトの一覧(APTのパッケージデータベース)が最新の状態になります。
これを最初に 1 回やっておけば、その後の「apt install」で常に最新のソフトが入ります。

sudo apt update

この後に続けて設定を行う場合、改めて「apt update」を繰り返す必要はありません
ただし数日あけてから再び作業する場合は、もう一度実行してください。

リモートアクセスの事前確認

リモートアクセス(SSH)が有効だと外部から侵入されるリスクがあるため、使わないなら最初に閉じておくのが鉄則です。
LinuxMintのデフォルトでは OpenSSH サーバー(sshd)はインストールされていませんが、念のため確認しておきます。

以下を入力してEnterキーを押下します。

systemctl status ssh

結果に[Unit ssh.service could not be found.]と表示されている場合は正常です。
次の項に進みます。

もし動作していた場合は以下のような表示になるはずです。

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-09-22 14:05:32 JST; 1h 12min ago
   Main PID: 1234 (sshd)
      Tasks: 1 (limit: 18984)
     Memory: 5.6M
        CPU: 120ms
     CGroup: /system.slice/ssh.service
             └─1234 /usr/sbin/sshd -D

動作停止後の確認方法は、以下を入力してEnterキーを押下します。

●一時的に止める場合(再起動すると復活する場合あり)

sudo systemctl stop ssh

●恒久的に止める場合(再起動しても起動しない)

sudo systemctl disable ssh

動作を停止させたら再確認のために再度入力します。

systemctl status ssh

そうしたら以下のように出力されます。

○ ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: inactive (dead)

この出力は、

  • ssh サービス(リモートログイン用プログラム)は インストールされている。
    (ssh.service)
  • サービスの定義は読み込まれているが、自動起動は無効化されている。
    (Loaded: loaded … disabled)
  • 現在は停止して動作していない。よって、今の状態では外部からリモートアクセス(sshログイン)はできない。
    (Active: inactive (dead))

という内容です。

ファイアウォール(UFW)で受信拒否/送信許可

外部からの不要なアクセスは遮断され、内部からの通信だけが許可される安全な状態になります。

以下を1行ずつ入力してEnterキーを押下します。

sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw status verbose

そうしたら以下のように出力されます。

Status: active
Default: deny (incoming), allow (outgoing), disabled (routed)

この出力は、

  • UFW が有効化されている(ファイアウォールが動作中)
    (Status: active)
  • 外部から入ってくる通信はすべて拒否。
    (Default: deny (incoming))
  • 内部(自分のPC)から外に出る通信は許可。
    (Default: allow (outgoing))
  • ルーティング(Mint を中継して別のネットワークに流す機能)は 無効
    (disabled (routed))

という内容です。
つまり、「自分からインターネットへは普通にアクセスできるけど、外からの不正アクセスは遮断されている」状態です。

Linux Mint 全体(OSとソフト)を自動更新する設定

Linux Mint 本体とインストール済みソフトが自動的に最新状態へ更新され、セキュリティ修正も自動的に適用されるようになります。

この設定は 最初に 1 回行えば十分で、その後は自動でアップデートが実行されるため、毎回同じコマンドを入力する必要はありません。

以下を1行ずつ入力してEnterキーを押下します。

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

すると「パッケージの設定」画面に切り替わるので<はい>にしてEnterキーを押下します。

以下を入力してEnterキーを押下します。

cat /etc/apt/apt.conf.d/20auto-upgrades

“1”なっている項目は有効です。出力された内容が全て“1”なら有効化済みです。
※環境によっては「APT::Periodic::Download-Upgradeable-Packages “1”;」の表示が無い 場合があります。但し、
Update-Package-Lists “1”;更新可能なパッケージの情報は毎日取得する。
Unattended-Upgrade “1”;利用可能な更新があれば、自動的にインストールする。
なので、表示されなくても自動更新されるので大丈夫です。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";

ClamAV(クラムエーブイ)のインストールと基本説明

Linux Mint に ClamAV2 がインストールされ、ウイルススキャンが利用可能になります。
ClamAV はデフォルトでは入っていないため、このステップが必須です。

以下を入力してEnterキーを押下します。

sudo apt install -y clamav clamav-daemon

確認のため、以下を入力してEnterキーを押下します。

clamscan --version

成功時の出力例(正常にインストールされていればバージョン番号が表示されます。)

ClamAV 1.4.3

ClamAV 定義ファイルの自動更新サービス(freshclam)

ClamAV のウイルス定義ファイルが数時間ごとに自動更新され、新しいウイルスにも即座に対応できるようになります。
この設定も一度行えば以降は自動で繰り返されます。

以下を1行ずつ入力してEnterキーを押下します。

sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam
systemctl status clamav-freshclam

出力例

● clamav-freshclam.service - ClamAV virus database updater
     Active: active (running) since Mon 2025-09-22 10:11:05 JST; 1h 23min ago
   Main PID: 1234 (freshclam)
…
lines 1-23

この「line 1-23」などは出力内容が長い場合に表示されます。
[q]キーを押して通常のターミナル表示に戻します。

また、この出力は、

  • freshclam が動作中
    (Active: active (running))
  • 動き始めてからの経過時間
    (1h 23min ago)
  • 実行中のプロセス番号
    (Main PID)

という内容です。

オンアクセス監視の対象と動作(ブロック有効)を設定

この設定を行うと、ホームディレクトリ全体が監視対象となり、感染ファイルを開こうとした瞬間にスキャンされ、ブロックされます。

以下を入力してEnterキーを押下します。

sudo nano /etc/clamav/clamd.conf

画面表示が変わります。

この画面の下の方に追記します。

以下は追記例です。
1行ずつ入力してEnterキーを押下します。

●監視対象に「/home」以下すべてを含める という意味です。
「/home」は通常、ユーザーのデータ(ダウンロード・ドキュメント・デスクトップなど)が置かれる場所なので、感染リスクの高い領域をすべて監視します。

OnAccessIncludePath /home

●「/home/ユーザー名/.cache」を監視から除外 します。
「.cache」はアプリのキャッシュ用ディレクトリで、大量にアクセスが発生するため監視すると重くなりがちです。除外することで動作の軽快さを保ちます。

OnAccessExcludePath /home/*/.cache

●「/tmp」と「/var/tmp」を監視から除外 します。
これらはシステムやアプリが一時的に大量のファイルを作る場所なので、監視対象にすると負荷が高くなります。一般ユーザーが直接使うことは少なく、感染リスクも低めなので除外します。

OnAccessExcludePath /tmp
OnAccessExcludePath /var/tmp

●感染ファイルが見つかったときにブロックする という意味です。
「no」の場合は検知だけ(警告は出すが開けてしまう)。「yes」にすると、ウイルスファイルを実行しようとした瞬間にアクセスを止めるので、実害を防げます。

OnAccessPrevention yes

入力すると以下のようになります。

[Ctrl]+[O(オー)]キーを押下して保存します。
画面下に「書き込むファイル」が表示されます。

[Enter]キーを押下して確定します。

[Ctrl]+[X]キーでnanoを終了し、通常のターミナル表示に戻します。

私はここで画面が固まったので電源長押しで再起動しました。
nanoの設定を確認しましたが、反映されているようなのでターミナルで設定の続きをやりました。

起動時のクイックスキャンと週1回フルスキャンを設定

この設定を行うと、PCを起動した直後に「/home」を短時間スキャンして、新たな脅威がないか即座に確認できます。さらに週1回のフルスキャンを自動実行。もし電源OFFで逃しても、次回起動時に補完実行されます。
常時常駐するより軽量で、Linux Mint で現実的な運用方法ですが、個人の好みもあるのでおまかせします。

●起動時クイックスキャン

以下を入力してEnterキーを押下します。

sudo nano /etc/systemd/system/clamav-quickscan.service

画面表示が変わるので、以下の内容を貼り付けます。

[Unit]
Description=ClamAV quick scan at startup (/home only)
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ionice -c3 /usr/bin/nice -n 19 /usr/bin/clamscan -r -i /home --log=/var/log/clamav/quickscan.log
SuccessExitStatus=0 1

[Install]
WantedBy=multi-user.target

[Ctrl]+[O(オー)]キーを押下して保存します。
画面下に「書き込むファイル」が表示されます。

[Enter]キーを押下して確定します。

[Ctrl]+[X]キーでnanoを終了し、通常のターミナル表示に戻します。

有効化します。
以下を1行ずつ入力してEnterキーを押下します。

sudo systemctl daemon-reload
sudo systemctl enable clamav-quickscan.service

動作確認します。

systemctl status clamav-quickscan.service

出力例です。

● clamav-quickscan.service - ClamAV quick scan at startup (/home only)
     Loaded: loaded (/etc/systemd/system/clamav-quickscan.service; enabled)
     Active: inactive (dead)
lines 1-3/3(END)

「lines 1-3/3(END)」などが表示されている場合、[q]キーを押して通常のターミナル表示に戻します。

●週1回フルスキャン

以下を入力してEnterキーを押下します。

sudo nano /etc/systemd/system/clamav-fullscan.service

以下の内容を貼り付けます。

[Unit]
Description=ClamAV full scan (weekly)
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ionice -c3 /usr/bin/nice -n 19 /usr/bin/clamscan -r -i / \
  --exclude-dir="^/proc" --exclude-dir="^/sys" --exclude-dir="^/dev" \
  --exclude-dir="^/run" --exclude-dir="^/tmp" --exclude-dir="^/var/tmp" \
  --log=/var/log/clamav/fullscan.log
SuccessExitStatus=0 1

[Ctrl]+[O(オー)]キーを押下して保存します。
画面下に「書き込むファイル」が表示されます。

[Enter]キーを押下して確定します。

[Ctrl]+[X]キーでnanoを終了し、通常のターミナル表示に戻します。

タイマーを作成します。

sudo nano /etc/systemd/system/clamav-fullscan.timer

以下の内容を貼り付けます。
日曜日のAM10時にフルスキャンするスケジュールですが、PCの電源が入っていないと実行できません。
その為、次回PCを起動したタイミングで実行させるようにします。

[Unit]
Description=Run ClamAV full scan weekly (with persistence)

[Timer]
OnCalendar=Sun 10:00
Persistent=true
Unit=clamav-fullscan.service

[Install]
WantedBy=timers.target

[Ctrl]+[O(オー)]キーを押下して保存します。
画面下に「書き込むファイル」が表示されます。

[Enter]キーを押下して確定します。

[Ctrl]+[X]キーでnanoを終了し、通常のターミナル表示に戻します。

有効化します。
以下を1行ずつ入力してEnterキーを押下します。

sudo systemctl daemon-reload
sudo systemctl enable --now clamav-fullscan.timer

動作確認します。

systemctl status clamav-fullscan.timer

出力例

● clamav-fullscan.timer - Run ClamAV full scan weekly (with persistence)
     Loaded: loaded (/etc/systemd/system/clamav-fullscan.timer; enabled)
     Active: active (waiting) since Mon 2025-09-22 10:20:01 JST; 1min 20s ago
    Trigger: Sun 2025-09-28 03:00:00 JST; 5 days left
   Triggers: ● clamav-fullscan.service
lines 1-7/7(END)

「lines 1-7/7(END)」などが表示されている場合、[q]キーを押して通常のターミナル表示に戻します。

ログ肥大化対策(logrotate:weekly + rotate 4)

この設定を行うと、ClamAV が出力するログ(clamav.log, quickscan.log, fullscan.log)が、無限に追記されてディスク容量を圧迫するのを防げます。週1回ローテーションし、最新4世代を残して古いものを自動削除。古いログは自動的に圧縮(.gz)され、保存容量も軽くなるのでディスク容量を圧迫せずに運用できます。

以下を1行ずつ入力してEnterキーを押下します。

sudo mkdir -p /var/log/clamav
sudo chown clamav:adm /var/log/clamav

何も表示されなければ正常です。

次に logrotate の設定ファイルを編集します。

sudo nano /etc/logrotate.d/clamav

以下の内容を貼り付けます。。
一般的によく設定されている「毎週(Weekly)ローテーションで最新の4世代(rotate 4)保持。最新ではない古いログは圧縮保持し、期間経過後に削除。」にします。
毎日ログを取って7日間保持する場合は、

・Weekly → daily
・rotate 4 → rotate 7

という風に変更します。

/var/log/clamav/*.log {
    weekly
    rotate 4
    compress
    missingok
    notifempty
    create 640 clamav adm
    sharedscripts
    postrotate
        systemctl reload clamav-daemon > /dev/null 2>&1 || true
    endscript
}

[Ctrl]+[O(オー)]キーを押下して保存します。
画面下に「書き込むファイル」が表示されます。

[Enter]キーを押下して確定します。

[Ctrl]+[X]キーでnanoを終了し、通常のターミナル表示に戻します。

動作確認します。
強制的に logrotate を実行して挙動を確認できます。

sudo logrotate -f /etc/logrotate.d/clamav

その後、ログディレクトリを確認。

ls -l /var/log/clamav

出力例

-rw-r----- 1 clamav adm   12345  9月 23 10:00 clamav.log
-rw-r----- 1 clamav adm    6789  9月 23 10:00 quickscan.log
-rw-r----- 1 clamav adm    4567  9月 23 10:00 fullscan.log
-rw-r----- 1 root   adm     123  9月 16 03:00 clamav.log.1.gz

実際の出力↓↓↓

「.1.gz」などがあればローテーション+圧縮が成功しています。

データ容量が少ないので特に問題ありませんが、多い場合はスキャンで起動時がもたつく可能性があります。
その場合は他のタイミングや手動操作に変更してみましょう。

動作テスト(EICAR:安全なテスト文字列)

この操作を行うと、ClamAV が正しく動作しているかを安全に確認できます。テストファイルは即座に削除またはブロックされ、ログに記録されます。

まずはディレクトリの表示を確認します。

ls ~

ディレクトリが日本語の場合と英語の場合で次の「ダウンロード」が部分的に異なります。
英語の場合はダウンロードをDownloadに変換して下さい。

以下を1行ずつ入力してEnterキーを押下します。

●日本語の場合
以下を入力してEnterキーを押下します。
ダウンロードが英語の場合、「その様なファイルやディレクトリはありません」と表示されます。
また、ディレクトリが日本語なのに、ダウンロードをDownloadsにすると同じ表示になりますので注意です。

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > ~/ダウンロード/eicar.com

「~/ダウンロード」ディレクトリに「eicar.com」が作成されます。

ファイルの存在確認をします。

ls -l ~/ダウンロード/eicar.com

出力例はこんな↓↓↓感じです。

-rw-r--r-- 1 user user 68  9月 23 10:15 /home/user/ダウンロード/eicar.com

ClamAV でスキャンします。

clamscan ~/ダウンロード/eicar.com

出力例
「FOUND」と表示されれば、検知できている証拠です。

/home/user/ダウンロード/eicar.com: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 8734567
Engine version: 0.103.2
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Time: 0.001 sec (0 m 0 s)

テストが終わったら必ずテストファイルを削除しておきます。

rm ~/ダウンロード/eicar.com

日常運用のヘルスチェック

この確認を行うと、ClamAV の定義更新サービス(freshclam)とオンアクセス監視(clamonacc)が正常に稼働しているかを把握できます。これを時々チェックすることで「知らない間に止まっていた」を防げます。

●ClamAV 定義更新サービス(freshclam)
以下を1行ずつ入力してEnterキーを押下します。

systemctl status clamav-freshclam

出力例はこんな↓↓↓感じです。

● clamav-freshclam.service - ClamAV virus database updater
     Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-09-22 10:11:05 JST; 1h 23min ago
   Main PID: 1234 (freshclam)
      Tasks: 1 (limit: 19034)
     Memory: 12.0M
        CPU: 5.432s

「lines 1-23」などが表示されている場合、[q]キーを押して通常のターミナル表示に戻します。

この出力は、

  • サービスがシステムに登録され、自動起動も有効
    (Loaded: loaded … enabled)
  • 現在動作中
    (Active: active (running))
  • 最後に実行してからの時間
    (since … 1h 18min ago)
  • 実行中プロセスの番号
    (Main PID)

という内容です。

あとは、ClamAV で「スキャンが動かなくなる/急にエラーになる3」ことが過去に何度か報告されていますので、以下に日常で確認すべき項目を記載しておきます。

●自動更新が動いているか
以下を入力してEnterキーを押下します。

systemctl status unattended-upgrades

Active: active (running) → 自動更新サービスが動作中

●起動時クイックスキャンの設定確認
以下を入力してEnterキーを押下します。

systemctl status clamav-quickscan.service

「Loaded: … enabled」→ 自動起動に登録済み
実行後は「inactive (dead)」と出ても正常(1回限り実行型だから)

●週1フルスキャンのタイマー確認
以下を入力してEnterキーを押下します。

systemctl status clamav-fullscan.timer

「Active: active (waiting)」 → 正常に待機中
「since …」 → 最後に実行した日時
「Trigger:」 → 次回実行予定日時

●ログ確認(検出結果)
以下は、一度も動いていないとファイルそのものが作られていませんので「~そのようなファイルやディレクトリはありません」と表示されます。
作られた後に実行してみて下さい。

・クイックスキャンのログ

tail -n 20 /var/log/clamav/quickscan.log

・フルスキャンのログ

tail -n 20 /var/log/clamav/fullscan.log

「FOUND」が無ければ検出なし、問題なし。

まとめ

この仕組みを利用すれば、ファイルにアクセスされた瞬間にスキャンとブロックが働きます。
ただし Windows Defender のように「挙動監視」や「ネットワーク監視」までは行わないため、厳密には「リアルタイム保護」ではなく、リアルタイムに近い監視と理解するのが正確です。

お疲れ様です。
見てくれてありがとね(・ω・)ノシ

  1. Linux は Windows や macOS と同じ「オペレーティングシステム(OS)」ですが、1社が独占開発しているわけではなく、世界中のコミュニティや企業が協力して発展させています。
    このため、Linux には用途や方針ごとに分かれた「ディストリビューション(配布版)」が多数存在します。
    代表的なディストリビューションは以下の通りです。

    Ubuntu:初心者から企業利用まで幅広く使われる定番
    Debian:安定性重視。Ubuntu のベースになっている
    Fedora / Red Hat:最新技術を積極採用。企業向けサポートあり
    Arch Linux:自分で一から構築する上級者向け
    Linux Mint:Ubuntu をベースに、Windows 風の操作感を重視した初心者向け ↩︎
  2. ClamAV(クラムエーブイ) はオープンソースの無料ウイルス対策ソフトです。Linux サーバーやメールゲートウェイで広く利用され、ウイルス・マルウェア・トロイの木馬などを検出します。商用製品ほど多機能ではありませんが、Linux 環境で無料で導入できる代表的なセキュリティ手段です。 ↩︎
  3. スキャンが動かなくなった典型的な原因
    1)ウイルス定義ファイル(シグネチャ)の更新失敗
    2)バージョン非互換
    3)設定ファイルのエラー
    4)システム環境の更新による影響 ↩︎