0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CYBIRD Advent Calendar 2024Advent Calendar 2024

Day 6

オープンソースのウイルス対策ソフトの実装

Last updated at Posted at 2024-12-05

はじめに

CYBIRD Advent Calendar 2024

6日担当の@cy_yusuke_itoです
ゲームや商用コンテンツのインフラ基盤の構築や保守といったことをしています。
5日は、@kanachaさんのunity1week「ちゅう」の参加記録でしたね。

導入契機について

最近、クレジットカード会社よりセキュリティに関して、ウイルス対策ソフトの導入が必須との通達が来ました。
ウイルスソフトといえば、トレンドマイクロやNortonといった有償のものもありますが、オープンソースでもないのかということで検索したところ、ウイルス対策ソフト:ClamAVなるものがありました。
オープンソースということで入れてみようとなり、導入と検証を行いました。
導入のための手順やサーバー側の必要スペックなどを記載していきます。

ClamAVとは

オープンソースのアンチウイルスソフトウェアで、特にメールサーバーやファイルサーバーでのマルウェア検出に使用されます。

  • ウイルスやトロイの木馬、フィッシング攻撃、その他のマルウェアを検出可能
  • Linux、Windows、macOSなどのさまざまなオペレーティングシステムで使用可能
  • ウイルス定義ファイルの自動更新機能

サーバースペック

1. 今回実装したサーバーのスペック

今回の対象サーバでのスペックでは動きますが、ギリギリなので非推奨です。
※リアルタイムスキャンも動かない状態です。。。。。。
CPU    :1CPU(1.6GHz)
メモリ  :2GB
ディスク :20GB

2. 推奨サーバーのスペック

本来は以下のスペックが推奨で、メモリを1.5GBはClamAVで使用するため、他ソフトウェアとの兼ね合いもありますので4GBは欲しいところです。
※リアルタイムスキャンを実装する場合はよりメモリを実装すべきです。
CPU    :1CPU(2.4GHz)
メモリ  :4GB以上
ディスク :20GB以上

実装手順

1. epelの有効化

以下のコマンドを使用してepelをインストール・有効化していきます。

 #インストールされているかの確認
 yum repolist all | grep -i epel 
 
 #インストールされて無い時は以下でインストール
 yum install epel-release
 
 #epelを有効化する
 yum-config-manager --enable epel 

確認コマンドで、以下のように有効になっていればOKです。

[root@hogehoge ~]# yum repolist all | grep -i epel
 * epel: d2lzkl7pfhq30w.cloudfront.net
epel/x86_64                         Extra Packages for Enterprise L 有効: 13,791
epel-debuginfo/x86_64               Extra Packages for Enterprise L 無効
epel-source/x86_64                  Extra Packages for Enterprise L 無効
epel-testing/x86_64                 Extra Packages for Enterprise L 無効
epel-testing-debuginfo/x86_64       Extra Packages for Enterprise L 無効
epel-testing-source/x86_64          Extra Packages for Enterprise L 無効

2. ClamAVのセットアップ

  1. ClamAVをインストール
    yum install clamav clamav-update clamd
    
  2. ウイルス定義データベースを作成
    freshclam
    
  3. 各種コンフィグを設定
    ここでは基本的なものを記載していくので、より詳しくは検索して調べてください。
  • ウイルス定義DB設定ファイル:/etc/freshclam.conf

    構文 内容
    #Example コメントアウトされてない場合はコメントアウト(デフォルトではコメントアウト)
    UpdateLogFile /var/log/freshclam.log ログファイル指定
    LogFileMaxSize 2M ログファイルの最大サイズ指定
    LogTime yes ログに時間を記載
    LogRotate yes ログローテーションの指定
    NotifyClamd /etc/clamd.d/scan.conf ウイルス定義に更新があった場合の通知先
  • ウイルス定義DBのアップデート設定ファイル:
    スケジュールは、cronと同じ記述内容で設定できます。
    ※設定内容の確認、記載がない場合は設定する。

/etc/cron.d/clamav-update
## Adjust this line...
MAILTO=root

## It is ok to execute it as root; freshclam drops privileges and becomes
## user 'clamupdate' as soon as possible
0  1 * * * root /usr/share/clamav/freshclam-sleep
  • ウイルススキャン設定ファイル:/etc/clamd.d/scan.conf
    代表的な個所の記載です。もう少し細かな設定はできますが省略します。
構文 内容
#Example コメントアウトされてない場合はコメントアウト
(デフォルトではコメントアウト)
LogFile /var/log/clamd.scan ログファイル指定
LogFileUnlock yes ログファイルのロックを解除
LogFileMaxSize 2M ログファイルの最大サイズ指定
LogTime yes ログに時間を記載
LogRotate yes ログローテーションの指定
LocalSocket /run/clamd.scan/clamd.sock デーモンがリッスンするローカル ソケット ファイルへのパスの指定
FixStaleSocket yes 予定外シャットダウン時のソケット削除設定
ExcludePath ^/proc/ スキャン対象外ディレクトリの指定:システムディレクトリのため
ExcludePath ^/sys/ スキャン対象外ディレクトリの指定:システムディレクトリのため
ExcludePath ^/dev/ スキャン対象外ディレクトリの指定:システムディレクトリのため
User root スキャン実行ユーザーの指定

3. サービスの使用リソースの制限をかける

今回、実装したサーバーはリソースが小さいため使用率を制限しました。
本来は制限をかけない方がよく、メモリを制限した場合はSWAP領域を頻繁に使用することになるためCPU高騰の原因になります。
今回は、以下を追記しました。

/usr/lib/systemd/system/clamd@.service
[Unit]
Description = clamd scanner (%i) daemon
Documentation=man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/
After = syslog.target nss-lookup.target network.target

[Service]
Type = forking
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/%i.conf
# Reload the database
ExecReload=/bin/kill -USR2 $MAINPID
Restart = on-failure
TimeoutStartSec=420

#以下を追記する
MemoryLimit:512M #メモリ使用量を512MBに設定
CPUQuota:35%   #CPU使用量を35%に設定

[Install]
WantedBy = multi-user.target

保存したら以下のコマンドで、リロードをしてください。

systemctl daemon-reload

4. サービスの開始とスキャンスケジュールの設定

ClamAV自体の設定が完了したら、サービスの起動とLinux自体のcron設定を行います。
cron設定を行うことでスケジューリングされたフルスキャンを実施ができます。

4-1. 自動起動の設定

systemctl enable clamd@scan

4-2. サービス起動

systemctl start clamd@scan

4-3. cronでフルスキャンのスケジュール設定を行う

今回は月1回のフルスキャンでしたので、毎月第2月曜日に実施する用に設定しました。

crontab -e 0 3 8-14 * * [ "$(date +\%u)" = "1" ] && clamdscan -c /etc/clamd.d/scan.conf --fdpass -l /var/log/clamd.scan /

まとめ

今回は基本的なインストール方法と設定方法、cron設定について記載しました。
リアルタイムスキャンもできるようではありますが、その場合だと今回インストールしたサーバースペックでは到底足りません。
検証出来たら、この記事に追記していきたいと思います。

最後に

明日は、@shiso_cさんのUnity1Weekで使う時短のためのあれこれです。
お楽しみに!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?