Документация Bearmor Security
Полное руководство по Bearmor Security 2.0: установка, все функции, все настройки и решение типичных проблем. Bearmor Security бесплатен, все функции включены.
Начало работы
Bearmor Security - бесплатный плагин безопасности WordPress для сайтов малого бизнеса и магазинов WooCommerce. В нём есть файрвол, защита входа, двухфакторная аутентификация, сканер вредоносного кода, контроль целостности файлов, оповещения об уязвимостях, 30 правил усиления защиты, журнал действий и понятная AI-сводка по безопасности. Платных тарифов нет и ничего не нужно разблокировать: всё описанное на этой странице работает сразу после активации.
Требования
- WordPress 5.8 или новее (проверено до версии 7.1)
- PHP 7.4 или новее
- Пользователь базы данных с правом создавать таблицы (обычное дело на любом хостинге)
- Права на запись в
wp-content/uploadsдля карантина, а также вwp-config.phpи.htaccess, если вы хотите использовать правила, которые их меняют - Исходящие HTTPS-соединения с сервера, чтобы плагин мог обращаться к WordPress.org, WPVulnerability.net и bearmor.eu
Установка
- В wp-admin откройте Plugins → Add New.
- Найдите Bearmor Security, нажмите Install Now, затем Activate.
- В боковом меню появится Bearmor Security. Откройте его, чтобы увидеть панель.
- Ручная установка: скачайте ZIP с WordPress.org и используйте Plugins → Add New → Upload Plugin или распакуйте архив по SFTP в
wp-content/plugins/и активируйте.
Что происходит сразу после активации
- Сайт регистрируется на bearmor.eu и получает собственный ключ сайта. Он используется для ежедневной отметки, мониторинга доступности и AI-сводки. Больше от вас ничего не требуется.
- Первый эталонный снимок файлов (baseline) запланирован примерно через две минуты после активации. Он сохраняет отпечаток SHA-256 каждого отслеживаемого файла, чтобы потом замечать изменения.
- Планируются ежедневные задачи: сканирование на вредоносный код (около 03:00 по времени сервера), проверка целостности файлов (около 04:00), проверка уязвимостей, AI-сводка и ежедневная отметка.
- Файрвол и ловушка (honeypot) включены по умолчанию. Остальные функции выключены, пока вы их не включите.
Рекомендуемая настройка за 10 минут
- Усиление защиты: откройте Bearmor Security → Hardening, нажмите Apply Recommended (Tier 1), сохраните и нажмите Run Self-Test.
- Ваша 2FA: откройте Users → Profile, прокрутите до Bearmor two-factor authentication, отсканируйте QR-код приложением-аутентификатором, введите код, сохраните и спрячьте 10 резервных кодов в надёжное место.
- Включите 2FA: откройте Settings → 2FA, отметьте Ask for a 2FA code at login, выберите администраторов, которые должны её использовать, и сохраните.
- Email для уведомлений: в Settings → Scanning убедитесь, что указан ящик, который вы действительно читаете.
- Проверьте отправку почты: если сайт не отправляет письма, установите SMTP-плагин. От этого зависят уведомления и коды 2FA по email.
📌 Совет: каждое правило усиления защиты объясняет, что оно делает, что может сломать и как его проверить. Читайте строку «Might break» перед включением правил уровней 2 и 3.
Где что находится
| Пункт меню | Для чего |
|---|---|
| Bearmor Security | Панель: общий статус, AI-сводка, файрвол, входы, изменения файлов, уязвимости и доступность |
| Malware Scan | Сканирование, разбор угроз, карантин и белый список файлов |
| Activity Log | Действия админов, попытки входа, заблокированные IP и блокировки файрвола |
| File Changes | Результаты контроля целостности: что изменилось после эталонного снимка |
| Vulnerabilities | Известные уязвимости в ядре, плагинах и темах |
| Hardening | 30 правил усиления защиты на трёх уровнях, пресеты, самотест и отмена |
| Settings | Общая информация, настройки сканирования, файрвола и двухфакторной аутентификации |
Панель и статус безопасности
Панель отвечает на один вопрос: всё ли в порядке с сайтом, а если нет, что делать дальше? Вместо баллов Bearmor проверяет каждую область защиты и показывает худшее найденное состояние.
Три состояния
| Статус | Цвет | Что значит |
|---|---|---|
| Protected | Зелёный | Открытых критичных проблем нет. Сейчас ничего не требует вашего внимания. |
| Review | Жёлтый | Ничего критичного, но кое-что стоит посмотреть: например, не создан эталонный снимок, есть уязвимость средней важности или правило защиты, которое стоит включить. |
| Needs attention | Красный | Нужно действовать: например, открыта критичная уязвимость или неожиданно изменился защищённый файл (ядро WordPress, wp-config.php или PHP-файл в uploads). Красный цвет не означает автоматически, что сайт взломан. Он означает, что действовать нужно сейчас. |
Под статусом есть короткая строка, которая точно говорит, что открыто, например «1 critical vulnerability, update recommended», и список пунктов, требующих внимания. Каждый пункт ведёт прямо на страницу, где это исправляется. Длинный список прокручивается.
Проверки за статусом
- SSL: работает ли сайт по HTTPS.
- Two-Factor Auth: включена ли 2FA и сколько выбранных администраторов действительно настроили способ входа.
- Firewall: включён ли файрвол.
- Hardening: сколько правил включено на каждом уровне.
- File Integrity: есть ли эталонный снимок и не менялись ли неожиданно защищённые файлы.
- Malware: открытые находки по степени опасности.
- Vulnerabilities: открытые CVE по степени опасности. Критичная CVE делает статус красным.
- Uptime: может ли bearmor.eu достучаться до вашего сайта.
Виджеты панели
- AI-сводка: понятная заметка о вашем сайте (см. следующий раздел).
- Файрвол: последние заблокированные запросы и сработавшие правила.
- Входы: успешные и неудачные входы за 24 часа и заблокированные IP.
- Изменения файлов: файлы, изменившиеся после эталонного снимка.
- Уязвимости: открытые проблемы и версия, в которой они исправлены.
- Доступность: bearmor.eu проверяет главную страницу каждые 15 минут. Виджет показывает процент доступности, время ответа и простои. Данные синхронизируются раз в час.
AI-сводка по безопасности
AI-сводка превращает сырые данные безопасности сайта в короткую заметку, которую можно прочитать за минуту: что работает, что требует внимания и куда нажать, чтобы это исправить. Она бесплатна на каждом сайте.
Как это работает
- Сайт собирает структурированную справку из собственных данных: версии WordPress, PHP и темы, активные плагины и доступные обновления, открытые уязвимости с CVE и версией исправления, необработанные находки вредоносного кода, неожиданные изменения файлов, статистику файрвола и входов, статус 2FA и недавние действия администраторов.
- Справка отправляется по HTTPS на bearmor.eu вместе с ключом сайта.
- bearmor.eu составляет заметку с помощью AI-модели и перед отправкой сверяет её с фактами. Критичные находки - CVE, вредоносный код и изменения файлов ядра - всегда идут первыми, а утверждения, не подтверждённые вашими данными, удаляются.
- Заметка появляется в виджете панели со ссылками на нужные страницы Bearmor.
🔒 Конфиденциальность: справка содержит числа, версии, названия плагинов и пути к файлам. В ней никогда нет паролей, данных посетителей, заказов или содержимого писем. Кнопка отладки в виджете показывает точный отправляемый текст.
Когда запускается и ограничения
| Тип запуска | Ограничение |
|---|---|
| Автоматический | 1 раз в день на сайт, в случайное время, чтобы распределить нагрузку |
| Ручной (кнопка обновления) | 2 раза в день на сайт |
| Интервал между ручными запусками | Не меньше 10 минут |
Свежая заметка 15 минут помечена как New. Если лимит исчерпан, виджет показывает последнюю заметку и сообщает, когда можно запустить снова. Сначала исправьте что-нибудь, например обновите уязвимый плагин, а потом обновите сводку, чтобы она учла изменение.
Как читать заметку
- Пункты Needs attention идут первыми и говорят, что делать, например «Update Contact Form 7 to 6.2.2, fixes CVE-2026-XXXX».
- Working перечисляет то, что уже работает: активный файрвол, заблокированных атакующих, используемую 2FA.
- Длинные списки сокращаются, например «Update WooCommerce, Polylang and 3 more». Полный список - на страницах Vulnerabilities и Updates.
- Заметка объясняет ваши данные, но не заменяет сканеры. Если заметка и сканер расходятся, доверяйте сканеру и запустите сводку позже ещё раз.
Сканер вредоносного кода
Сканер ищет бэкдоры, веб-шеллы и обфусцированный код там, где на самом деле прячется вредоносный код WordPress. Он сознательно узкий и точный, чтобы не заваливать вас ложными тревогами.
Что сканируется
- PHP-файлы в корневой папке WordPress (не wp-admin и wp-includes - их проверяет контроль целостности по данным WordPress.org)
- PHP-файлы прямо в
wp-content/, куда злоумышленники часто подбрасывают отдельные бэкдоры - Активная тема и её родительская тема, все файлы
- Обязательные плагины (
wp-content/mu-plugins), все файлы - PHP-файлы в любом месте
wp-content/uploads. Там должны быть только медиафайлы, поэтому любой PHP подозрителен.
📌 Почему не папки плагинов? Плагины большие, меняются при каждом обновлении и раньше давали почти все ложные срабатывания. Плагины Bearmor проверяет на известные уязвимости (см. Оповещения об уязвимостях), а сканирует места, куда злоумышленники действительно кладут свой код.
Что он находит
Bearmor использует комбинированные сигнатуры. Одиночный base64_decode или eval не считается находкой, потому что их используют многие нормальные программы. Нужен шаблон, который характерен именно для вредоносного кода:
- Закодированный, сжатый или ROT13-код, который сразу выполняется
assertилиevalрасшифрованного кода, двойная обфускация- Выполнение кода, команд оболочки или запись файлов на основе пользовательского ввода (
$_GET,$_POST,$_REQUEST, cookies) preg_replaceс опасным модификатором /e- Известные сигнатуры веб-шеллов
- Файлы, которые начинаются с подавленного вызова PHP - типичная внедрённая первая строка
Запуск сканирования
- Вручную: Bearmor Security → Malware Scan → Run Malware Scan. Большинство сайтов проверяются за секунды.
- Автоматически: ежедневно около 03:00 по времени сервера, если в Settings → Scanning → Scan Schedule выбрано Daily (по умолчанию).
Что делать с находкой
| Действие | Что делает |
|---|---|
| View Code | Показывает совпавшие строки с контекстом, чтобы вы могли оценить, настоящая ли угроза. |
| Quarantine | Перемещает файл под именем с отметкой времени в wp-content/uploads/bearmor-security/quarantine/, где он не может выполниться. Вы получите предупреждение, если файл принадлежит активному плагину или теме. |
| Restore | Возвращает файл из карантина на исходное место. |
| Whitelist / Mark Safe | Отмечает файл как ложное срабатывание. Он игнорируется, пока его содержимое не изменится. |
⚠️ Файлы ядра WordPress нельзя отправить в карантин, иначе сайт сломается. Если заражён файл ядра, переустановите WordPress: Dashboard → Updates → Re-install Now. Все файлы ядра будут заменены чистыми копиями.
Автокарантин
В Settings → Scanning → Automated Actions можно разрешить Bearmor автоматически отправлять найденные файлы в карантин. По умолчанию выключено. Это полезно для сайтов, которые никто не проверяет каждый день, но файл темы в карантине может сломать сайт, поэтому проверьте сайт после автоматического действия.
После настоящего заражения
- Отправьте вредоносные файлы в карантин или удалите их.
- Переустановите ядро WordPress и обновите все плагины и темы.
- Смените пароли всех администраторов и базы данных, удалите незнакомых администраторов.
- Пересоздайте эталонный снимок в Settings → Scanning, чтобы чистое состояние стало новой точкой отсчёта.
- Снова запустите сканирование и проверку целостности файлов.
Целостность файлов и эталонный снимок
Контроль целостности сообщает, когда меняются файлы, которые обычно никогда не меняются. Это самый быстрый способ заметить, что кто-то изменил ваш сайт.
Как это работает
- Ядро WordPress сравнивается с официальными контрольными суммами WordPress.org для вашей версии. Локализованные сборки, например русская или эстонская, проверяются по собственным контрольным суммам, поэтому переведённые файлы не вызывают тревог.
- wp-config.php получает отдельный отпечаток.
- Активная и родительская тема отпечатываются полностью: темы меняются редко, и изменение - сильный сигнал.
- Отпечатываются также обязательные плагины и отдельные PHP-файлы в корне WordPress и в
wp-content/. - Каждый отпечаток - хеш SHA-256, хранящийся в вашей базе данных. Набор отпечатков называется эталонным снимком (baseline).
Проверка запускается ежедневно около 04:00 по времени сервера. Bearmor сравнивает каждый файл со снимком и помечает его как changed, new или deleted. Результаты - на странице Bearmor Security → File Changes.
Обновления не вызывают ложных тревог
Когда вы обновляете WordPress, тему или сам Bearmor, снимок для изменённых файлов тихо обновляется в фоне. Вы видите только изменения, сделанные вне обычного обновления. Служебные файлы панелей хостинга, например Installatron, игнорируются.
Уведомления по email
Неожиданное изменение защищённого файла (ядро WordPress, wp-config.php или PHP-файл в uploads) отправляет одно письмо на адрес уведомлений и делает панель красной. Об одном и том же файле с тем же содержимым сообщается один раз, а не каждый день. Хранятся последние 250 изменений.
Действия с изменённым файлом
- View: посмотреть файл и время изменения.
- Mark Safe: признать изменение законным. Оно становится частью снимка.
- Lock / Unlock: сделать файл на сервере доступным только для чтения, чтобы его было трудно изменить снова.
- Quarantine / Restore: убрать файл или вернуть его.
Пересоздание эталонного снимка
Settings → Scanning → File Monitoring → Rebuild Baseline Scan заменяет все отпечатки текущим состоянием файлов. Это занимает от 30 до 120 секунд в зависимости от размера сайта. Пересоздавайте снимок:
- после очистки от вредоносного кода, когда вы уверены, что текущие файлы чистые
- после крупной смены темы или ручных правок по SFTP
- когда хотите сбросить точку отсчёта и очистить старые изменения
⚠️ Никогда не пересоздавайте снимок на сайте, который может быть заражён. Заражённые файлы станут новой «чистой» точкой отсчёта.
Ежечасная проверка
Для готовых сайтов правило уровня блокировки Hourly file tripwire проверяет файлы каждый час и сразу пишет вам о любом изменении. См. раздел «Усиление защиты».
Оповещения об уязвимостях
Большинство взломанных сайтов WordPress взламывают через известную дыру в устаревшем плагине. Bearmor ежедневно сверяет установленное ПО с открытой базой уязвимостей и точно говорит, что обновить.
Как это работает
- Раз в день Bearmor отправляет названия и версии ядра WordPress, плагинов и тем в бесплатную открытую базу WPVulnerability.net.
- Результаты кешируются на 24 часа, чтобы было меньше запросов к API. Кнопка Scan Now на странице Vulnerabilities запускает свежую проверку.
- Показываются только проблемы, которые касаются вашей установленной версии. Если у вас уже исправленная версия, проблема исчезает.
Что вы видите
| Поле | Значение |
|---|---|
| Severity | Critical, High, Medium или Low, по оценке CVSS |
| CVE | Публичный идентификатор, например CVE-2026-12345, по которому можно найти подробности |
| Installed / Fixed in | Ваша версия и первая версия с исправлением |
| Description | Что может сделать злоумышленник |
| Actions | Update Now открывает обновление WordPress. Disable Plugin отключает плагин, если исправления ещё нет. |
Важность и статус
- Critical: делает панель красной и отправляет одно письмо администратору сайта. Обновите немедленно.
- High: обновите сегодня.
- Medium и Low: обновите при следующем обслуживании. Они показываются как Review.
📌 Исправления нет? Отключите плагин, пока автор не выпустит исправление, или замените его аналогом. Файрвол блокирует многие типовые атаки, но не может закрыть конкретную дыру.
Защита входа и блокировки
Боты каждый день перебирают тысячи паролей на страницах входа WordPress. Bearmor считает неудачные входы по IP-адресу и с каждым разом блокирует атакующего дольше.
Уровни блокировки
| Неудачных попыток с одного IP | Результат |
|---|---|
| 5 | Блокировка на 5 минут |
| 10 | Блокировка на 30 минут |
| 20 | Блокировка на 24 часа |
| Снова 20 после 3 и более блокировок за 7 дней | Постоянная блокировка (повторный нарушитель) |
Попытки считаются за последний час, после каждой блокировки счёт начинается заново. Заблокированный посетитель видит «Too many failed login attempts. Please try again in X minutes.» Постоянно заблокированный IP видит на странице входа сообщение Access Denied. Оба правила действуют для wp-login.php и всех других способов аутентификации, включая XML-RPC.
Управление заблокированными IP
- Activity Log → Blocked IPs показывает все заблокированные адреса с причиной, временем и сроком окончания блокировки.
- Unblock сразу снимает блокировку, например если коллега ошибся в пароле.
- Manually block an IP добавляет блокировку вручную, например для адреса, который вы видите на вкладке Login Attempts.
- Истёкшие временные блокировки удаляются автоматически через 7 дней. Постоянные остаются, пока вы их не снимете.
Журнал попыток входа
Activity Log → Login Attempts показывает каждый успешный и неудачный вход с логином, IP-адресом, страной и временем. Страна определяется через ip-api.com.
Настоящие IP за Cloudflare и прокси
Блокировки работают, только если Bearmor видит настоящий IP атакующего. Пересылаемые заголовки можно подделать, поэтому Bearmor доверяет CF-Connecting-IP только тогда, когда запрос действительно пришёл с адреса Cloudflare, а X-Forwarded-For или X-Real-IP - только если сервер стоит за локальным прокси. При обычном прямом подключении используется адрес соединения, поэтому атакующий не может обойти блокировку поддельным заголовком.
Дополнительная защита входа
- Generic login errors (усиление защиты, уровень 1) скрывает, существует ли логин.
- Ловушка останавливает многих ботов ещё до проверки пароля.
- Двухфакторная аутентификация делает украденный пароль бесполезным.
- Login IP allowlist (блокировка) пускает на страницу входа только ваши IP.
Двухфакторная аутентификация (2FA)
С 2FA одного пароля для входа недостаточно. После пароля пользователь вводит 6-значный код с телефона или из письма. Даже если пароль утёк, злоумышленник не войдёт.
Для кого она действует
- 2FA действует только для администраторов (пользователей, которые могут управлять настройками). Покупателей, подписчиков и участников никогда не спрашивают, поэтому магазин WooCommerce с тысячами клиентов не заблокирует никого случайно.
- Общий переключатель: Settings → 2FA → Ask for a 2FA code at login.
- Выбор по админам: под переключателем есть список с флажком для каждого администратора. Снимите флажок, чтобы этого человека никогда не спрашивали код, например технический аккаунт для деплоя.
- Отмеченный администратор без настроенного способа всё ещё может войти только по паролю. В списке у него написано Not set up со ссылкой на профиль, а панель показывает, сколько выбранных админов защищены.
Способ 1: приложение-аутентификатор (рекомендуется)
Работает без интернета, не нуждается в почте и надёжнее всего. Подходит любое TOTP-приложение: Google Authenticator, Microsoft Authenticator, Authy, 1Password, Bitwarden Authenticator и другие.
- Откройте Users → Profile и прокрутите до Bearmor two-factor authentication. Можно также нажать Set up your own 2FA в Settings → 2FA.
- Установите на телефон приложение-аутентификатор, если его нет.
- Отсканируйте QR-код приложением. QR-код создаётся на вашем сервере: секрет никогда не покидает сайт. Можно также ввести ключ настройки (setup key) под кодом или открыть ссылку otpauth на телефоне.
- Введите 6-значный код из приложения в поле Code from the app, to confirm.
- Нажмите Update Profile внизу страницы.
- Сохраните 10 резервных кодов, которые появятся. Они показываются только один раз.
Резервные коды
- Вы получаете 10 кодов по 8 символов. Каждый код работает один раз.
- Введите резервный код в то же поле, что и код из приложения, например если телефон потерян или разряжен.
- Коды хранятся в виде хешей, как пароли. Прочитать их из базы данных нельзя.
- Отметьте Generate 10 new backup codes в профиле, чтобы заменить их. Старые коды перестанут работать.
Способ 2: код по email
Отметьте в профиле Also email a code at login. При каждом входе на email пользователя приходит 6-значный код, действующий 10 минут. Это работает, только если сайт надёжно отправляет почту. Если отправка не удалась, страница входа сразу сообщает об этом, а не ждёт бесконечно. Если у пользователя настроены оба способа, используется приложение.
Шаг входа
- После верного пароля пользователь видит поле для кода вместо панели.
- Remember this device for 30 days не спрашивает код в этом браузере 30 дней.
- После 5 неверных кодов вход отменяется, и нужно начать заново с пароля. Это останавливает подбор.
- Код приложения действует 30 секунд с допуском 30 секунд в обе стороны. Часы телефона должны настраиваться автоматически.
Если вы потеряли доступ
- Используйте резервный код. Это самый быстрый способ.
- Попросите другого администратора. Он может открыть вашего пользователя в Users → All Users, отметить Remove it and show a new setup key в разделе Bearmor two-factor authentication и сохранить. Или снять ваш флажок в Settings → 2FA.
- Других админов нет? Добавьте в
wp-config.phpчерез SFTP или файловый менеджер хостинга строкуdefine( 'BEARMOR_DISABLE_2FA', true );. Тогда 2FA пропускается для всех. Войдите, заново настройте приложение и удалите строку.
⚠️ Удалите BEARMOR_DISABLE_2FA сразу после входа. Пока строка в wp-config.php, 2FA выключена для всех пользователей.
Файрвол и блокировка стран
Файрвол Bearmor проверяет каждый входящий запрос до того, как WordPress соберёт страницу, и останавливает типичные атаки ответом 403 Forbidden. Он включён по умолчанию.
Что он блокирует
- SQL-инъекции: шаблоны вроде
OR 1=1,UNION SELECT,DROP TABLEиEXEC( - Межсайтовый скриптинг (XSS): теги script, адреса
javascript:, обработчикиonerror=иonload=,eval( - Обход каталогов: последовательности
../, их закодированные варианты и попытки прочитать/etc/passwd - Внедрение команд: команды оболочки вроде
; rm -rfи| cat
Файрвол проверяет URL, строку запроса, данные GET и POST и cookies.
Что он никогда не блокирует
- Залогиненных администраторов. Они редактируют содержимое, похожее на код, например фрагменты скриптов в конструкторе страниц.
- WP-CLI и cron WordPress. Это сам сайт, а не посетитель.
- Heartbeat WordPress и обновления корзины WooCommerce.
- Всё, что есть в белом списке.
Каждая блокировка записывается во вкладку Activity Log → Firewall Blocks с временем, IP, адресом и сработавшим правилом.
Ограничение частоты запросов
Необязательно, по умолчанию выключено. Если включено, IP, загружающий больше страниц в минуту, чем разрешено, до конца этой минуты получает 403. По умолчанию лимит 120 запросов в минуту, минимум 60. Считаются только анонимные загрузки страниц: залогиненные пользователи, запросы REST API, AJAX и WP-CLI никогда не ограничиваются. Включите, если боты перегружают сайт, и поднимите лимит, если блокируются настоящие посетители за одним офисным IP.
Блокировка стран
- Откройте Settings → Firewall и отметьте Block requests from specific countries.
- Введите двухбуквенные коды стран ISO через запятую, например
CN, KP, IR. - Нажмите Save & Apply.
- Страна определяется через ipwho.is, результат кешируется на 24 часа для каждого IP, поэтому каждого посетителя проверяют не чаще раза в день.
- Если определить страну не удалось, запрос пропускается. Bearmor никогда не блокирует посетителя из-за того, что сервис определения недоступен.
- Залогиненных администраторов и IP из белого списка по странам не блокируют.
- Перед блокировкой страны посмотрите аналитику: вместе со страной блокируются и настоящие клиенты, поисковые роботы и уведомления платёжных систем оттуда.
Белый список
Белый список проверяется раньше всех остальных правил: до ограничения частоты, блокировки стран и проверки шаблонов. Добавьте запись в Settings → Firewall → Whitelist:
- IP address: ваш офис, сервис мониторинга или платёжная система, например
203.0.113.10. - URL contains: любой запрос, адрес которого содержит этот текст, минует файрвол, например
/checkoutили адрес вебхука вроде/wc-api/.
📌 Ложное срабатывание? Найдите блокировку в Activity Log → Firewall Blocks, запишите адрес и правило и добавьте самую узкую запись в белый список, которая решает проблему. Полностью отключайте файрвол только на время разбирательства.
Ловушка (формы входа и комментариев)
Ловушка (honeypot) ловит спам-ботов без CAPTCHA, головоломок и баннеров. Настоящие посетители её не замечают.
Как это работает
- Bearmor добавляет невидимое текстовое поле в форму входа WordPress и форму комментариев. Поле вынесено за пределы экрана, пропускается клавиатурой и скрыто от экранных дикторов.
- У каждого сайта своё случайное имя поля (например,
hp_x7k2…), поэтому боты не могут выучить его на других сайтах. - Боты заполняют все найденные поля. Если в скрытом поле что-то есть, отправка отклоняется.
- Скрытая отметка времени также отклоняет формы, отправленные менее чем через 2 секунды после загрузки страницы. Человек так быстро не успевает, скрипт - успевает.
Что происходит с пойманным ботом
- Форма входа: вход отклоняется ещё до проверки пароля, а в журнал действий записывается Blocked Login (Honeypot).
- Форма комментариев: комментарий отклоняется и не попадает в очередь модерации.
Настройки и охват
- Включена по умолчанию. Переключатель: Settings → Firewall → Honeypot Protection.
- Покрывает стандартные формы входа и комментариев WordPress. Contact Form 7, оформление заказа WooCommerce и другие плагины форм используют свою защиту от спама и не меняются.
- Менеджеры паролей и автозаполнение браузера не вызывают срабатывания: они не заполняют скрытые поля с незнакомыми именами.
Усиление защиты (30 правил)
Усиление защиты (hardening) закрывает двери, которые WordPress по умолчанию оставляет открытыми. В Bearmor 30 правил на трёх уровнях. Каждое объясняет, что делает, что может сломать и как его проверить, поэтому включать их можно без догадок.
Три уровня
- Уровень 1 - Базовый (Baseline): безопасен на любом сайте. Заголовки безопасности, скрытая версия, защита от перебора логинов и т. п.
- Уровень 2 - Ограничение доступа (Access Hardening): безопасен на большинстве сайтов, но может затронуть отдельные плагины или процессы. Сначала прочитайте примечания.
- Уровень 3 - Блокировка (Lockdown): для готовых, «замороженных» сайтов, содержимое которых меняется редко. Эти правила намеренно мешают обычному редактированию.
Быстрые действия
- Apply Recommended (Tier 1): отмечает все базовые правила. Затем нажмите Save All Settings.
- Freeze Site (Lockdown preset): отмечает уровень 1, все правила блокировки и правила уровня 2, безопасные для замороженного сайта: XML-RPC выключен, редактор файлов выключен, пароли приложений выключены, регистрация выключена, PHP в uploads заблокирован, ленты выключены.
- Disable All: снимает все флажки.
- Undo last hardening change: в течение 24 часов возвращает набор правил, действовавший до последнего сохранения. Используйте, если после изменения что-то сломалось.
- Run Self-Test: анонимно проверяет сайт снаружи и убеждается, что каждое включённое правило действительно работает, например что /?author=1 отвечает Forbidden. Также предупреждает об известных конфликтах с активными плагинами, такими как Jetpack, WooCommerce и Contact Form 7.
На странице также показан статус WP_DEBUG. На рабочем сайте режим отладки должен быть выключен, потому что сообщения об ошибках могут раскрывать пути к файлам.
Все 30 правил
| Правило | Что делает | Что может сломать |
|---|---|---|
| Уровень 1 - Базовый | ||
| Block REST batch requests | Закрывает эндпоинт /wp-json/batch/v1, через который один запрос может содержать много вызовов API. Злоумышленники используют его, чтобы умножать попытки подбора и разведки. | На обычных сайтах ничего. Gutenberg, WooCommerce и Contact Form 7 он не нужен. |
| X-Frame-Options header | Отправляет X-Frame-Options: SAMEORIGIN, поэтому чужие сайты не могут загрузить ваши страницы в iframe (защита от кликджекинга). | Только решения, которые намеренно встраивают ваш сайт на другом домене. |
| X-Content-Type-Options header | Отправляет nosniff, чтобы браузер не угадывал тип файла и не запускал загруженный файл как скрипт. | На практике ничего. |
| Referrer-Policy header | Отправляет strict-origin-when-cross-origin. Другие сайты видят только ваш домен, а не полные адреса с приватными параметрами. | Аналитика других сайтов видит меньше деталей о переходах с вашего. |
| Permissions-Policy header | Отправляет geolocation=(), microphone=(), camera=(), чтобы встроенные скрипты не могли запрашивать геолокацию, микрофон или камеру. | Функции, которым это действительно нужно, например поиск магазина по вашему местоположению. |
| X-XSS-Protection header (legacy) | Отправляет 1; mode=block для очень старых браузеров. Современные браузеры его игнорируют. | Ничего. |
| HSTS header | Сообщает браузеру, что этот домен 180 дней открывается только по HTTPS. Отправляется, только если сайт уже работает по HTTPS. По умолчанию выключен. | Если SSL-сертификат истечёт, постоянные посетители не смогут открыть сайт, пока его не исправят. Включайте только при автоматическом продлении SSL. |
| Hide WordPress version | Убирает номер версии из кода страниц и лент, чтобы боты не могли сразу сопоставить вашу версию со списком уязвимостей. | Ничего. |
| Block user enumeration (?author=) | Отвечает Forbidden на запросы вида ?author=1, которые раскрывают логины. | Только старые ссылки ?author=N. Красивые ссылки /author/имя/ работают. |
| Block REST API user listing | Скрывает /wp-json/wp/v2/users от незалогиненных посетителей. | Редкие публичные функции, показывающие авторов анонимным посетителям. |
| Generic login errors | Заменяет сообщения «неизвестный логин» и «неверный пароль» одним нейтральным сообщением. | Ничего. Пользователь просто видит менее конкретную ошибку. |
| Force SSL (HTTPS) redirect | Перенаправляет каждый HTTP-запрос на HTTPS с кодом 301. Предлагается, только если SSL обнаружен. | Сломанный или отсутствующий сертификат делает сайт недоступным. |
| Disable pingbacks | Убирает методы pingback в XML-RPC и заголовок X-Pingback, которые часто используют для усиления DDoS-атак. | Другие блоги больше не смогут уведомлять вас о ссылках на ваши записи. |
| Remove extra <head> links | Убирает теги RSD, wlwmanifest и shortlink: меньше следов о технологиях сайта, чище HTML. | Публикацию из очень старых настольных редакторов блогов. |
| Disable oEmbed discovery | Убирает ссылки oEmbed и скрипт встраивания, поэтому другие сайты не могут автоматически встраивать ваши страницы. Встраивание YouTube или X в ваши записи работает. | Красивые превью, когда кто-то вставляет ваш адрес на другой сайт WordPress. |
| Disable directory browsing (.htaccess) | Добавляет Options -Indexes, поэтому папка без индексного файла показывает Forbidden, а не список файлов. Только Apache и LiteSpeed. | Ничего законного. |
| Уровень 2 - Ограничение доступа | ||
| Disable XML-RPC completely | Отключает xmlrpc.php, устаревший удалённый интерфейс, который постоянно атакуют подбором паролей. | Jetpack, классические мобильные приложения WordPress и некоторые инструменты удалённой публикации. |
| Disable file editor (DISALLOW_FILE_EDIT) | Записывает DISALLOW_FILE_EDIT в wp-config.php и убирает редакторы кода тем и плагинов. С украденным аккаунтом админа нельзя внедрить PHP из панели. | Быстрые правки кода в wp-admin. Используйте SFTP. |
| Disable Application Passwords | Отключает пароли приложений (WordPress 5.6+), то есть ещё один способ удалённого входа. | Внешние сервисы и скрипты, которые входят в REST API с паролем приложения. |
| Force user registration OFF | Держит «Любой может зарегистрироваться» выключенным, даже если кто-то включит это позже. Это типичный шаг злоумышленника. | Открытые формы регистрации на сайтах с членством. Создание аккаунта при оформлении заказа WooCommerce работает. |
| Disable comments site-wide | Закрывает комментарии и pingback везде. | Все комментарии, включая отзывы о товарах WooCommerce. |
| Disable author archive pages | Перенаправляет страницы /author/имя/ на главную, потому что они раскрывают логины. | Блоги с несколькими авторами, которые используют страницы авторов. |
| Block PHP execution in uploads (.htaccess) | Создаёт в wp-content/uploads файл .htaccess, запрещающий .php. Загруженный туда веб-шелл не сможет запуститься. Только Apache и LiteSpeed. | Редкие плагины, которые запускают PHP из uploads (плохая практика). |
| Disable RSS/Atom feeds | Отключает /feed/ и похожие адреса и убирает ссылки на ленты. | RSS-читалки, RSS-рассылки Mailchimp и агрегаторы. |
| REST API for logged-in users only | Анонимный посетитель получает ошибку от /wp-json/. Залогиненные пользователи и блочный редактор работают как обычно. Contact Form 7 и WooCommerce Store API остаются открытыми автоматически. | Другие плагины форм, виджеты поиска и фильтров, Jetpack и формы конструкторов страниц, которые обращаются к REST API для посетителей. Проверьте все формы после включения. |
| Уровень 3 - Блокировка | ||
| Freeze all file changes (DISALLOW_FILE_MODS) | Записывает DISALLOW_FILE_MODS в wp-config.php: из wp-admin нельзя ничего устанавливать, обновлять или удалять, даже администратору. | Все обновления из wp-admin, включая сам Bearmor. Выключайте перед обслуживанием. |
| Block ALL file uploads | Отклоняет любые загрузки через WordPress: медиа, формы, плагины. | Медиатеку, поля загрузки в формах, изображения товаров. Выключите, когда нужно добавить медиа. |
| Block ALL new user creation | Блокирует создание аккаунтов через wp-admin, REST, XML-RPC, WP-CLI и оформление заказа. Взломщик обычно сначала создаёт скрытого админа. | Добавление сотрудников, аккаунты покупателей при заказе, регистрацию участников. |
| Hourly file tripwire with instant email | Запускает проверку целостности файлов каждый час вместо раза в день и сразу пишет админу, если изменился любой файл. | Ничего, но ждите писем во время обычных обновлений. |
| Login IP allowlist | Открывать wp-login.php и wp-admin могут только указанные IP-адреса (можно диапазоны IPv4 CIDR). Ваш текущий IP добавляется при включении. | Вход из нового места или через мобильный интернет. Запасной выход: добавьте в wp-config.php define( 'BEARMOR_UNLOCK', true );. |
📌 Правила, которые меняют файлы: правила редактора файлов и запрета изменений записывают константы в wp-config.php. Правила просмотра каталогов и PHP в uploads записывают правила в .htaccess, которые работают на Apache и LiteSpeed. На nginx попросите хостинг добавить аналогичные правила; большинство nginx-хостингов уже запрещают просмотр каталогов.
Заголовки безопасности
Заголовки безопасности - короткие инструкции, которые сервер отправляет с каждой страницей. Они говорят браузеру, как защищать ваших посетителей. Bearmor может отправлять шесть заголовков, все включаются на странице Hardening, уровень 1.
| Заголовок | Значение от Bearmor | Защищает от |
|---|---|---|
| X-Frame-Options | SAMEORIGIN | Кликджекинга: ваша страница невидимо показывается внутри чужого сайта |
| X-Content-Type-Options | nosniff | Запуска браузером загруженного файла как скрипта |
| Referrer-Policy | strict-origin-when-cross-origin | Утечки полных адресов, включая приватные параметры, на другие сайты |
| Permissions-Policy | geolocation=(), microphone=(), camera=() | Встроенных скриптов, запрашивающих геолокацию, микрофон или камеру |
| X-XSS-Protection | 1; mode=block | Отражённого XSS в очень старых браузерах |
| Strict-Transport-Security (HSTS) | max-age 180 дней, только по HTTPS | Атак с понижением соединения до HTTP |
Как проверить заголовки
- Откройте сайт в приватном окне, нажмите F12, перейдите на вкладку Network и перезагрузите страницу.
- Нажмите на первый запрос (вашу страницу) и посмотрите Response Headers.
- Или выполните в терминале
curl -I https://вашсайт.ru.
Полезно знать
- HSTS по умолчанию выключен. Включайте его, только если SSL-сертификат продлевается автоматически. Увидев HSTS, браузер 180 дней отказывается от обычного HTTP, даже если сертификат сломается.
- Если хостинг или Cloudflare уже отправляют заголовок, выключите копию Bearmor, чтобы избежать дублей. Cloudflare может сам отправлять HSTS в разделе SSL/TLS → Edge Certificates.
- Bearmor не отправляет Content-Security-Policy. Полезная CSP зависит от всех скриптов сайта, и её легко настроить неправильно; настраивайте её для каждого сайта вместе с разработчиком.
- Плагины полностраничного кеширования сохраняют заголовки вместе со страницей. Очистите кеш после изменения правил заголовков.
Журнал действий
Журнал действий записывает, кто, что и когда сделал. После инцидента это первое место, куда стоит смотреть, а в обычный день он показывает, что ничего неожиданного не произошло.
Вкладки
| Вкладка | Содержимое |
|---|---|
| All Activity | События администраторов и безопасности с пользователем, IP и временем |
| Login Attempts | Каждый успешный и неудачный вход с логином, IP и страной |
| Blocked IPs | Текущие и прошлые блокировки, снятие блокировки и ручная блокировка |
| Firewall Blocks | Запросы, остановленные файрволом, с адресом и сработавшим правилом |
Записываемые события
- Входы и выходы
- Входы, заблокированные ловушкой
- Установка, активация, деактивация и удаление плагинов
- Смена темы
- Создание и удаление пользователей
- Отправка файлов в карантин и восстановление
- Блокировка и разблокировка IP-адресов
- Изменение настроек и применение правил защиты
Фильтруйте по действию, пользователю или важности. Записи журнала действий хранятся 90 дней; для попыток входа и блокировок файрвола хранятся последние записи, поэтому таблицы не растут бесконечно.
📌 На что обращать внимание: пользователь, которого вы не создавали, плагин, активированный в 3 часа ночи, или входы из страны, где никто из вашей команды не живёт. Всё это стоит проверить.
Настройки
На странице Bearmor Security → Settings четыре вкладки. Изменения вступают в силу после нажатия Save & Apply.
General (общие)
- Site ID и Last check-in: идентификатор сайта на bearmor.eu и время последней ежедневной отметки. Пригодится при обращении в поддержку.
- Кнопки Docs и Get Support.
- Scheduled Tasks: все задачи Bearmor по расписанию (сканирование на вредоносный код, проверка уязвимостей, проверка целостности, AI-анализ, ежедневная отметка, синхронизация доступности, очистка блокировок и журнала) с расписанием и временем следующего запуска. «Not scheduled» означает, что cron WordPress работает неправильно; см. «Решение проблем».
Scanning (сканирование)
| Настройка | По умолчанию | Что делает |
|---|---|---|
| Scan Schedule | Daily | Daily запускает сканирование каждую ночь автоматически. Manual - только по нажатию кнопки. |
| Notification Email | Email администратора | Куда приходят уведомления: критичные уязвимости и неожиданные изменения защищённых файлов. |
| Scan Exclusions | Пусто | Пути или шаблоны для пропуска, по одному на строку, например wp-content/cache/, *.min.js, wp-backup-* или .git/. |
| Rebuild Baseline Scan | - | Заменяет эталонный снимок текущими файлами. См. «Целостность файлов». |
| Auto-Quarantine Malware | Выкл. | Автоматически и без вопросов отправляет найденные файлы в карантин. |
Firewall (файрвол)
| Настройка | По умолчанию | Что делает |
|---|---|---|
| Web Application Firewall | Вкл. | Блокирует SQL-инъекции, XSS, обход каталогов и внедрение команд. |
| Rate Limiting | Выкл., 120/мин | Блокирует IP, загружающие слишком много страниц в минуту. Минимум 60. |
| Country Blocking | Выкл. | Блокирует посетителей из стран с указанными двухбуквенными кодами. |
| Honeypot Protection | Вкл. | Невидимые поля-ловушки в формах входа и комментариев. |
| Whitelist | Пусто | IP или части адресов, которые минуют все проверки файрвола. |
2FA
| Настройка | По умолчанию | Что делает |
|---|---|---|
| Ask for a 2FA code at login | Выкл. | Включает двухфакторную аутентификацию для отмеченных ниже администраторов, настроивших способ входа. |
| Список пользователей | Все админы отмечены | Снимите флажок, чтобы у администратора никогда не спрашивали код. Колонка Method показывает Authenticator app, Email code или Not set up. |
📌 Письма от Bearmor: чтобы не утомлять уведомлениями, Bearmor отправляет письма только о критичных уязвимостях, неожиданных изменениях ядра, wp-config.php или PHP в uploads, ежечасной проверке (если включена) и коды 2FA по email. О блокировках входа письма не приходят.
Решение проблем
Сканирование или эталонный снимок не запускаются
Bearmor использует cron WordPress, который срабатывает только при посещении сайта. На тихих сайтах или если в wp-config.php задано DISABLE_WP_CRON, задачи могут опаздывать или не выполняться. Проверьте Settings → General → Scheduled Tasks. Решение - настоящий cron на сервере, вызывающий WordPress каждые 5-15 минут, например:
*/10 * * * * wget -q -O - https://вашсайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1
В большинстве панелей хостинга есть раздел Cron Jobs, где это можно добавить. Пока что используйте ручные кнопки на каждой странице.
Форма перестала работать после включения «REST API for logged-in users only»
Это правило заставляет /wp-json/ возвращать ошибку анонимным посетителям. Bearmor автоматически оставляет открытыми Contact Form 7 и WooCommerce Store API (корзина и блочное оформление заказа), поэтому они продолжают работать. Другие плагины, обращающиеся к REST API для посетителей, перестают работать: другие плагины форм, виджеты поиска и фильтров, Jetpack, формы конструкторов страниц, некоторые виджеты бронирования и чатов. Откройте консоль браузера на сломанной странице: ошибка 401 на запросе /wp-json/… подтверждает причину. Выключите правило или нажмите Undo last hardening change. Вместо него используйте Block REST API user listing: оно закрывает главную утечку, не ломая формы.
Cloudflare
- Настоящие IP: Bearmor читает
CF-Connecting-IPтолько из опубликованных диапазонов Cloudflare, поэтому блокировки и журналы показывают настоящего посетителя, а не Cloudflare. Дополнительный плагин не нужен. - Блокировка стран: работает по настоящему IP посетителя. Страны можно блокировать и в Cloudflare (Security → WAF), тогда запросы не дойдут до сервера.
- Заголовки и HSTS: если Cloudflare уже отправляет HSTS или другие заголовки, выключите копию Bearmor, чтобы избежать дублей.
- Ограничение частоты: кеш Cloudflare отдаёт многие страницы без обращения к WordPress, поэтому Bearmor считает только некешированные запросы. Это нормально.
- Другой прокси или балансировщик: пересылаемым IP доверяют, только если соединение приходит с адреса частной сети. Если у всех посетителей один и тот же IP, спросите хостинг, как прокси передаёт IP клиента.
Защита входа заблокировала меня
- Дождитесь окончания блокировки (5 минут, 30 минут или 24 часа) или войдите из другой сети, например через мобильный интернет.
- Попросите другого администратора снять блокировку вашего IP в Activity Log → Blocked IPs.
- Заблокировал Login IP allowlist? Добавьте в wp-config.php
define( 'BEARMOR_UNLOCK', true );, войдите, исправьте список разрешённых IP и удалите строку.
Коды 2FA не принимаются
- Включите на телефоне автоматическую установку даты и времени. Коды аутентификатора зависят от точных часов.
- Убедитесь, что в приложении используется запись Bearmor для нужного сайта.
- Войдите по резервному коду, затем удалите приложение в профиле и настройте заново.
- Коды по email не приходят: проверьте папку «Спам» и установите SMTP-плагин. Многие хостинги ненадёжно доставляют письма PHP.
- Полные шаги - в разделе «Двухфакторная аутентификация → Если вы потеряли доступ».
Файрвол блокирует что-то нужное
Откройте Activity Log → Firewall Blocks, найдите запрос и сработавшее правило и добавьте в белый список IP или запись «URL contains». Типичные случаи - уведомления платёжных систем и вебхуков и формы, в которые вводят фрагменты кода.
Много изменений файлов после обновления
Для обычных обновлений снимок обновляется автоматически. Если вы правили файлы по SFTP, выкатывали из Git или меняли тему, просмотрите список и пересоздайте снимок в Settings → Scanning.
Правила .htaccess не действуют
Скорее всего, сервер работает на nginx, который игнорирует .htaccess. Самотест показывает, какие правила не сработали. Попросите хостинг запретить в конфигурации nginx просмотр каталогов и выполнение PHP в uploads.
Нет AI-сводки
- Проверьте Settings → General → Last check-in. Если там Never, сайт не может связаться с bearmor.eu. Спросите хостинг, не заблокированы ли исходящие HTTPS-соединения.
- Автоматический запуск происходит раз в день в случайное время, поэтому на новом сайте это может занять до 24 часов.
- Ручных запусков - 2 в день, с интервалом не меньше 10 минут.
Нет данных о доступности
Данные о доступности синхронизируются раз в час. Если bearmor.eu не может достучаться до сайта, например из-за файрвола сервера или блокировки страны, где находится мониторинг, виджет останется пустым или покажет простой. При необходимости добавьте bearmor.eu в белый список.
Производительность
Сканирование идёт в фоне через cron, а не при загрузке страниц посетителями. Файрвол - это набор быстрых проверок шаблонов на каждый запрос. Если на очень большом сайте сканирование идёт медленно, исключите папки кеша, резервных копий и node_modules в Settings → Scanning → Scan Exclusions.
Частые вопросы
Bearmor Security действительно бесплатный?
Да. Все функции на этой странице включены: файрвол, 2FA, сканер вредоносного кода, контроль целостности, оповещения об уязвимостях, AI-сводка, мониторинг доступности и все 30 правил защиты. Ничего не нужно разблокировать и вводить ключ.
Какие данные отправляются на bearmor.eu?
Адрес сайта, email администратора для уведомлений, версия плагина, проверки доступности и для AI-сводки - короткая справка с числами, версиями, названиями плагинов и путями к файлам. Пароли, данные посетителей, клиентов и заказов не отправляются. WordPress.org получает запросы контрольных сумм ядра, WPVulnerability.net - названия плагинов и тем с версиями, ip-api.com и ipwho.is - IP-адреса для определения страны.
Можно ли использовать Bearmor вместе с другим плагином безопасности?
Да, но не запускайте одновременно два файрвола или два ограничителя попыток входа. Они делают одну работу дважды, и проблемы сложнее отследить. Если оставляете другой плагин, отключите пересекающиеся функции в одном из них.
Работает ли он с WooCommerce?
Да. 2FA действует только для администраторов, никогда для покупателей. Файрвол пропускает обновления корзины, а правило REST API оставляет Store API открытым. Перед включением прочитайте «Might break» у таких правил, как Disable comments (закрывает отзывы о товарах) или Block ALL new user creation (запрещает создание аккаунтов при заказе).
Какие приложения-аутентификаторы подходят?
Любые с поддержкой стандартных TOTP-кодов, включая Google Authenticator, Microsoft Authenticator, Authy, 1Password и Bitwarden Authenticator.
Я потерял телефон. Как войти?
Введите в поле кода один из 8-символьных резервных кодов. Если их не осталось, попросите другого администратора сбросить вашу 2FA или используйте строку BEARMOR_DISABLE_2FA, описанную в разделе «Если вы потеряли доступ».
Почему папки плагинов не сканируются на вредоносный код?
Код плагинов поддерживают их авторы, а известные дыры проверяет сканер уязвимостей. Поиск шаблонов в плагинах давал в основном ложные тревоги. Bearmor сканирует места, где злоумышленники действительно прячут код: корень WordPress, wp-content, активную тему, mu-plugins и uploads.
Замедлит ли Bearmor сайт?
Заметного влияния нет. Сканирование идёт в фоне, а файрвол добавляет к каждому запросу несколько быстрых проверок.
Что будет, если отключить плагин?
Все задачи по расписанию удаляются, файрвол и 2FA перестают работать, а bearmor.eu получает сообщение, что сайт больше не активен. Правила, записанные в wp-config.php или .htaccess, удаляются, когда вы выключаете их на странице Hardening, поэтому выключите их до деактивации, если они больше не нужны.
Где получить помощь?
Нажмите Get Support в настройках или напишите на форум поддержки WordPress.org. Если хотите, чтобы кто-то следил за сайтом за вас - обновления, мониторинг и очистка после взлома, - смотрите обслуживание WordPress от Bearmor.