⚠️ КРИТИЧЕСКИ ВАЖНО: ДОБАВЛЯЕМ SWAP ПЕРЕД УСТАНОВКОЙ CLAMAV
🔴 ПРОБЛЕМА: Если у вас всего 1.9GB RAM и НЕТ SWAP! ClamAV требует минимум 1-2GB для загрузки баз.
📋 ШАГ 1: СОЗДАЕМ SWAP ФАЙЛ (ОБЯЗАТЕЛЬНО!)
# Создаем swap файл 2GB
echo "Создаем swap файл 2GB..."
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
# Устанавливаем права
chmod 600 /swapfile
# Форматируем как swap
mkswap /swapfile
# Активируем swap
swapon /swapfile
# Проверяем
free -h
# Добавляем в fstab для постоянного использования
echo "/swapfile none swap sw 0 0" >> /etc/fstab
# Настраиваем swappiness (как часто использовать swap)
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
echo "✅ Swap успешно добавлен!"
📋 ШАГ 2: УСТАНАВЛИВАЕМ CLAMAV
# Обновляем систему
dnf update -y
# Устанавливаем EPEL репозиторий
dnf install -y epel-release
# Устанавливаем ClamAV
dnf install -y clamav clamav-update clamav-filesystem
# Проверяем установку
clamscan --version
📋 ШАГ 3: НАСТРАИВАЕМ FRESHCLAM С РОССИЙСКИМ ЗЕРКАЛОМ
# Создаем конфигурацию freshclam
cat > /etc/freshclam.conf << 'EOF'
# Основные настройки
DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 10M
LogRotate yes
LogVerbose no
LogSyslog yes
# Пользователь
DatabaseOwner clamupdate
# ТОЛЬКО российское зеркало (чтобы избежать rate limit)
DatabaseMirror clamav-mirror.ru
# Частота проверок (6 раз в день)
Checks 6
# Таймауты
ConnectTimeout 30
ReceiveTimeout 60
MaxAttempts 3
# Отключаем проверку DNS (чтобы не обращаться к официальным серверам)
DNSDatabaseInfo no
EOF
# Создаем директории и права
mkdir -p /var/lib/clamav
mkdir -p /var/log
touch /var/log/freshclam.log
chown clamupdate:clamupdate /var/log/freshclam.log
chown -R clamupdate:clamupdate /var/lib/clamav
📋 ШАГ 4: ЗАГРУЖАЕМ БАЗЫ ДАННЫХ
# Загружаем базы с российского зеркала напрямую
echo "Загружаем базы данных с российского зеркала..."
cd /var/lib/clamav
# Загружаем main.cvd
echo "Загружаем main.cvd (около 160MB)..."
wget --progress=bar:force -O main.cvd http://clamav-mirror.ru/main.cvd
# Загружаем daily.cvd
echo "Загружаем daily.cvd (около 60MB)..."
wget --progress=bar:force -O daily.cvd http://clamav-mirror.ru/daily.cvd
# Загружаем bytecode.cvd
echo "Загружаем bytecode.cvd (около 300KB)..."
wget --progress=bar:force -O bytecode.cvd http://clamav-mirror.ru/bytecode.cvd
# Устанавливаем права
chown clamupdate:clamupdate *.cvd
chmod 644 *.cvd
# Проверяем
ls -lh *.cvd
# Возвращаемся
cd -
📋 ШАГ 5: СОЗДАЕМ ОПТИМИЗИРОВАННЫЙ СКАНЕР ДЛЯ МАЛОЙ ПАМЯТИ
cat > /usr/local/bin/clamscan-low-mem << 'EOF'
#!/bin/bash
# ClamAV сканер для систем с малой памятью
SCAN_DIR="${1:-/home/bitrix/www}"
LOG_FILE="/var/log/clamav-scan-$(date +%Y%m%d-%H%M).log"
echo "========================================" | tee $LOG_FILE
echo "ClamAV Scan (Low Memory Mode)" | tee -a $LOG_FILE
echo "Started: $(date)" | tee -a $LOG_FILE
echo "Path: $SCAN_DIR" | tee -a $LOG_FILE
echo "========================================" | tee -a $LOG_FILE
# Проверяем swap
SWAP_TOTAL=$(free -m | awk '/^Swap:/{print $2}')
if [ "$SWAP_TOTAL" -lt 1024 ]; then
echo "⚠️ Warning: Low swap space ($SWAP_TOTAL MB)" | tee -a $LOG_FILE
fi
# Сканируем с минимальными настройками
# Используем только daily базу для экономии памяти
nice -n 19 ionice -c 3 clamscan \
--infected \
--recursive \
--suppress-ok-results \
--max-filesize=5M \
--max-scansize=20M \
--max-recursion=5 \
--max-files=5000 \
--database=/var/lib/clamav/daily.cvd \
--exclude-dir="\.git" \
--exclude-dir="cache" \
--exclude-dir="tmp" \
--exclude="\.log$" \
--exclude="\.sql$" \
"$SCAN_DIR" 2>&1 | tee -a $LOG_FILE
# Результаты
echo "" | tee -a $LOG_FILE
echo "========================================" | tee -a $LOG_FILE
INFECTED=$(grep -c "FOUND" $LOG_FILE 2>/dev/null || echo "0")
if [ "$INFECTED" -gt 0 ]; then
echo "⚠️ INFECTED FILES: $INFECTED" | tee -a $LOG_FILE
grep "FOUND" $LOG_FILE
else
echo "✅ No threats detected" | tee -a $LOG_FILE
fi
echo "Completed: $(date)" | tee -a $LOG_FILE
echo "Log: $LOG_FILE" | tee -a $LOG_FILE
echo "========================================" | tee -a $LOG_FILE
EOF
chmod +x /usr/local/bin/clamscan-low-mem
📋 ШАГ 6: СОЗДАЕМ УПРАВЛЯЮЩУЮ ПАНЕЛЬ
cat > /usr/local/bin/clamav-control << 'EOF'
#!/bin/bash
case "$1" in
scan)
echo "Starting scan (low memory mode)..."
/usr/local/bin/clamscan-low-mem "${2:-/home/bitrix/www}"
;;
test)
echo "Testing ClamAV..."
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/test.txt
clamscan --database=/var/lib/clamav/daily.cvd /tmp/test.txt
rm -f /tmp/test.txt
;;
update)
echo "Updating databases from Russian mirror..."
cd /var/lib/clamav
for db in main.cvd daily.cvd bytecode.cvd; do
echo "Updating $db..."
wget -q -O ${db}.tmp http://clamav-mirror.ru/$db
if [ -s ${db}.tmp ]; then
mv ${db}.tmp $db
chown clamupdate:clamupdate $db
echo "✓ $db updated"
else
rm -f ${db}.tmp
echo "✗ Failed to update $db"
fi
done
cd -
;;
status)
echo "=== ClamAV Status ==="
echo "Version: $(clamscan --version)"
echo
echo "Databases:"
ls -lh /var/lib/clamav/*.cvd 2>/dev/null | awk '{print " "$9": "$5}'
echo
echo "Memory:"
free -h | grep -E "^Mem|^Swap"
echo
echo "Last logs:"
ls -lt /var/log/clamav-scan-*.log 2>/dev/null | head -3
;;
*)
echo "Usage: $0 {scan|test|update|status} [path]"
echo
echo " scan [path] - Scan directory (default: /home/bitrix/www)"
echo " test - Test with EICAR signature"
echo " update - Update virus databases"
echo " status - Show status"
exit 1
;;
esac
EOF
chmod +x /usr/local/bin/clamav-control
# Создаем короткий алиас
ln -sf /usr/local/bin/clamav-control /usr/bin/clamctl
📋 ШАГ 7: НАСТРОЙКА АВТОМАТИЗАЦИИ
# Создаем cron задания
cat > /etc/cron.d/clamav-scanner << 'EOF'
# ClamAV автоматизация для систем с малой памятью
# Обновление баз раз в день в 2:00 (с российского зеркала)
0 2 * * * root /usr/local/bin/clamav-control update >/dev/null 2>&1
# Сканирование раз в день в 3:00 (low memory mode)
0 3 * * * root /usr/local/bin/clamscan-low-mem /home/bitrix/www >/dev/null 2>&1
# Быстрая проверка новых PHP файлов каждые 6 часов
0 */6 * * * root find /home/bitrix/www -name "*.php" -mmin -360 -type f -exec clamscan --quiet --infected --database=/var/lib/clamav/daily.cvd {} \; 2>&1 | grep FOUND >> /var/log/clamav-quick.log
EOF
📋 ШАГ 8: ФИНАЛЬНОЕ ТЕСТИРОВАНИЕ
# Тестовый скрипт
cat > /tmp/test-final.sh << 'EOF'
#!/bin/bash
echo "=== ФИНАЛЬНОЕ ТЕСТИРОВАНИЕ CLAMAV ==="
echo
echo "1. Проверка swap:"
free -h | grep -E "^Mem|^Swap"
echo
echo "2. Версия ClamAV:"
clamscan --version
echo
echo "3. Базы данных:"
ls -lh /var/lib/clamav/*.cvd
echo
echo "4. Тест детекции:"
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt
clamscan --database=/var/lib/clamav/daily.cvd --no-summary /tmp/eicar.txt | grep -E "FOUND|OK"
rm -f /tmp/eicar.txt
echo
echo "5. Доступные команды:"
echo " clamctl scan - сканировать"
echo " clamctl test - тестировать"
echo " clamctl update - обновить базы"
echo " clamctl status - статус"
echo
echo "=== УСТАНОВКА ЗАВЕРШЕНА ==="
EOF
chmod +x /tmp/test-final.sh
/tmp/test-final.sh
✅ ВАЖНЫЕ ЗАМЕЧАНИЯ:
echo "================================================"
echo "⚠️ ВАЖНО ДЛЯ ВАШЕЙ СИСТЕМЫ:"
echo "================================================"
echo
echo "1. У вас мало RAM (1.9GB), поэтому:"
echo " • Обязательно используйте swap (мы добавили 2GB)"
echo " • Используйте clamscan-low-mem для сканирования"
echo " • НЕ запускайте clamd демон (потребляет много памяти)"
echo
echo "2. Используется российское зеркало clamav-mirror.ru"
echo " чтобы избежать rate limit от официальных серверов"
echo
echo "3. Команды для работы:"
echo " clamctl scan - сканировать сайт"
echo " clamctl update - обновить базы"
echo " clamctl status - проверить статус"
echo
echo "4. Автоматическое сканирование настроено на 3:00"
echo
echo "================================================"
СНАЧАЛА выполните ШАГ 1 (создание swap) - это КРИТИЧЕСКИ ВАЖНО! Затем продолжайте установку.
⚠️ ПРОБЛЕМА: EICAR НЕ ОПРЕДЕЛЯЕТСЯ КАК ВИРУС!
🔴 Тест показал /tmp/eicar.txt: OK вместо FOUND - это означает что вирус не обнаружен!
📋 ШАГ 1: ДИАГНОСТИКА ПРОБЛЕМЫ
# Проверяем полное сканирование со всеми базами
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt
# Тест с разными базами
echo "=== Тест с daily.cvd ==="
clamscan --database=/var/lib/clamav/daily.cvd /tmp/eicar.txt
echo
echo "=== Тест с main.cvd ==="
clamscan --database=/var/lib/clamav/main.cvd /tmp/eicar.txt
echo
echo "=== Тест со всеми базами ==="
clamscan /tmp/eicar.txt
rm -f /tmp/eicar.txt
📋 ШАГ 2: ОБНОВЛЯЕМ БАЗЫ ДАННЫХ
main.cvd от 2021 года - ОЧЕНЬ УСТАРЕЛ!
# Обновляем main.cvd с российского зеркала
cd /var/lib/clamav
# Удаляем старую версию
rm -f main.cvd
# Загружаем актуальную версию
echo "Загружаем актуальную main.cvd..."
wget --progress=bar:force -O main.cvd http://clamav-mirror.ru/main.cvd
# Проверяем размер (должен быть около 160-170MB)
ls -lh main.cvd
# Проверяем версию
sigtool --info main.cvd | grep -E "Version:|Build time:"
# Устанавливаем права
chown clamupdate:clamupdate main.cvd
cd -
📋 ШАГ 3: ОБНОВЛЯЕМ daily.cvd
# Обновляем daily базу
cd /var/lib/clamav
echo "Обновляем daily.cvd..."
wget --progress=bar:force -O daily.cvd.new http://clamav-mirror.ru/daily.cvd
# Проверяем что скачалось
if [ -s daily.cvd.new ]; then
mv daily.cvd.new daily.cvd
chown clamupdate:clamupdate daily.cvd
echo "✓ daily.cvd обновлен"
else
rm -f daily.cvd.new
echo "✗ Ошибка обновления daily.cvd"
fi
cd -
📋 ШАГ 4: ПРОВЕРЯЕМ ЦЕЛОСТНОСТЬ БАЗ
# Проверяем целостность всех баз
echo "=== Проверка целостности баз данных ==="
for db in /var/lib/clamav/*.cvd; do
echo "Проверяем $(basename $db)..."
sigtool --info $db | head -5
echo
done
📋 ШАГ 5: ПОВТОРНЫЙ ТЕСТ ДЕТЕКЦИИ
cat > /tmp/test-detection.sh << 'EOF'
#!/bin/bash
echo "=== ТЕСТ ДЕТЕКЦИИ ВИРУСОВ ==="
echo
# Создаем тестовые файлы
mkdir -p /tmp/clamtest
cd /tmp/clamtest
# EICAR тест
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.com
# Альтернативный EICAR
printf 'X5O!P%%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar2.txt
# Еще один вариант без экранирования
cat << 'EICAR' > eicar3.txt
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
EICAR
echo "Созданные файлы:"
ls -la
echo
echo "=== Сканирование ==="
clamscan --infected .
echo
echo "=== Результаты ==="
clamscan --no-summary * | grep -E "FOUND|OK"
# Очистка
cd /
rm -rf /tmp/clamtest
echo
echo "=== ТЕСТ ЗАВЕРШЕН ==="
EOF
chmod +x /tmp/test-detection.sh
/tmp/test-detection.sh
📋 ШАГ 6: АЛЬТЕРНАТИВНЫЙ МЕТОД ОБНОВЛЕНИЯ
Если базы все еще не работают, используем freshclam:
# Пробуем обновить через freshclam
freshclam --verbose --stdout
# Если rate limited, обходим через конфиг
cat > /tmp/freshclam-fix.conf << 'EOF'
DatabaseDirectory /var/lib/clamav
DatabaseOwner clamupdate
DatabaseMirror clamav-mirror.ru
DNSDatabaseInfo no
Checks 1
EOF
# Обновляем с временным конфигом
freshclam --config-file=/tmp/freshclam-fix.conf --verbose
📋 ШАГ 7: СОЗДАЕМ РАБОЧИЙ ТЕСТЕР
cat > /usr/local/bin/clamav-test << 'EOF'
#!/bin/bash
echo "=== ClamAV Detection Test ==="
echo
# Версия и базы
echo "Version: $(clamscan --version)"
echo
echo "Databases:"
for db in /var/lib/clamav/*.{cvd,cld} 2>/dev/null; do
if [ -f "$db" ]; then
version=$(sigtool --info "$db" 2>/dev/null | grep "Version:" | awk '{print $2}')
sigs=$(sigtool --info "$db" 2>/dev/null | grep "Signatures:" | awk '{print $2}')
size=$(ls -lh "$db" | awk '{print $5}')
printf " %-15s v%-7s %7s %10s signatures\n" "$(basename $db):" "$version" "($size)" "$sigs"
fi
done
echo
echo "Memory status:"
free -h | grep -E "^Mem|^Swap"
echo
echo "Testing EICAR detection:"
# Создаем правильный EICAR
EICAR='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
echo "$EICAR" > /tmp/test-virus.txt
# Сканируем
echo -n "Result: "
if clamscan --no-summary /tmp/test-virus.txt 2>/dev/null | grep -q "FOUND"; then
echo "✅ EICAR detected! ClamAV works correctly."
else
echo "❌ EICAR not detected! Check your virus databases."
echo
echo "Trying to scan with verbose output:"
clamscan -v /tmp/test-virus.txt 2>&1 | grep -E "FOUND|OK|Loading"
fi
rm -f /tmp/test-virus.txt
echo
echo "=== Test completed ==="
EOF
chmod +x /usr/local/bin/clamav-test
# Запускаем тест
/usr/local/bin/clamav-test
📋 ШАГ 8: ЕСЛИ ВСЕ ЕЩЕ НЕ РАБОТАЕТ
# Полная переустановка баз
echo "=== ПОЛНАЯ ПЕРЕУСТАНОВКА БАЗ ДАННЫХ ==="
# Останавливаем все процессы
pkill -f clam
# Очищаем старые базы
rm -rf /var/lib/clamav/*
# Скачиваем заново ВСЕ базы
cd /var/lib/clamav
for database in main.cvd daily.cvd bytecode.cvd; do
echo "Downloading $database..."
curl -L -o $database http://database.clamav.net/$database || \
wget -O $database http://clamav-mirror.ru/$database || \
wget -O $database http://db.local.clamav.net/$database
if [ -f $database ]; then
chown clamupdate:clamupdate $database
echo "✓ $database downloaded"
fi
done
# Проверяем
ls -lh *.cvd
cd -
# Финальный тест
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/final-test.txt
clamscan -v /tmp/final-test.txt
rm -f /tmp/final-test.txt
Выполните шаги 1-2 для обновления баз и покажите результат теста детекции!
🎉 ОТЛИЧНО! CLAMAV РАБОТАЕТ ПРАВИЛЬНО!
✅ УСПЕШНАЯ ДЕТЕКЦИЯ:
-
✓ Все 3 тестовых файла обнаружены как вирусы
-
✓ База содержит 8,708,210 сигнатур
-
✓ EICAR-Signature FOUND - правильная детекция
📋 ТЕПЕРЬ ПРОТЕСТИРУЕМ РЕАЛЬНОЕ СКАНИРОВАНИЕ
1. Быстрый тест производительности:
# Тестируем скорость и потребление памяти
echo "=== ТЕСТ ПРОИЗВОДИТЕЛЬНОСТИ ==="
echo "Память ДО сканирования:"
free -h | grep -E "^Mem|^Swap"
echo
echo "Сканируем небольшую директорию..."
time clamscan --infected --recursive --suppress-ok-results /etc 2>/dev/null
echo
echo "Память ПОСЛЕ сканирования:"
free -h | grep -E "^Mem|^Swap"
2. Проверяем работу наших скриптов:
# Тестируем clamctl
echo "=== ТЕСТ УПРАВЛЯЮЩЕГО СКРИПТА ==="
clamctl status
echo
echo "=== ТЕСТ СКАНИРОВАНИЯ ==="
# Создаем тестовую директорию
mkdir -p /tmp/scan-test
echo "clean file" > /tmp/scan-test/clean.txt
echo '<?php echo "test"; ?>' > /tmp/scan-test/test.php
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/scan-test/virus.txt
# Сканируем
clamctl scan /tmp/scan-test
# Очищаем
rm -rf /tmp/scan-test
📋 НАСТРОЙКА МОНИТОРИНГА ДЛЯ БИТРИКС
1. Создаем специальный сканер для Битрикс:
cat > /usr/local/bin/bitrix-scan << 'EOF'
#!/bin/bash
# ClamAV сканер для Битрикс
BITRIX_ROOT="/home/bitrix/www"
LOG_DIR="/var/log/clamav"
LOG_FILE="$LOG_DIR/bitrix-scan-$(date +%Y%m%d-%H%M).log"
QUARANTINE="/var/quarantine/clamav"
# Создаем необходимые директории
mkdir -p "$LOG_DIR" "$QUARANTINE"
echo "========================================" | tee $LOG_FILE
echo " Bitrix Security Scan" | tee -a $LOG_FILE
echo " Started: $(date)" | tee -a $LOG_FILE
echo "========================================" | tee -a $LOG_FILE
# Проверяем критические директории Битрикса
CRITICAL_DIRS=(
"$BITRIX_ROOT/bitrix/admin"
"$BITRIX_ROOT/bitrix/modules"
"$BITRIX_ROOT/bitrix/php_interface"
"$BITRIX_ROOT/local"
)
echo | tee -a $LOG_FILE
echo "Scanning critical Bitrix directories..." | tee -a $LOG_FILE
for dir in "${CRITICAL_DIRS[@]}"; do
if [ -d "$dir" ]; then
echo "Scanning: $dir" | tee -a $LOG_FILE
clamscan \
--infected \
--recursive \
--suppress-ok-results \
--max-filesize=10M \
--max-scansize=50M \
--exclude-dir="cache" \
--exclude-dir="managed_cache" \
--exclude-dir="stack_cache" \
--exclude="\.log$" \
--move="$QUARANTINE" \
"$dir" 2>&1 | tee -a $LOG_FILE
fi
done
# Проверяем новые и измененные PHP файлы
echo | tee -a $LOG_FILE
echo "Checking recently modified PHP files..." | tee -a $LOG_FILE
find "$BITRIX_ROOT" -name "*.php" -mtime -7 -type f 2>/dev/null | head -100 | while read file; do
clamscan --infected --suppress-ok-results "$file" 2>/dev/null | grep FOUND | tee -a $LOG_FILE
done
# Проверяем подозрительные паттерны в PHP файлах
echo | tee -a $LOG_FILE
echo "Checking for suspicious PHP patterns..." | tee -a $LOG_FILE
SUSP_COUNT=$(grep -r --include="*.php" -E "eval\(.*base64_decode|system\(.*\$_REQUEST|shell_exec\(.*\$_POST" "$BITRIX_ROOT" 2>/dev/null | grep -v "/bitrix/modules/" | wc -l)
if [ "$SUSP_COUNT" -gt 0 ]; then
echo "⚠️ Found $SUSP_COUNT files with suspicious PHP code" | tee -a $LOG_FILE
grep -r --include="*.php" -l -E "eval\(.*base64_decode|system\(.*\$_REQUEST|shell_exec\(.*\$_POST" "$BITRIX_ROOT" 2>/dev/null | grep -v "/bitrix/modules/" | head -10 | tee -a $LOG_FILE
fi
# Результаты
echo | tee -a $LOG_FILE
echo "========================================" | tee -a $LOG_FILE
INFECTED=$(grep -c "FOUND" $LOG_FILE 2>/dev/null || echo "0")
QUARANTINED=$(ls -1 $QUARANTINE 2>/dev/null | wc -l)
if [ "$INFECTED" -gt 0 ]; then
echo "⚠️ THREATS DETECTED: $INFECTED" | tee -a $LOG_FILE
echo "Files moved to quarantine: $QUARANTINED" | tee -a $LOG_FILE
echo "Quarantine location: $QUARANTINE" | tee -a $LOG_FILE
# Отправка в Telegram если настроено
if [ -f /etc/telegram-bot.conf ]; then
source /etc/telegram-bot.conf
MESSAGE="🚨 Bitrix Security Alert on $(hostname)%0A%0AInfected files: $INFECTED%0AQuarantined: $QUARANTINED%0ACheck: $LOG_FILE"
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
-d "chat_id=${CHAT_ID}" -d "text=$MESSAGE" > /dev/null 2>&1
fi
else
echo "✅ No threats detected" | tee -a $LOG_FILE
fi
echo "Scan completed: $(date)" | tee -a $LOG_FILE
echo "Log saved to: $LOG_FILE" | tee -a $LOG_FILE
echo "========================================" | tee -a $LOG_FILE
EOF
chmod +x /usr/local/bin/bitrix-scan
2. Создаем скрипт восстановления из карантина:
cat > /usr/local/bin/clamav-quarantine << 'EOF'
#!/bin/bash
QUARANTINE="/var/quarantine/clamav"
case "$1" in
list)
echo "=== Files in quarantine ==="
if [ -d "$QUARANTINE" ]; then
ls -la "$QUARANTINE" 2>/dev/null || echo "Quarantine is empty"
else
echo "Quarantine directory not found"
fi
;;
restore)
if [ -z "$2" ]; then
echo "Usage: $0 restore <filename>"
exit 1
fi
FILE="$2"
if [ -f "$QUARANTINE/$FILE" ]; then
echo "Restoring $FILE..."
ORIG_PATH=$(grep -l "$FILE" /var/log/clamav/*.log | tail -1 | xargs grep "$FILE" | grep "FOUND" | cut -d: -f1)
if [ ! -z "$ORIG_PATH" ]; then
mv "$QUARANTINE/$FILE" "$ORIG_PATH"
echo "✓ Restored to: $ORIG_PATH"
else
echo "Original path not found. File remains in: $QUARANTINE/$FILE"
fi
else
echo "File not found in quarantine: $FILE"
fi
;;
clean)
echo "Cleaning quarantine older than 30 days..."
find "$QUARANTINE" -type f -mtime +30 -delete
echo "✓ Done"
;;
*)
echo "Usage: $0 {list|restore <file>|clean}"
echo
echo " list - Show quarantined files"
echo " restore <file> - Restore file from quarantine"
echo " clean - Remove files older than 30 days"
;;
esac
EOF
chmod +x /usr/local/bin/clamav-quarantine
📋 НАСТРОЙКА РЕГУЛЯРНОГО СКАНИРОВАНИЯ
# Обновляем cron задания для Битрикс
cat > /etc/cron.d/bitrix-security << 'EOF'
# Битрикс безопасность с ClamAV
# Ежедневное сканирование Битрикс в 3:00
0 3 * * * root /usr/local/bin/bitrix-scan >/dev/null 2>&1
# Быстрая проверка новых файлов каждые 4 часа
0 */4 * * * root find /home/bitrix/www -name "*.php" -mmin -240 -type f -exec clamscan --quiet --infected {} \; 2>&1 | grep FOUND >> /var/log/clamav/quick-scan.log
# Еженедельная полная проверка в воскресенье в 2:00
0 2 * * 0 root clamscan -r --infected --log=/var/log/clamav/weekly-full.log /home/bitrix/www >/dev/null 2>&1
# Обновление баз ClamAV раз в день в 1:00
0 1 * * * root freshclam --quiet || wget -q -O /var/lib/clamav/daily.cvd http://clamav-mirror.ru/daily.cvd
EOF
📋 СОЗДАНИЕ ИТОГОВОЙ ПАНЕЛИ УПРАВЛЕНИЯ
cat > /usr/local/bin/security-panel << 'EOF'
#!/bin/bash
clear
echo "╔══════════════════════════════════════════╗"
echo "║ BITRIX SECURITY PANEL v1.0 ║"
echo "╠══════════════════════════════════════════╣"
echo "║ ║"
echo "║ 1. Quick security scan (PHP files) ║"
echo "║ 2. Full Bitrix scan ║"
echo "║ 3. Check ClamAV status ║"
echo "║ 4. Update virus databases ║"
echo "║ 5. View infected files ║"
echo "║ 6. Quarantine management ║"
echo "║ 7. View recent logs ║"
echo "║ 8. Test virus detection ║"
echo "║ 9. System info ║"
echo "║ 0. Exit ║"
echo "║ ║"
echo "╚══════════════════════════════════════════╝"
echo
read -p "Select option: " choice
case $choice in
1)
echo "Starting quick scan..."
clamctl scan /home/bitrix/www
;;
2)
echo "Starting full Bitrix scan..."
/usr/local/bin/bitrix-scan
;;
3)
clamctl status
;;
4)
clamctl update
;;
5)
echo "=== Recently detected threats ==="
grep "FOUND" /var/log/clamav/*.log 2>/dev/null | tail -20
;;
6)
/usr/local/bin/clamav-quarantine list
;;
7)
ls -lt /var/log/clamav/*.log | head -10
read -p "Enter log file to view: " logfile
[ -f "$logfile" ] && less "$logfile"
;;
8)
clamctl test
;;
9)
echo "=== System Information ==="
free -h
df -h /
uptime
;;
0)
exit 0
;;
*)
echo "Invalid option"
;;
esac
echo
read -p "Press Enter to continue..."
exec $0
EOF
chmod +x /usr/local/bin/security-panel
✅ ФИНАЛЬНАЯ ПРОВЕРКА УСТАНОВКИ
echo "================================================"
echo " ✅ CLAMAV УСПЕШНО УСТАНОВЛЕН И РАБОТАЕТ!"
echo "================================================"
echo
echo "📊 СТАТУС:"
echo " • Версия: ClamAV 1.4.3"
echo " • Сигнатур: 8,708,210"
echo " • EICAR тест: ✅ PASSED"
echo " • Swap: 2GB добавлен"
echo
echo "🛠 ДОСТУПНЫЕ КОМАНДЫ:"
echo " security-panel - Панель управления"
echo " bitrix-scan - Сканировать Битрикс"
echo " clamctl status - Статус ClamAV"
echo " clamctl scan - Быстрое сканирование"
echo " clamctl update - Обновить базы"
echo
echo "📅 РАСПИСАНИЕ:"
echo " • Обновление баз: ежедневно в 01:00"
echo " • Сканирование Битрикс: ежедневно в 03:00"
echo " • Быстрая проверка: каждые 4 часа"
echo " • Полная проверка: воскресенье в 02:00"
echo
echo "📁 ВАЖНЫЕ ПУТИ:"
echo " • Логи: /var/log/clamav/"
echo " • Карантин: /var/quarantine/clamav/"
echo " • Базы: /var/lib/clamav/"
echo
echo "🚀 Запустите: security-panel"
echo "================================================"
Отлично! ClamAV полностью работает. Теперь можете запустить security-panel или bitrix-scan для проверки вашего сайта!