Скрипт очистки Bitrix от вирусов
Сохраняем как bitrix_clean.sh
и запускаем:
#!/bin/bash
# Скрипт очистки Bitrix от вирусов и базовой защиты
# Запускать от root или через sudo
SITE_PATH="/var/www/bitrix" # путь к сайту
LOG_FILE="/root/bitrix_scan.log"
UPLOAD_DIR="$SITE_PATH/upload"
echo "=== Очистка и аудит Bitrix ==="
echo "Результаты сохраняются в $LOG_FILE"
echo "Дата запуска: $(date)" > $LOG_FILE
# --- 1. Поиск подозрительного кода ---
echo ">> Поиск подозрительного кода..." | tee -a $LOG_FILE
grep -R --include="*.php" "eval(" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "base64_decode" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "gzuncompress" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "preg_replace.*e" $SITE_PATH >> $LOG_FILE 2>/dev/null
# --- 2. Удаление PHP из upload ---
echo ">> Проверка папки upload..." | tee -a $LOG_FILE
find $UPLOAD_DIR -type f -name "*.php" -print -delete >> $LOG_FILE
# --- 3. Ограничение прав ---
echo ">> Выставляем права на файлы и папки..." | tee -a $LOG_FILE
find $SITE_PATH -type f -exec chmod 644 {} \;
find $SITE_PATH -type d -exec chmod 755 {} \;
# --- 4. Защита upload от выполнения PHP ---
HTACCESS_FILE="$UPLOAD_DIR/.htaccess"
if [ ! -f "$HTACCESS_FILE" ]; then
echo ">> Создаём .htaccess для защиты upload" | tee -a $LOG_FILE
cat <<EOF > $HTACCESS_FILE
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
EOF
else
echo ">> .htaccess в upload уже существует" | tee -a $LOG_FILE
fi
# --- 5. Проверка целостности ядра (BitrixVM) ---
if [ -x /opt/webdir/bin/bx-sites ]; then
echo ">> Запускаем встроенный аудит BitrixVM..." | tee -a $LOG_FILE
/opt/webdir/bin/bx-sites audit default >> $LOG_FILE
fi
echo "=== Завершено. Проверяйте $LOG_FILE ==="
Как запустить
-
Сохранить скрипт:
nano /root/bitrix_clean.sh
вставить код и сохранить.
-
Сделать исполняемым:
chmod +x /root/bitrix_clean.sh
-
Запустить:
/root/bitrix_clean.sh
-
Результаты будут в:
/root/bitrix_scan.log
Этот скрипт не удаляет ядро, а только ищет подозрительный код, убирает PHP из /upload/
, настраивает права и защиту.
Если будут найдены заражённые системные файлы, их лучше заменить из дистрибутива Битрикс.
Bash-скрипт очистки Bitrix + сравнение ядра
#!/bin/bash
# Скрипт очистки и проверки Bitrix на вирусы
# Запускать от root или через sudo
SITE_PATH="/var/www/bitrix" # путь к сайту
LOG_FILE="/root/bitrix_scan.log"
UPLOAD_DIR="$SITE_PATH/upload"
CLEAN_CORE="/root/bitrix_clean_core"
echo "=== Очистка и аудит Bitrix ==="
echo "Результаты сохраняются в $LOG_FILE"
echo "Дата запуска: $(date)" > $LOG_FILE
# --- 1. Поиск подозрительного кода ---
echo ">> Поиск подозрительного кода..." | tee -a $LOG_FILE
grep -R --include="*.php" "eval(" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "base64_decode" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "gzuncompress" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "preg_replace.*e" $SITE_PATH >> $LOG_FILE 2>/dev/null
# --- 2. Удаление PHP из upload ---
echo ">> Проверка папки upload..." | tee -a $LOG_FILE
find $UPLOAD_DIR -type f -name "*.php" -print -delete >> $LOG_FILE
# --- 3. Ограничение прав ---
echo ">> Выставляем права на файлы и папки..." | tee -a $LOG_FILE
find $SITE_PATH -type f -exec chmod 644 {} \;
find $SITE_PATH -type d -exec chmod 755 {} \;
# --- 4. Защита upload от выполнения PHP ---
HTACCESS_FILE="$UPLOAD_DIR/.htaccess"
if [ ! -f "$HTACCESS_FILE" ]; then
echo ">> Создаём .htaccess для защиты upload" | tee -a $LOG_FILE
cat <<EOF > $HTACCESS_FILE
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
EOF
else
echo ">> .htaccess в upload уже существует" | tee -a $LOG_FILE
fi
# --- 5. Скачивание оригинального ядра Bitrix ---
if [ ! -d "$CLEAN_CORE" ]; then
echo ">> Скачиваем чистое ядро Bitrix..." | tee -a $LOG_FILE
mkdir -p $CLEAN_CORE
cd $CLEAN_CORE
wget -q https://www.1c-bitrix.ru/download/cms.php -O bitrix.zip
unzip -oq bitrix.zip
echo ">> Чистое ядро скачано в $CLEAN_CORE" | tee -a $LOG_FILE
else
echo ">> Чистое ядро уже скачано в $CLEAN_CORE" | tee -a $LOG_FILE
fi
# --- 6. Сравнение ядра ---
echo ">> Сравниваем ядро сайта с оригиналом..." | tee -a $LOG_FILE
for DIR in modules admin js tools; do
if [ -d "$SITE_PATH/bitrix/$DIR" ]; then
echo ">>> Проверка $DIR" | tee -a $LOG_FILE
diff -r $SITE_PATH/bitrix/$DIR $CLEAN_CORE/bitrix/$DIR >> $LOG_FILE
fi
done
# --- 7. Проверка целостности ядра (BitrixVM) ---
if [ -x /opt/webdir/bin/bx-sites ]; then
echo ">> Запускаем встроенный аудит BitrixVM..." | tee -a $LOG_FILE
/opt/webdir/bin/bx-sites audit default >> $LOG_FILE
fi
echo "=== Завершено. Проверяйте $LOG_FILE ==="
Как работает
-
Сканирует сайт на подозрительные функции (
eval
,base64_decode
,gzuncompress
,preg_replace /e
). -
Удаляет PHP-файлы в
/upload/
. -
Ставит права 644/755.
-
Создаёт .htaccess в
/upload/
(чтобы запретить PHP). -
Скачивает оригинальное ядро Bitrix в
/root/bitrix_clean_core
. -
Сравнивает файлы ядра сайта с оригиналом и пишет различия в лог.
-
Если сервер — BitrixVM → запускает встроенный аудит
/opt/webdir/bin/bx-sites audit
.
Где искать результаты
-
Лог:
/root/bitrix_scan.log
Там будут:-
найденные подозрительные функции
-
список удалённых
.php
из/upload/
-
различия между вашим ядром и оригиналом
-
! Важно: скрипт только сравнивает и логирует.
Замену файлов лучше делать вручную (чтобы не снести кастомные модули).
Делаем автоматическую версию, которая не только ищет отличия, но и подменяет изменённые или заражённые файлы ядра Bitrix на оригинальные из дистрибутива.
Bash-скрипт очистки Bitrix (с автоматическим восстановлением ядра)
#!/bin/bash
# Скрипт очистки и восстановления ядра Bitrix
# Запускать от root или sudo
SITE_PATH="/var/www/bitrix" # путь к сайту
LOG_FILE="/root/bitrix_restore.log"
UPLOAD_DIR="$SITE_PATH/upload"
CLEAN_CORE="/root/bitrix_clean_core"
echo "=== Очистка и восстановление Bitrix ==="
echo "Результаты сохраняются в $LOG_FILE"
echo "Дата запуска: $(date)" > $LOG_FILE
# --- 1. Поиск подозрительного кода ---
echo ">> Поиск подозрительного кода..." | tee -a $LOG_FILE
grep -R --include="*.php" "eval(" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "base64_decode" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "gzuncompress" $SITE_PATH >> $LOG_FILE 2>/dev/null
grep -R --include="*.php" "preg_replace.*e" $SITE_PATH >> $LOG_FILE 2>/dev/null
# --- 2. Удаление PHP из upload ---
echo ">> Проверка папки upload..." | tee -a $LOG_FILE
find $UPLOAD_DIR -type f -name "*.php" -print -delete >> $LOG_FILE
# --- 3. Ограничение прав ---
echo ">> Выставляем права на файлы и папки..." | tee -a $LOG_FILE
find $SITE_PATH -type f -exec chmod 644 {} \;
find $SITE_PATH -type d -exec chmod 755 {} \;
# --- 4. Защита upload от выполнения PHP ---
HTACCESS_FILE="$UPLOAD_DIR/.htaccess"
if [ ! -f "$HTACCESS_FILE" ]; then
echo ">> Создаём .htaccess для защиты upload" | tee -a $LOG_FILE
cat <<EOF > $HTACCESS_FILE
<FilesMatch "\.php$">
Deny from all
</FilesMatch>
EOF
else
echo ">> .htaccess в upload уже существует" | tee -a $LOG_FILE
fi
# --- 5. Скачивание оригинального ядра Bitrix ---
if [ ! -d "$CLEAN_CORE" ]; then
echo ">> Скачиваем чистое ядро Bitrix..." | tee -a $LOG_FILE
mkdir -p $CLEAN_CORE
cd $CLEAN_CORE
wget -q https://www.1c-bitrix.ru/download/cms.php -O bitrix.zip
unzip -oq bitrix.zip
echo ">> Чистое ядро скачано в $CLEAN_CORE" | tee -a $LOG_FILE
else
echo ">> Чистое ядро уже скачано в $CLEAN_CORE" | tee -a $LOG_FILE
fi
# --- 6. Восстановление ядра ---
echo ">> Восстанавливаем системные папки ядра..." | tee -a $LOG_FILE
for DIR in modules admin js tools; do
if [ -d "$SITE_PATH/bitrix/$DIR" ]; then
echo ">>> Обновление $DIR" | tee -a $LOG_FILE
rsync -av --delete $CLEAN_CORE/bitrix/$DIR/ $SITE_PATH/bitrix/$DIR/ >> $LOG_FILE
fi
done
# --- 7. Проверка целостности ядра (BitrixVM) ---
if [ -x /opt/webdir/bin/bx-sites ]; then
echo ">> Запускаем встроенный аудит BitrixVM..." | tee -a $LOG_FILE
/opt/webdir/bin/bx-sites audit default >> $LOG_FILE
fi
echo "=== Завершено. Проверяйте $LOG_FILE ==="
Как работает
-
Ищет подозрительный код.
-
Удаляет все
.php
в/upload/
. -
Ставит права
644/755
. -
Создаёт
.htaccess
в/upload/
. -
Скачивает чистое ядро Bitrix (если не скачано).
-
Автоматически восстанавливает папки ядра:
-
/bitrix/modules/
-
/bitrix/admin/
-
/bitrix/js/
-
/bitrix/tools/
(черезrsync
с--delete
, т.е. удаляются заражённые и лишние файлы).
-
-
Если сервер BitrixVM — запускает
bx-sites audit
.
Важные моменты
-
Все кастомные модули и доработки в
local/
иbitrix/templates/
сохраняются (скрипт их не трогает). -
Если кто-то правил системные файлы в ядре (что плохо) — изменения потеряются.
-
Перед запуском обязательно сделайте резервную копию БД и файлов.
Правильный ход — всегда иметь откат.
Сделаем скрипт, который будет перед заменой ядра создавать резервную копию системных директорий и позволять восстановить их назад.
Скрипт резервного копирования и отката Bitrix
#!/bin/bash # Скрипт для создания бэкапа ядра Bitrix и отката изменений # Запускать от root или sudo SITE_PATH="/var/www/bitrix" BACKUP_DIR="/root/bitrix_backup" DATE=$(date +%Y%m%d_%H%M%S) # --- Создание бэкапа --- backup_core() { echo ">> Создаём бэкап ядра в $BACKUP_DIR/$DATE" mkdir -p $BACKUP_DIR/$DATE for DIR in modules admin js tools; do if [ -d "$SITE_PATH/bitrix/$DIR" ]; then tar -czf $BACKUP_DIR/$DATE/${DIR}.tar.gz -C $SITE_PATH/bitrix $DIR echo ">>> Сохранено: $DIR" fi done echo ">> Бэкап готов: $BACKUP_DIR/$DATE" } # --- Восстановление ядра из бэкапа --- restore_core() { if [ -z "$1" ]; then echo "Использование: $0 restore <папка_с_датой>" echo "Пример: $0 restore 20250825_223000" exit 1 fi RESTORE_PATH="$BACKUP_DIR/$1" if [ ! -d "$RESTORE_PATH" ]; then echo "❌ Нет такого бэкапа: $RESTORE_PATH" exit 1 fi echo ">> Восстанавливаем ядро из $RESTORE_PATH" for FILE in $RESTORE_PATH/*.tar.gz; do DIR=$(basename $FILE .tar.gz) echo ">>> Восстановление $DIR" tar -xzf $FILE -C $SITE_PATH/bitrix done echo ">> Восстановление завершено" } case $1 in backup) backup_core ;; restore) restore_core $2 ;; *) echo "Использование: $0 {backup|restore <папка_с_датой>}" exit 1 ;; esac
Использование
Сделать бэкап ядра
/root/bitrix_rollback.sh backup
создаст архивы (modules.tar.gz
, admin.tar.gz
, js.tar.gz
, tools.tar.gz
) в /root/bitrix_backup/20250825_230000/
Восстановить ядро из бэкапа
/root/bitrix_rollback.sh restore 20250825_230000
вернёт файлы ядра в состояние на момент бэкапа.
Рекомендации
-
Перед запуском авто-скрипта восстановления ядра — всегда делать
backup
. -
Бэкапы хранятся в
/root/bitrix_backup/
— можно удалять старые руками. -
Скрипт не трогает
local/
,upload/
,templates/
.