Сайты малого и среднего бизнеса взламывают редко целенаправленно. В основном это автоматика: боты перебирают известные дыры в популярных плагинах и слабые пароли. Защита от массовых атак стоит недорого и закрывает подавляющую часть рисков.
Откуда приходят проблемы на практике
За последние два года мы разбирали одиннадцать заражённых сайтов клиентов, которые пришли к нам на поддержку. Причины распределились так:
- Устаревший плагин с известной уязвимостью — 6 случаев
- Слабый или утёкший пароль администратора — 3 случая
- Заражённая тема из бесплатного каталога — 1 случай
- Дыра в собственном коде — 1 случай
Девять из одиннадцати — обновления и пароли. Не архитектура, не хитрые атаки.
Восемь мер, которые ставим всем
1. Обновления по расписанию
Ядро и плагины обновляются раз в две недели на копии сайта, потом на боевом. Автообновления безопасности включены всегда — они не ломают совместимость.
2. Двухфакторная аутентификация для админов
Закрывает три случая из одиннадцати полностью. Приложение-аутентификатор бесплатно и настраивается за пять минут.
3. Ограничение попыток входа
После пяти неудач адрес блокируется на час. Перебор паролей становится бессмысленным.
4. Запрет выполнения PHP в загрузках
Самый частый способ закрепиться после взлома — залить скрипт через форму загрузки. Одна директива на уровне сервера убирает эту возможность.
# nginx: в каталоге загрузок PHP не выполняется
location ~* /wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
5. Отключение редактирования файлов из админки
Встроенный редактор темы — готовый инструмент для того, кто получил доступ. Отключается одной константой.
// wp-config.php
define( 'DISALLOW_FILE_EDIT', true );
6. Резервные копии в другом месте
Копия на том же сервере бесполезна: шифровальщик заберёт и её. Мы храним ежедневные копии семь дней в отдельном хранилище и раз в квартал проверяем, что они разворачиваются.
7. HTTPS и заголовки безопасности
Сертификат обязателен, плюс несколько заголовков, которые закрывают целые классы атак.
add_header Strict-Transport-Security "max-age=31536000" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
8. Минимум прав у пользователей
Контент-менеджеру не нужны права администратора. Роль «Редактор» позволяет вести сайт и не позволяет установить плагин.
Что не обязательно малому бизнесу
Дорогой WAF, платный сканер уязвимостей и ежегодный пентест. Для сайта услуг на 20 страниц это трата, которая не окупается: базовые меры закрывают те же векторы за небольшую часть стоимости.
Что делать, если уже взломали
- Снять сайт с публики — заглушка лучше, чем раздача вредоносного кода посетителям.
- Сменить все пароли: админки, базы, FTP, хостинга. Именно все.
- Развернуть чистую копию до даты заражения, а не чистить заражённые файлы.
- Обновить всё и только потом возвращать сайт в работу.
- Проверить, не осталось ли лишних учётных записей администратора.
Откуда на самом деле приходят взломы
Целенаправленные атаки на небольшой сайт — редкость. Подавляющее большинство взломов массовые: робот обходит адреса, проверяет известные уязвимости в популярных плагинах и подбирает пароли. Ему всё равно, чей это сайт, — интересна только возможность.
Отсюда практический вывод: защищаться нужно не от искусного взломщика, а от конвейера. А конвейер останавливается простыми вещами — обновлениями, нормальными паролями и вторым фактором. Сложные меры вроде фильтрации трафика нужны редко и не заменяют базовых.
Второй по частоте источник — не сайт, а компьютер владельца. Пароль от админки, сохранённый в браузере на заражённой машине, отменяет любые серверные меры. Поэтому двухфакторная аутентификация важнее большинства настроек: украденного пароля для входа уже не хватит.
Что даёт мало и стоит дорого
Смена адреса админки и скрытие версии движка отпугивают самые примитивные сканеры и создают ощущение защищённости. Реальная польза мала: серьёзный робот определяет и то, и другое за один запрос. Это не вредно, но не заменяет обновлений.
Плагины «всё в одном» с десятком галочек часто больше мешают, чем помогают: ложные срабатывания блокируют редакторов, а нагрузка растёт заметно. Мы предпочитаем несколько точечных мер, каждую из которых можно объяснить.
- Резервная копия, которую ни разу не восстанавливали, — это не резервная копия
- Права на файлы важнее модных настроек: запись в каталог с кодом должна быть закрыта
- Журнал входов в админку показывает попытку подбора раньше, чем она удастся
Частые вопросы
Как часто ставить обновления?
Обновления безопасности — в течение суток после выхода, остальные — раз в месяц пакетом, с проверкой на тестовой копии. Автоматическое обновление всего подряд на боевом сайте однажды сломает вам витрину в пятницу вечером.
Нужен ли платный сертификат?
Для подавляющего большинства сайтов — нет. Бесплатный сертификат шифрует трафик ровно так же. Платные отличаются гарантиями и проверкой организации, что имеет смысл банкам и крупным магазинам, а не сайту услуг.
Чистка заражённых файлов вручную почти всегда оставляет что-то незамеченным. Восстановление из копии быстрее и надёжнее — при условии, что копии есть.