CentOS および RHEL に ClamAV アンチウイルスをインストールして使用する方法

ClamAVは、さりげなくインストールできるオープンソースのアンチウイルスソフトの一つで、ウイルス、トロイの木馬、マルウェアといった厄介な脅威からサーバーを守ります。Debian、CentOS、RHELなどのLinuxで主に利用されており、FTP、Samba、ウェブサイト、メールサーバーなどのユーザーディレクトリを軽量なスキャナーでスキャンしたい場合に特に役立ちます。正直に言うと、最初は設定が少し大変に思えるかもしれません。特にEPELリポジトリを操作したり、設定ファイルを調整したり、ターミナルでコマンドをいくつか実行したりする必要があるからです。しかし、一度インストールしてしまえば、ファイルをチェックし、バックグラウンドで動作し、サーバーを監視してくれる頼もしいツールが手に入ります。

Linuxにウイルス対策ソフトをインストールしたことがある方は、「次へ」をクリックするだけという簡単ではないことに気づいたのではないでしょうか。リポジトリを追加し、systemdサービスを設定し、手動でアップデートをスケジュールする必要があります。嬉しいことに、一度設定すればかなり安定しており、スキャンやアップデートを自動化できるので、手間はかかりません。ただし、設定によっては、最初のアップデートやスキャンがハングしたりエラーが発生したりする可能性があるので注意してください。これはよくあることです。Linuxとそのリポジトリは常に完全に同期されているわけではないので、忍耐強く試行錯誤しながら進める必要があることがよくあります。

CentOS/RHEL に ClamAV をインストールして設定する方法

ClamAV パッケージのインストール

ここが少し厄介なところです。ClamAVはデフォルトのリポジトリに含まれていないため、まずEPELリポジトリを追加する必要があります。これは、CentOSとRHELではベースリポジトリが最小限に抑えられており、ClamAVはEPEL(Extra Packages for Enterprise Linux)に含まれているためです。これを行うには、次のコマンドを実行します。

# yum install epel-release -y

インストールが完了したら、ClamAV の実際の作業を進めます。メインパッケージをインストールするだけでなく、スムーズに動作させるために、いくつかの関連パッケージもインストールする必要があります。特に、systemd のサービスなどをバックグラウンドで実行したい場合は、この手順が重要です。コマンドは以下のとおりです。

# yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

CentOS 8 以降では、dnfの代わりに を使用する方が良いかもしれませんyum。考え方は同じですが、コマンドが異なります。

ClamAVの設定

インストールが完了したら、デフォルト設定を調整する必要があります。基本的に、新規インストールではデフォルトではあまり機能しないサンプル設定が付属しています。そのため、これをクリーンアップする必要があります。例えば、/etc/clamd.d/ scan.conf のExample行を削除するか、コメントアウトします。

# sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf

次に、お好みのエディタ ( nanoviなど) でそのファイルを開き、次の行を探します。

LocalSocket /run/clamd.scan/clamd.sock

コメントマーカー(#)を削除して、このようにしてください。少し奇妙に思えるかもしれませんが、このソケットファイルはデーモンがシステムの他の部分と通信するためのものです。設定によっては、ログ記録、最大接続数、除外するディレクトリの定義なども必要になる場合があります。設定ファイル自体の説明は非常に詳細なので、さらに設定を調整する必要がある場合は、ファイル内をよく読んでください。

ウイルスシグネチャを最新の状態に保つ

ClamAVはウイルス定義が古いとあまり役に立ちません。freshclamコマンドデータベースを更新するので、定期的に実行することが非常に重要です。まず、元の設定をバックアップしてください。

# cp /etc/freshclam.conf /etc/freshclam.conf.bak

次に、同様に例の行を削除します。

# sed -i -e "s/^Example/#Example/" /etc/freshclam.conf

起動手順として手動で更新を実行するか、後で cron 経由でスケジュールします。

# freshclam

または、数時間ごとにバックグラウンドで実行したい場合は、デーモンとして起動します。

# freshclam -d

しかし、本当の秘訣はfreshclam用の systemd サービスを作成することです。こうすることで、新しいアップデートを自動的にチェックします。このファイルを/usr/lib/systemd/system/freshclam.serviceとして保存し、以下の内容を含めます。

[Unit] Description=FreshClam Daemon After=network.target [Service] Type=simple ExecStart=/usr/bin/freshclam -d -c 4 Restart=on-failure PrivateTmp=true RestartSec=10s [Install] WantedBy=multi-user.target

次に、systemd をリロードし、このデーモンを起動します。

# systemctl daemon-reload # systemctl start freshclam.service # systemctl enable freshclam.service # systemctl status freshclam.service

メインのClamAVデーモンも同様です。再起動時に自動起動するには、systemdサービスが必要です。サーバーの起動後に起動するように、有効化しておくと良いでしょう。

# systemctl start clamd.service # systemctl enable clamd.service

ウイルススキャンの実行

すべてインストールして実行したら、実際にスキャンできます。ウェブサイトのディレクトリや任意のフォルダをチェックしたい場合は、次のコマンドを実行してください。

# clamscan --infected --remove --recursive /var/www/

再帰的にスキャンし、感染ファイルを削除し、見つかったファイルを表示します。削除が過剰すぎる場合は、疑わしいファイルを削除せずに別の場所に誘導することもできます。

# clamscan --infected --recursive --move=/tmp/clamscan /var/www

疑わしいファイルは/tmp/clamscanに移動します。また、–logでスキャンの詳細をログに記録することもできます。

# clamscan --infected --recursive --move=/tmp/clamscan --log=/var/log/clamscan.log /var/www

特定のディレクトリ(管理パネルなど)を除外したい場合は、–exclude-dir を使用できます。

# clamscan -i --recursive --move=/tmp/clamscan --log=/var/log/clamscan.log --exclude-dir="/var/www/administrator" /var/www

正直なところ、これらのスキャンをスケジュール通りに実行するcronジョブの設定はそれほど難しくありません。/etc/crontabに1、2行追加するだけです。GUI操作がお好みならWinhanceを使うのも良いでしょう。とはいえ、ほとんどの管理者にとってはコマンドラインスキャン十分でしょう。

ああ、ターミナルコマンドの代わりにボタンをクリックする方が好みであれば、ClamTkと呼ばれるグラフィカル フロントエンドもあります。