Вопрос или проблема
Я обращаюсь к вам, потому что в течение последних нескольких месяцев я испытываю проблемы с моим самодельным веб-сервером и моими сайтами на WordPress.
Я использую последние версии Debian, Nginx и PHP 8.2 с FPM. Для управления моими сайтами я использую ISPConfig, который был установлен с помощью автоматического скрипта установки, доступного по адресу https://get.ispconfig.org.
В течение нескольких недель все сайты на WordPress, размещенные на моем сервере, многократно подвергались взлому с использованием одного и того же метода:
• Многочисленные разные IP-адреса отправляют GET, а затем POST-запросы к различным PHP-файлам WordPress (wp-cron, wp-load);
• На корневых каталогах сайтов создаются файлы PHP с случайными именами, такими как “bdb7871b1c3c28ad1a33ea14cc307cd1.php”, и к ним отправляются многочисленные POST-запросы;
• Эти PHP-файлы впоследствии удаляются;
• Некоторые PHP-файлы WordPress изменяются для вставки вредоносного кода (часто разные файлы каждый раз – в плагинах или темах);
• Создаются учетные записи администратора, посты и комментарии.
В моем файле wp-config.php константа define(‘DISALLOW_FILE_EDIT’, true); установлена корректно. Пароли систематически изменяются на сложные, а имена пользователей администратора также модифицируются.
Я использую плагины “Wordfence” и “Malcare” для защиты этих сайтов. Инфекции всегда обнаруживаются ретроспективно платной версией “Malcare” после того, как сайт уже взломан. Malcare может идентифицировать измененные файлы и восстановить их до исходного состояния, удалив вредоносный код.
Эти проблемы продолжаются уже несколько месяцев, и я не смог их устранить.
Хотя “Malcare” дезинфицирует сайты каждый раз, они снова подвергаются заражению через несколько дней или даже часов, всегда через тот же процесс.
Я подозреваю, что неверная конфигурация в Nginx или PHP позволяет выполнять вредоносный код. Я приложил конфигурацию виртуального сервера Nginx для одного из моих сайтов (они все идентичны):
Есть ли у вас идеи, как решить эту проблему, или какие-либо предложения, которые могут помочь мне с ее устранением…
С уважением,
Ответ или решение
Управление и защита самохостинговых WordPress-сайтов являются сложной задачей, особенно когда дело доходит до обеспечения безопасности и предотвращения атак. Разрешите мне предложить комплексное понимание теории безопасности WordPress, привести практически ориентированные примеры и показать, как вы можете применить их на практике в вашем конкретном случае.
Теория
Безопасность самохостингового WordPress-сайта обычно зависит от трёх главных компонентов: безопасность сервера, безопасность WordPress и безопасность плагинов и тем. Слабое место в любом из этих компонентов может стать причиной успешной атаки. В вашем случае использование последних версий Debian, Nginx и PHP 8.2 с поддержкой FPM, а также управление различными сайтами с помощью ISPConfig, является положительной практикой. Тем не менее, даже при наличии самых последних версий программного обеспечения, могут существовать неочевидные уязвимости или неверные конфигурации, которые могут быть скомпрометированы.
Примеры
-
Атаки посредством GET и POST запросов: Это типичный способ эксплуатации, используемый для проверки масштаба существующих уязвимостей. Ваши упоминания о том, что атака начинается с множества различных IP-адресов, подразумевают распределенную атаку. Такое поведение характерно для ботнетов, которые ищут конкретные точки входа в систему.
-
Создание и последующее удаление PHP-файлов: Это свидетельствует о том, что злоумышленники получают доступ к вашему серверу и могут исполнять произвольные команды на PHP. Механизм состоит в создании временных файлов, используемых для последующего перехвата и выполнения вредоносного кода.
-
Модификация файлов и создание администраторских аккаунтов: Это явный признак того, что атака прошла стадию первичного доступа и теперь зловред пытается закрепиться и получить максимальную степень контроля.
Применение
Чтобы эффективно справиться с текущей ситуацией, потребуется пошаговое внедрение следующих стратегий:
-
Конфигурация Nginx и PHP: Интернет-серверы и среды выполнения должны быть правильно настроены для минимизации потенциальных векторов атаки. Присмотритесь к вашей конфигурации Nginx (ссылка на Pastebin), чтобы убедиться, что там нет разрешений для выполнения вредоносного кода. Убедитесь, что директивы
open_basedir
,disable_functions
,expose_php
установлены в соответствии с лучшими практиками безопасности. -
Укрепление WordPress: Обязательно используйте безопасные методы авторизации. Помимо
DISALLOW_FILE_EDIT
, стоит также рассмотреть возможность использования строгих правил файловой системы, которые ограничивают или исключают возможности записи во все папки, кромеwp-content/uploads
. -
Защита на уровне сети: Проверьте ваши брандмауэрные и доступные сетевые правила. Настройте блокировку IP на сетевом уровне для подозрительных адресов.
-
Обнаружение и реагирование: Хотя у вас установлены Wordfence и Malcare для обнаружения угроз, также рассмотрите возможность использования сервисов облачного резервного копирования и возврата на предыдущие состояния на случай критических атак.
-
Обновление и поддержка плагинов и тем: Старые версии тем и плагинов могут содержать неустранённые уязвимости. Следите за их актуальностью и избегайте использования ненадёжных и редко обновляемых компонентов.
-
Мониторинг и аудит: Настройте логирование всех событий с уровнем доступа, чтобы иметь возможность анализа и выявления подозрительного поведения в реальном времени.
-
Образовательные меры: Обучите лиц, ответственных за администрирование сайтов, вопросам кибергигиены. Пользователи должны быть осторожны с сетевыми ресурсами и следовать правилам строгой аутентификации.
Ваша ситуация может потребовать специфической консультации эксперта по кибербезопасности, который после углублённого аудита может предоставить ценный эксклюзивный анализ уязвимостей именно вашего окружения. Необходимо помнить, что безопасность – это процесс, а не конечное состояние, который требует регулярного улучшения и адаптации под новые угрозы.