ClamAV является антивирусом с открытым исходным кодом. Его используют для обнаружения вирусов, вредоносных программ и вредоносного программного обеспечения на компьютерах под управлением Linux и даже в решениях именитых вендоров, так как эта разработка была выкуплена компанией Cisco, но все же оставлена в виде open-source. Угроза со стороны вирусов, троянов и других вредоносных программ всегда возможна, их количество растет в геометрической прогрессии как по количеству, так и по сложности, и антивирусное программное обеспечение всегда должно использовать сложные методы обнаружения. Никогда нельзя дать гарантии, что ваша система не станет жертвой этих нежелательных фрагментов кода, так что важно оставаться внимательным при использовании Интернета и совместном использовании файлов. Ну и отсюда вытекает необходимость реализации политик безопасности на основе здравого смысла и использовании современных антивирусных программ.
Установка ClamAV
Чтобы установить ClamAV в CentOS / RHEL 7, нам нужно установить репозиторий EPEL:
# yum install epel-release
Затем необходимо установить ClamAV со всеми его полезными инструментами:
# yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Настройка антивируса ClamAV
Для настройки ClamAV в первую очередь нам нужно удалить конфигурацию по умолчанию, чтобы создать свою:
# sed -i '/^Example/d' /etc/clamd.d/scan.conf
После удаления строк примера нужно сделать некоторые правки, чтобы определить тип сервера TCP и предоставить root права для запуска антивируса:
# vim /etc/clamd.d/scan.conf
Значение, данное с LocalSocket, является файлом, использующим связи с внешними процессами. Следует выполнить следующую строку:
LocalSocket /var/run/clamd.scan/clamd.sock
Добавляем эти две строки в конец файла и сохраняем:
User root LocalSocket /var/run/clamd.<SERVICE>/clamd.sock
Чтобы поддерживать базу данных сигнатур ClamAV в актуальном состоянии, необходимо включить инструмент под названием Freshclam. Поэтому нужно создать файл резервной копии из его файла конфигурации:
# cp /etc/freshclam.conf /etc/freshclam.conf.bak
Freshclam читает свою конфигурацию из /etc/freshclam.conf. Файл содержит строку со словом Пример, чтобы пользователи не могли использовать значения по умолчанию, их необходимо удалить их или закомментировать, прежде чем сможем использовать freshclam. А так как не все настройки по умолчанию не подходят для наших целей, придется внимательно проверить файл и решить, что нам понадобится. Каждая команда также будет прокомментирована.
# sed -i '/^Example/d' /etc/freshclam.conf
Нам нужно запустить Freshclam, чтобы обновить базу данных и проверить, успешно ли задана конфигурация:
# freshclam ClamAV update process started at Tue Nov 6 15:51:59 2018 WARNING: Can't query current.cvd.clamav.net WARNING: Invalid DNS reply. Falling back to HTTP mode. Reading CVD header (main.cvd): OK (IMS) main.cvd is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr) Reading CVD header (daily.cvd): OK Downloading daily-25006.cdiff [100%] Downloading daily-25092.cdiff [100%] Downloading daily-25093.cdiff [100%] Downloading daily-25094.cdiff [100%] Downloading daily-25095.cdiff [100%] daily.cld updated (version: 25095, sigs: 2143057, f-level: 63, builder: neo) Reading CVD header (bytecode.cvd): OK bytecode.cvd is up to date (version: 327, sigs: 91, f-level: 63, builder: neo) Database updated (6709397 signatures) from database.clamav.net (IP: 104.16.186.138)
Процесс выводит свой прогресс-бар в терминал, и вы можете увидеть несколько сообщений об ошибках. Например, он может сообщить, что ему не удалось загрузить нужный файл. Не паникуйте - freshclam попробует несколько зеркал. Он сообщает, что main.cvd, daily.cvd и bytecode.cvd обновляются, и по завершении, вы будете знать, что у вас есть последние сигнатуры.
Мы можем запустить freshclam в любое время, когда необходимо убедиться, что базы данных сигнатур обновлены, но было бы неудобно всегда запускать его вручную. При запуске с аргументом -d freshclam будет работать и периодически проверять наличие обновлений в течение дня (по умолчанию каждые два часа).
Чтобы сохранить некий порядок в системе, мы создали файл службы для запуска freshclam и зарегистрировали его в systemd:
# vim /usr/lib/systemd/system/clam-freshclam.service
Затем мы помещаем следующий код в файл и сохраняем его:
[Unit] Description = freshclam scanner After = network.target [Service] Type = forking ExecStart = /usr/bin/freshclam -d -c 4 Restart = on-failure PrivateTmp = true RestartSec = 20sec [Install] WantedBy=multi-user.target
Раздел [Unit] определяет основные атрибуты сервиса, такие как его описание и его зависимость от сетевого соединения. Раздел [Service] определяет сам сервис, ExecStart будет запускать freshclam с аргументом -d, Type сообщает systemd, что процесс будет разветвляться и запускаться в фоновом режиме, а при перезапуске systemd отслеживает сервис и перезапускает его автоматически в случае. Раздел [Install] определяет, как он будет связан, когда запустится systemctl enable.
Перезагрузите systemd, чтобы применить изменения:
# systemctl daemon-reload
Далее запустите и включите сервис freshclam:
# systemctl start clam-freshclam.service # systemctl status clam-freshclam.service clam-freshclam.service - freshclam scanner
oaded: loaded (/usr/lib/systemd/system/clam-freshclam.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2018-11-06 15:56:53 IST; 3s ago Process: 7926 ExecStart=/usr/bin/freshclam -d -c 4 (code=exited, status=0/SUCCESS) Main PID: 7927 (freshclam) CGroup: /system.slice/clam-freshclam.service L-7927 /usr/bin/freshclam -d -c 4 Nov 06 15:56:53 node2.example.com systemd[1]: Starting freshclam scanner... Nov 06 15:56:53 node2.example.com systemd[1]: Started freshclam scanner. Nov 06 15:56:53 node2.example.com freshclam[7927]: freshclam daemon 0.100.2 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64) Nov 06 15:56:53 node2.example.com freshclam[7927]: ClamAV update process started at Tue Nov 6 15:56:53 2018
Если все работает нормально, добавляем его в службу запуска системы:
# systemctl enable clam-freshclam.service Created symlink from /etc/systemd/system/multi-user.target.wants/clam-freshclam.service to /usr/lib/systemd/system/clam-freshclam.service.
Теперь для настройки ClamAV необходимо создать файл сервиса ClamAV. У нас есть пример файла службы, который нам нужно скопировать в папку системных служб. Нам нужно изменить его имя на что-то понятное. Затем нам нужно внести в него небольшие изменения:
# mv /usr/lib/systemd/system/clamd@.service /usr/lib/systemd/system/clamd.service
Поскольку мы изменили имя, нам нужно изменить его в файле, который также использует этот сервис:
# vim /usr/lib/systemd/system/clamd@scan.service
Мы изменили первую строку, удалив @, чтобы это выглядело так:
.include /lib/systemd/system/clamd.service
В том же месте нам нужно изменить файл сервиса Clamd:
# vim /usr/lib/systemd/system/clamd.service
Мы добавляем следующие строки в конце:
[Install] WantedBy=multi-user.target
Удаляем % i из опций Description и ExecStart. Затем изменяем их, чтобы они выглядели следующим образом:
Description = clamd scanner daemon ExecStart = /usr/sbin/clamd -c /etc/clamd.d/scan.conf TimeoutSec=5min Restart = on-failure RestartSec=10sec
Далее запустите сервис clamv
# systemctl start clamd.service # systemctl status clamd.service clamd.service - clamd scanner daemon Loaded: loaded (/usr/lib/systemd/system/clamd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2018-11-06 19:48:17 IST; 16s ago Docs: man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/ Process: 1460 ExecStart=/usr/sbin/clamd -c /etc/clamd.d/scan.conf (code=exited, status=0/SUCCESS) Main PID: 1461 (clamd) CGroup: /system.slice/clamd.service L-1461 /usr/sbin/clamd -c /etc/clamd.d/scan.conf Nov 06 19:48:15 node2.example.com clamd[1461]: ELF support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: Mail files support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: OLE2 support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: PDF support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: SWF support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: HTML support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: XMLDOCS support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: HWP3 support enabled. Nov 06 19:48:15 node2.example.com clamd[1461]: Self checking every 600 seconds. Nov 06 19:48:17 node2.example.com systemd[1]: Started clamd scanner daemon.
Если все хорошо, то включите сервис clamd.
# systemctl enable clamd.service Created symlink from /etc/systemd/system/multi-user.target.wants/clamd.service to /usr/lib/systemd/system/clamd.service.
Для проверки текущей папки мы запускаем следующую команду:
# clamscan --infected --remove --recursive ./ ----------- SCAN SUMMARY ----------- Known viruses: 6702413 Engine version: 0.100.2 Scanned directories: 7 Scanned files: 9 Infected files: 0 Data scanned: 0.01 MB Data read: 0.00 MB (ratio 2.00:1) Time: 25.439 sec (0 m 25 s)
Мы надеемся вы правильно выполнили все этапы настройки ClamAV в RHEL / CentOS 7 Linux и они оказались полезны для вас в том или ином виде.