Установка ClamAV 1.1.* из исходников на Debian 11 Bullseye
# Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от root.
apt-get install gcc cmake make pkg-config valgrind git python3 python3-pip python3-pytest check libbz2-dev libcurl4-openssl-dev libjson-c-dev libmilter-dev libncurses5-dev libpcre2-dev libssl-dev libxml2-dev libsystemd-dev zlib1g-dev -y
# Начиная с версии 0.105+, для компиляции частей libclamav требуется набор инструментов Rust. Как установить язык программирования Rust на Debian 11 Bullseye
Установка ClamAV
# Скачиваем исходник, распаковываем его и переходим в распакованный каталог (на момент написания статьи latest версия 1.1.0).
cd /opt wget https://www.clamav.net/downloads/production/clamav-1.1.0.tar.gz tar -zxvf clamav-1.1.0.tar.gz cd clamav-1.1.0
[stextbox id=’warning’]ИНФОРМАЦИЯ: оф. страница https://www.clamav.net/downloads не доступна из РФ, поэтому скачиваем исходник через VPN.[/stextbox]
# Создаем «build» подкаталог и переходим в него.
mkdir build && cd build
[stextbox id=’info’]ИНФОРМАЦИЯ: Это позволит легко удалить файлы сборки, если что-то пойдет не так и потребуется перенастроить и повторить попытку.[/stextbox]
# Конфигурирование сборки.
cmake .. \ -D CMAKE_BUILD_TYPE=RelWithDebInfo \ -D CMAKE_INSTALL_PREFIX=/usr \ -D CMAKE_INSTALL_LIBDIR=/usr/lib \ -D APP_CONFIG_DIRECTORY=/etc/clamav \ -D DATABASE_DIRECTORY=/var/lib/clamav \ -D ENABLE_MILTER=ON \ -D ENABLE_JSON_SHARED=OFF
[stextbox id=’info’]ИНФОРМАЦИЯ: Разработчики рекомендуют установку со статической библиотекой json-c (ENABLE_JSON_SHARED=OFF)[/stextbox]
# Собираем пакет, тестируем и устанавливаем
cmake --build . ctest cmake --build . --target install
# Создаем сервисный аккаунт от которого будут работать службы (freshclam, clamd).
groupadd clamav useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav
# Создаем необходимые каталоги и настраиваем права владельца.
mkdir /var/log/clamav/ /var/lib/clamav /var/run/clamav/ chown clamav:clamav /var/log/clamav/ /var/lib/clamav /var/run/clamav/ chmod 755 /var/lib/clamav
# Создаем сервис запуска для — freshclam
cat << EOF > /etc/systemd/system/clamav-freshclam.service [Unit] Description=ClamAV virus database updater Documentation=man:freshclam(1) man:freshclam.conf(5) https://www.clamav.net/documents # If user wants it run from cron, dont start the daemon. ConditionPathExists=!/etc/cron.d/clamav-freshclam Wants=network-online.target After=network-online.target [Service] User=clamav Group=clamav ExecStart=/usr/bin/freshclam -d --foreground=true StandardOutput=syslog [Install] WantedBy=multi-user.target EOF
# Создаем сервис запуска для — ClamAV
cat << EOF > /etc/systemd/system/clamav-daemon.service [Unit] Description=Clam AntiVirus userspace daemon Documentation=man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/ # Check for database existence ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc} ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc} [Service] ExecStartPre = /usr/bin/mkdir -p /var/run/clamav ExecStartPre = /usr/bin/chown -R clam.clam /var/run/clamav ExecStart=/usr/sbin/clamd --foreground=true # Reload the database ExecReload=/bin/kill -USR2 $MAINPID StandardOutput=syslog TimeoutStartSec=420 [Install] WantedBy=multi-user.target EOF
cat << EOF > /etc/systemd/system/clamav-milter.service [Unit] Description='ClamAV Milter' After=clamav-daemon.service [Service] Type=forking ExecStart=/usr/sbin/clamav-milter --config-file /etc/clamav/clamav-milter.conf [Install] WantedBy=multi-user.target EOF
# Перезапускаем демон системного управления, включаем созданные сценарии запуска.
systemctl daemon-reload systemctl enable clamav-freshclam.service systemctl enable clamav-daemon.service systemctl enable clamav-milter.service
# Конфигурация clamav (основные параметры, оригинальный файл конфигурации /etc/clamav/clamd.conf.sample).
cat << EOF > /etc/clamav/clamd.conf LocalSocket /var/run/clamav/clamd.socket FixStaleSocket true LocalSocketGroup clamav LocalSocketMode 666 User clamav TCPSocket 3310 ScanMail true ScanArchive true ArchiveBlockEncrypted false MaxDirectoryRecursion 15 FollowDirectorySymlinks false FollowFileSymlinks false ReadTimeout 180 MaxThreads 12 MaxConnectionQueueLength 15 LogSyslog false LogRotate true LogFacility LOG_LOCAL6 LogClean false LogVerbose false PreludeEnable no PreludeAnalyzerName ClamAV DatabaseDirectory /var/lib/clamav OfficialDatabaseOnly false SelfCheck 3600 Foreground false Debug false ScanPE true MaxEmbeddedPE 10M ScanOLE2 true ScanPDF true ScanHTML true MaxHTMLNormalize 10M MaxHTMLNoTags 2M MaxScriptNormalize 5M MaxZipTypeRcg 1M ScanSWF true ExitOnOOM false LeaveTemporaryFiles false AlgorithmicDetection true ScanELF true IdleTimeout 30 CrossFilesystems true PhishingSignatures true PhishingScanURLs true PhishingAlwaysBlockSSLMismatch false PhishingAlwaysBlockCloak false PartitionIntersection false DetectPUA false ScanPartialMessages false HeuristicScanPrecedence false StructuredDataDetection false CommandReadTimeout 30 SendBufTimeout 200 MaxQueue 100 ExtendedDetectionInfo true OLE2BlockMacros false AllowAllMatchScan true ForceToDisk false DisableCertCheck false DisableCache false MaxScanTime 120000 MaxScanSize 100M MaxFileSize 25M MaxRecursion 16 MaxFiles 10000 MaxPartitions 50 MaxIconsPE 100 PCREMatchLimit 10000 PCRERecMatchLimit 5000 PCREMaxFileSize 25M ScanXMLDOCS true ScanHWP3 true MaxRecHWP3 16 StreamMaxLength 25M LogFile /var/log/clamav/clamav.log LogTime true LogFileUnlock false LogFileMaxSize 0 Bytecode true BytecodeSecurity TrustSigned BytecodeTimeout 60000 OnAccessMaxFileSize 5M EOF
# Конфигурация freshclam (основные параметры, оригинальный файл конфигурации /etc/clamav/freshclam.conf.sample).
cat << EOF > /etc/clamav/freshclam.conf DatabaseOwner clamav UpdateLogFile /var/log/clamav/freshclam.log LogVerbose false LogSyslog false LogFacility LOG_LOCAL6 LogFileMaxSize 0 LogRotate true LogTime true Foreground false Debug false MaxAttempts 5 DatabaseDirectory /var/lib/clamav DNSDatabaseInfo current.cvd.clamav.net ConnectTimeout 30 ReceiveTimeout 0 TestDatabases yes ScriptedUpdates yes CompressLocalDatabase no Bytecode true NotifyClamd /etc/clamav/clamd.conf Checks 24 DatabaseMirror db.local.clamav.net DatabaseMirror database.clamav.net EOF
cat << EOF > /etc/clamav/clamav-milter.conf MilterSocket /var/run/clamav/clamav-milter.socket MilterSocketMode 660 FixStaleSocket yes User clamav MilterSocketGroup clamav PidFile /run/clamav/clamav-milter.pid TemporaryDirectory /tmp ClamdSocket unix:/run/clamav/clamd.ctl LogFile /var/log/clamav/clamav-milter.log LogRotate yes LogInfected Basic EOF
# Первое обновление антирирусных баз делаем в ручную.
freshclam --debug
[stextbox id=’info’]ИНФОРМАЦИЯ. Так как с территории РФ доступа к серверам ClamAV не доступа, то базы нужно качать через VPN и в ручном режиме их размещать в каталоге — /var/lib/clamav[/stextbox]
# Запускаем службы
systemctl start clamav-freshclam.service systemctl start clamav-daemon.service systemctl start clamav-milter.service
Удаление ClamAV
CMake формирует install_manifest.txt файл при установке и с его помощью удалим все установленные файлы.
Переходим в каталог из которого выполняли компиляцию ClamAV ( в моем случае это — /opt/clamav-1.1.0/build) и выполняем команды.
mkdir deleted-by-uninstall sudo xargs -I{} mv -t deleted-by-uninstall "{}" < install_manifest.txt rm -rf deleted-by-uninstall
Подчищаем хвосты, удаляем созданные службы и оставшиеся файлы конфигураций.
systemctl stop clamav-freshclam.service systemctl stop clamav-daemon.service systemctl stop clamav-milter.service systemctl disable clamav-freshclam.service systemctl disable clamav-daemon.service systemctl disable clamav-milter.service systemctl daemon-reload rm /etc/systemd/system/clamav-* rm -rf /etc/clamav
Обсуждение
Нет комментариев.