Безопасность сайтов на 1С-Битрикс: аудит, защита, мониторинг
Последний серьёзный массовый взлом Битриксов — лето 2022, уязвимость в модуле vote (BDU:2022-05127). Через неё заливали веб-шеллы пачками. Причина? Владельцы не обновляли ядро по полгода, а модуль голосований стоял «на всякий случай». С тех пор мало что изменилось в подходе: Битрикс выпускает патч, а его ставят через три месяца. Мы выстраиваем защиту так, чтобы между выходом патча и его применением проходили дни, а не месяцы. И чтобы даже без патча сайт не лёг от типовой атаки.
Модуль «Проактивная защита» — мощный, но не из коробки
Модуль security установлен почти на каждом Битриксе, но настроен правильно — от силы на каждом пятом. Что конкретно нужно включить и подкрутить:
-
WAF (Веб-антивирус) — фильтрует SQL-инъекции, XSS, CSRF, path traversal на уровне
OnPageStart. Ключевая настройка — режим «Активная реакция»: не просто логировать, а блокировать. В/bitrix/admin/security_filter.phpпроверяем, что все типы атак включены, а исключения — минимальны -
Контроль активности (
/bitrix/admin/security_iprule.php) — лимиты на количество запросов с одного IP. По умолчанию 100 запросов в минуту. Для API-эндпоинтов, куда стучат мобильные приложения, нужны исключения — иначе заблокируете своих же пользователей -
2FA — OTP через Google Authenticator. Включается в настройках пользователя. Для группы «Администраторы» делаем обязательным через
OnAfterUserAuthorize— без второго фактора в админку не пускаем -
Контроль целостности (
/bitrix/admin/security_file_verifier.php) — хэши системных файлов. Если кто-то изменил файл в/bitrix/modules/— система заметит. Запускаем проверку по cron ежедневно через агентCSecurityFileVerifier::Verify() -
Стоп-лист —
b_security_filter_stoplist. Автоматическая блокировка IP при срабатывании WAF. Ручное добавление подсетей — когда видим сканеры -
Журнал безопасности —
b_event_log. Кто, когда и что менял в админке. Хранение минимум 90 дней. При расследовании инцидента — бесценно
Аудит безопасности: что именно проверяем
Серверный уровень — тут чаще всего и дыры:
-
phpinfo()доступен по/info.phpили/phpinfo.php— встречается на каждом третьем проекте. Атакующий получает версию PHP, пути, модули, конфигурацию. Удаляем -
display_errors = Onна продакшне — стектрейсы с путями к файлам и именами таблиц улетают пользователю в браузер - PHP-функции
exec,system,passthru,proc_openне отключены вphp.ini. Если веб-шелл всё-таки зальют — с этими функциями он получит полный контроль над сервером - Версия PHP < 8.1 — без security-апдейтов. PHP 7.4 умер в ноябре 2022, но до сих пор живёт на четверти проектов
Уровень приложения:
- Устаревшие модули:
vote,forum,blog— часто стоят неиспользуемые, но с активными обработчиками. Деактивируем и удаляем - Кастомный код: grep по
$DB->Query(с конкатенацией$_REQUEST— классическая SQL-инъекция. Должны быть$DB->ForSql()или D7 ORM - Загрузка файлов: если
CFile::CheckFile()не вызывается или проверяет только расширение без MIME-типа — через форму обратной связи зальют.phpфайл -
dbconn.phpи.env— должны быть закрыты правилами веб-сервера. Проверяем:curl https://site.ru/bitrix/.settings.phpне должен отдавать ничего кроме 403
SSL/TLS:
- Проверка через SSL Labs — рейтинг A или выше
- HSTS с
max-ageот 31536000 (год) - Редирект HTTP -> HTTPS на уровне Nginx, не на уровне Битрикса
Результат аудита — отчёт с приоритетами: Critical / High / Medium / Low. Критические закрываем в первый день.
Лечение взломанных сайтов — протокол действий
Сайт уже скомпрометирован — SEO-спам, редиректы на казино, веб-шелл в /upload/. Порядок действий:
- Изоляция — снимаем сайт, ставим заглушку. Если вредонос шифрует файлы или распространяется — каждая минута на счету
-
Определение вектора — логи доступа (
access.log), логи ошибок,b_event_log. Ищем POST-запросы к нетипичным файлам, обращения к/upload/*.php, подозрительные user-agent -
Поиск вредоносного кода —
grep -r "eval(base64_decode" /home/bitrix/www/— классика. Также ищемassert(,preg_replaceс модификаторомe,${"_GET"}, обфусцированные переменные вида$GLOBALS['x46x65'] -
Проверка БД —
b_iblock_element_propertyиb_iblock_elementна инъектированные скрипты и скрытые ссылки.SELECT * FROM b_iblock_element WHERE DETAIL_TEXT LIKE '%<script%' AND DETAIL_TEXT NOT LIKE '%bitrix%' - Чистка или восстановление — если заражение масштабное, проще восстановить из чистого бэкапа и накатить только контентные изменения из БД
- Закрытие уязвимости — обновление ядра, удаление неиспользуемых модулей, правка кастомного кода
- Запрос пересканирования — Google Search Console → «Запросить проверку», Яндекс.Вебмастер → «Я всё исправил»
Защита от DDoS — уровень инфраструктуры
- Cloudflare / DDoS-Guard / Qrator — проксирование трафика. L3/L4 атаки фильтруются на их стороне. L7 — через правила и challenge-страницы. Важно: после подключения скрыть реальный IP сервера, иначе смысл теряется
-
Rate limiting на Nginx:
limit_req_zoneдля/bitrix/admin/,/api/, форм. Отдельные лимиты для авторизованных и анонимных пользователей -
CAPTCHA —
\Bitrix\Main\Captcha\CaptchaManagerдля форм Битрикса или reCAPTCHA v3 для кастомных. v3 не раздражает пользователей — работает в фоне - Bot management — пропускаем Googlebot, YandexBot (проверка через reverse DNS), блокируем сканеры и скрейперы по User-Agent и поведению
Резервное копирование — последний рубеж
- Ежедневные бэкапы: файлы через rsync + дамп PostgreSQL/MySQL через
pg_dump/mysqldump - Хранение в изолированном S3-совместимом хранилище. Ключевое слово — изолированном. Если бэкапы лежат на том же сервере, что и сайт, взломщик удалит и их
- Ротация: daily × 7, weekly × 4, monthly × 12
- Тестирование восстановления — раз в квартал разворачиваем бэкап на тестовом сервере. Бэкап, из которого невозможно восстановиться, — просто файл на диске
- Мониторинг: если бэкап не прошёл — алерт в Telegram в течение часа
Мониторинг — обнаружить до того, как позвонит клиент
- Uptime — проверка каждые 60 секунд через UptimeRobot / Zabbix / кастомный скрипт. Алерт в Telegram + звонок при даунтайме > 5 минут
-
Файловый мониторинг — inotify (Linux) или cron +
md5sumпо критичным директориям. Новый.phpв/upload/? Алерт немедленно - Сканирование на малварь — AI-BOLIT или ClamAV по расписанию. Проверка и файлов, и базы
- SSL-сертификат — предупреждение за 30/14/7 дней до истечения. Let's Encrypt обновляется автоматически через certbot, но certbot тоже может сломаться
- Блэклисты — проверка домена и IP в Google Safe Browsing, PhishTank, Spamhaus. Попадание = потеря трафика
152-ФЗ и персональные данные
- HTTPS everywhere — редирект на уровне Nginx
- Шифрование в БД: пароли через
\Bitrix\Main\Security\Password::hash()(bcrypt), токены — черезopenssl_encrypt - Политика конфиденциальности + cookie-баннер (модуль
mainподдерживает из коробки черезCOption::SetOptionString("main", "cookie_agreement", "Y")) - Журналирование доступа к ПД — кто и когда просматривал данные клиентов
Сроки
| Услуга | Сроки | Результат |
|---|---|---|
| Экспресс-аудит | 1-2 дня | Критические уязвимости + план |
| Полный аудит | 3-5 дней | Детальный отчёт, OWASP Top 10 |
| Устранение уязвимостей | 1-2 недели | Пропатченный проект |
| Лечение взлома | 1-3 дня | Чистый сайт + закрытый вектор |
| Мониторинг (абонент) | Непрерывно | Алерты + ежемесячный отчёт |
Работаем разово и на абоненте с фиксированным SLA. Для абонентских клиентов — выделенный инженер, который знает проект.
Чек-лист: 15 пунктов, которые проверяем на каждом проекте
- Ядро 1С-Битрикс и модули — актуальная версия, неиспользуемые модули удалены
- Модуль
securityактивен, WAF в режиме «Активная реакция» - 2FA включена для всех учёток с доступом к админке
-
/bitrix/admin/закрыт по IP или за дополнительной HTTP-авторизацией - Политика паролей: от 12 символов, mixed case, цифры, спецсимволы
- SSL/TLS: рейтинг A+ на SSL Labs, HSTS включён
- Служебные файлы (
dbconn.php,.settings.php,.env, бэкапы, логи) — 403 из браузера - Права: 644 файлы, 755 директории. Веб-сервер не owner системных файлов
- Security-заголовки:
Content-Security-Policy,X-Frame-Options: DENY,X-Content-Type-Options: nosniff,Strict-Transport-Security,Referrer-Policy - Контроль целостности файлов — ежедневная проверка через агент
- Бэкапы: ежедневные, изолированное хранение, проверка восстановимости
-
b_event_log— хранение от 90 дней, регулярный просмотр - PHP 8.1+,
display_errors = Off, опасные функции отключены - Мониторинг uptime + алерты при изменении файлов в
/upload/ - Reverse proxy или CDN с DDoS-защитой для высоконагруженных проектов







