目次
はじめに
長らく Sophos Anti Virus を使ってきたのですが、残念ながら無償提供が終了してしまいました。また、有償版も近々 EOL とのことです。Sophos Intercept X for server が 後継になるようですが、法人向け製品のためかそこそこの価格設定です。
購入も検討してみましたが、とりあえず ClamAV で様子を見ることにしました。
ClamAV は、検出率とメモリの消費に問題があります。オフィシャルの署名(定義ファイル)ではスッカスカとのこと。
少しでも検出率を上げるために、サードパーティーの署名を導入してみました。
ClamAV のインストール
今回インストールする環境は、RHEL9系 の AlmaLinux 9 を選択しました。
1 2 |
sudo dnf install -y clamav clamav-update clamd sudo systemctl start clamav-freshclam.service |
サードパーティーの署名ファイルを更新するプログラム
サードパーティーの署名ファイルを更新するプログラムとして、有名どころは以下の二つです。
・clamav-unofficial-sigs
・Fangfrisch
「clamav-unofficial-sigs」は root権限で実行する必要があるようで、セキュリティ的には「Fangfrisch」の方が優れているようです。
ということで、「Fangfrisch」を選択しました。
Fangfrisch のインストール
パッケージ管理ソフトでインストールできないようで、半手動でインストール等を行います。
1 2 3 4 5 6 7 8 |
sudo mkdir -m 0770 -p /var/lib/fangfrisch sudo chown <ログインしているユーザー> /var/lib/fangfrisch cd /var/lib/fangfrisch python3 -m venv venv source venv/bin/activate /var/lib/fangfrisch/venv/bin/python3 -m pip install --upgrade pip pip install fangfrisch sudo chown clamupdate. -R /var/lib/fangfrisch |
Fangfrisch の初期設定
コンフィグファイルの作成
なお、[malwarepatrol]の「receipt = you_forgot_to_configure_receipt」と[securiteinfo]の「customer_id = you_forgot_to_configure_receipt」は、それぞれのサイトで取得したコードに更新し、「enabled = no」を「enabled = yes」に変更する必要があります。
その他、細かいパラメータについては、こちらを参照してください。
1 |
vi /etc/fangfrisch.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
[DEFAULT] db_url = sqlite:////var/lib/fangfrisch/db.sqlite local_directory = /var/lib/clamav on_update_exec = /usr/bin/clamdscan --reload integrity_check = sha256 cleanup = automatic [sanesecurity] enabled = yes interval = 2h prefix = http://ftp.swin.edu.au/sanesecurity/ !url_foxhole_all_cdb = ${prefix}foxhole_all.cdb !url_foxhole_all_ndb = ${prefix}foxhole_all.ndb !url_foxhole_mail = ${prefix}foxhole_mail.cdb !url_scamnailer = ${prefix}scamnailer.ndb !url_winnow_phish_complete = ${prefix}winnow_phish_complete.ndb url_badmacro = ${prefix}badmacro.ndb url_blurl = ${prefix}blurl.ndb url_bofhland_cracked_url = ${prefix}bofhland_cracked_URL.ndb url_bofhland_malware_attach = ${prefix}bofhland_malware_attach.hdb url_bofhland_malware_url = ${prefix}bofhland_malware_URL.ndb url_bofhland_phishing_url = ${prefix}bofhland_phishing_URL.ndb url_foxhole_filename = ${prefix}foxhole_filename.cdb url_foxhole_generic = ${prefix}foxhole_generic.cdb url_foxhole_js_cdb = ${prefix}foxhole_js.cdb url_foxhole_js_ndb = ${prefix}foxhole_js.ndb url_hackingteam = ${prefix}hackingteam.hsb url_junk = ${prefix}junk.ndb url_jurlbl = ${prefix}jurlbl.ndb url_jurlbla = ${prefix}jurlbla.ndb url_lott = ${prefix}lott.ndb url_malwareexpert_fp = ${prefix}malware.expert.fp url_malwareexpert_hdb = ${prefix}malware.expert.hdb url_malwareexpert_ldb = ${prefix}malware.expert.ldb url_malwareexpert_ndb = ${prefix}malware.expert.ndb url_malwarehash = ${prefix}malwarehash.hsb url_phish = ${prefix}phish.ndb url_phishtank = ${prefix}phishtank.ndb url_porcupine = ${prefix}porcupine.ndb url_rogue = ${prefix}rogue.hdb url_scam = ${prefix}scam.ndb url_shelter = ${prefix}shelter.ldb url_spamattach = ${prefix}spamattach.hdb url_spamimg = ${prefix}spamimg.hdb url_spear = ${prefix}spear.ndb url_spearl = ${prefix}spearl.ndb url_winnow_attachments = ${prefix}winnow.attachments.hdb url_winnow_bad_cw = ${prefix}winnow_bad_cw.hdb url_winnow_extended_malware = ${prefix}winnow_extended_malware.hdb url_winnow_extended_malware_links = ${prefix}winnow_extended_malware_links.ndb url_winnow_malware = ${prefix}winnow_malware.hdb url_winnow_malware_links = ${prefix}winnow_malware_links.ndb url_winnow_phish_complete_url = ${prefix}winnow_phish_complete_url.ndb url_winnow_spam_complete = ${prefix}winnow_spam_complete.ndb [urlhaus] enabled = yes interval = 10m url_urlhaus = https://urlhaus.abuse.ch/downloads/urlhaus.ndb max_size = 2MB [malwarepatrol] enabled = no receipt = you_forgot_to_configure_receipt interval = 1d integrity_check = disabled product = 8 prefix = https://lists.malwarepatrol.net/cgi/getfile?product=${product}&receipt=${receipt}&list= url_clamav_basic = ${prefix}clamav_basic filename_clamav_basic = malwarepatrol.db [securiteinfo] enabled = no customer_id = you_forgot_to_configure_receipt interval = 1h max_size = 20MB prefix = https://www.securiteinfo.com/get/signatures/${customer_id}/ !url_0hour = ${prefix}securiteinfo0hour.hdb !url_old = ${prefix}securiteinfoold.hdb !url_securiteinfo_mdb = ${prefix}securiteinfo.mdb !url_spam_marketing = ${prefix}spam_marketing.ndb url_android = ${prefix}securiteinfoandroid.hdb url_ascii = ${prefix}securiteinfoascii.hdb url_html = ${prefix}securiteinfohtml.hdb url_javascript = ${prefix}javascript.ndb url_pdf = ${prefix}securiteinfopdf.hdb url_securiteinfo = ${prefix}securiteinfo.hdb url_securiteinfo_ign2 = ${prefix}securiteinfo.ign2 |
イニシャルデーターベースの作成
1 |
sudo -u clamupdate -- /usr/local/bin/fangfrisch --conf /etc/fangfrisch.conf initdb |
Fangfrisch の自動更新の設定
1 |
sudo vi /usr/lib/systemd/system/fangfrisch.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[Unit] Description=Download unofficial clamav virus definition files ConditionPathExists=/var/lib/fangfrisch/db.sqlite After=network-online.target Wants=network-online.target [Service] Type=simple User=clamupdate WorkingDirectory=/var/lib/fangfrisch ExecStart=/usr/local/bin/fangfrisch --conf /etc/fangfrisch.conf refresh [Install] WantedBy=multi-user.target |
1 |
sudo vi /usr/lib/systemd/system/fangfrisch.timer |
1 2 3 4 5 6 7 8 9 10 11 12 |
[Unit] Description=Download unofficial clamav virus definition files Requires=fangfrisch.service [Timer] OnCalendar=hourly Unit=fangfrisch.service RandomizedDelaySec=10m Persistent=true [Install] WantedBy=timers.target |
有効化
1 2 |
sudo systemctl daemon-reload sudo systemctl enable fangfrisch.timer --now |
ClamAV の設定に関する注意
基本的に、デフォルト設定のままで問題ありません。
1 |
sudo vi /etc/clamd.d/scan.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# Only load the official signatures published by the ClamAV project. # Default: no OfficialDatabaseOnly no # こちらの設定が"yes"になっているとサードパーティーの署名は読み込まれないようです # Set bytecode security level. # Possible values: # None - No security at all, meant for debugging. # DO NOT USE THIS ON PRODUCTION SYSTEMS. # This value is only available if clamav was built # with --enable-debug! # TrustSigned - Trust bytecode loaded from signed .c[lv]d files, insert # runtime safety checks for bytecode loaded from other sources. # Paranoid - Don't trust any bytecode, insert runtime checks for all. # Recommended: TrustSigned, because bytecode in .cvd files already has these # checks. # Note that by default only signed bytecode is loaded, currently you can only # load unsigned bytecode in --enable-debug mode. # # Default: TrustSigned BytecodeSecurity TrustSigned # こちらの設定は"TrustSigned"のままで大丈夫です。 # Allow loading bytecode from outside digitally signed .c[lv]d files. # **Caution**: You should NEVER run bytecode signatures from untrusted sources. # Doing so may result in arbitrary code execution. # Default: no #BytecodeUnsigned yes BytecodeUnsigned no # こちらの設定は"no"のままで大丈夫です。 |