Спам-рассылки на VPS могут появиться внезапно: уязвимость в CMS или неаккуратная настройка — и сервер начинает рассылать письма без вашего ведома. Антивирус не всегда помогает, поэтому важно уметь самостоятельно находить и останавливать такие скрипты. В материале покажем, как это сделать, и что предпринять, чтобы ситуация не повторилась.
Введение
Рассылка спама с VPS — одна из самых неприятных проблем для владельца сайта. Во-первых, сервер может попасть в чёрные списки, а ваши легитимные письма перестанут доходить до адресатов. Во-вторых, это признак уязвимости: злоумышленники уже нашли лазейку и используют ваш сайт в своих целях.
Даже если установлен антивирус или системы мониторинга, вредоносный скрипт может оставаться незамеченным. Поэтому системному администратору или владельцу проекта нужно уметь искать такие скрипты вручную, анализировать логи и оперативно устранять проблему.
Логирование PHP-почты
Первый шаг — включить логирование вызовов функции mail() в настройках PHP. Это позволит отследить, какой именно скрипт отправляет письма.
В файле /etc/php.ini добавьте или проверьте строки:
mail.add_x_header = On
mail.log = /var/log/phpmail.log
После этого все исходящие письма будут помечаться заголовком X-PHP-Originating-Script, где указывается UID пользователя и путь к скрипту.
Если отдельный лог не настроен, можно смотреть идентификаторы писем в очереди почтового сервера:
- Для Postfix:
postcat -q <id> | grep X-PHP-Originating-Script
- Для Exim:
exim -Mvh <id> | grep X-PHP-Originating-Script
- Для Sendmail:
cat /var/spool/mqueue/<id> | grep X-PHP-Originating-Script
Так вы быстро выясните, какой файл отвечает за рассылку.
Поиск заражённых файлов
Допустим, в логах обнаружен подозрительный файл erfa3as.php. Следующий шаг — найти его местоположение:
find /var/www/username -name erfa3as.php
Здесь username — это пользователь, от имени которого выполняется скрипт. Найденный файл нужно изучить. Чаще всего это обфусцированный PHP-код, отвечающий за массовую рассылку писем.
Важно не просто удалить файл, а понять, каким образом он попал на сервер. Если это «дыра» в CMS или плагине, то без обновления или исправления проблемы вредоносный код вернётся.
Закрытие уязвимостей
После удаления вредоносного файла необходимо:
- обновить CMS и плагины до актуальных версий;
- проверить права доступа к файлам и директориям;
- убедиться, что загрузка файлов ограничена по типу (например, нельзя загрузить PHP вместо изображения);
- включить файрвол и настроить базовые правила безопасности;
- настроить антивирусную проверку и мониторинг изменений файлов.
Эти меры значительно снижают риск повторного заражения.
Дополнительные меры защиты
Когда вредоносный скрипт удалён, основная угроза вроде бы устранена. Но если оставить систему в прежнем виде, проблема вернётся. Поэтому важно выстроить многоуровневую защиту и не ограничиваться точечными действиями.
Первое, о чём стоит подумать, — это разделение сайтов на разные учётные записи. Если все проекты на сервере работают под одним пользователем, отследить источник заражения и контролировать активность становится крайне сложно. Когда же у каждого сайта своя учётная запись, администратор может быстро понять, какая именно площадка скомпрометирована, и локализовать проблему, не затрагивая остальные проекты.
Второй важный момент — ограничение исходящей почты. В панелях администрирования или напрямую в MTA можно настроить лимиты на количество писем, которые может отправить конкретный пользователь или сайт за час. Это не только мешает злоумышленникам организовать массовую рассылку, но и снижает риск попадания сервера в спам-листы, если вредоносный скрипт всё же пробьётся сквозь защиту.
Не менее полезен мониторинг. Инструменты вроде Fail2Ban позволяют автоматически реагировать на подозрительные действия: блокировать IP-адреса, с которых идёт перебор паролей, или останавливать нетипичную активность. В связке с системами журналирования это даёт возможность оперативно выявлять атаки ещё на раннем этапе.
И, наконец, обязательная привычка администратора — регулярно проверять логи и делать бекапы. Логи дают понимание, что происходит на сервере прямо сейчас, а резервные копии обеспечивают спокойствие: даже если атака окажется успешной, восстановить работоспособность можно будет за считанные минуты. Практика показывает, что те, кто выстраивает системную работу с резервным копированием, куда быстрее выходят из кризисных ситуаций, чем владельцы сайтов, которые вспоминают о бекапе только после взлома.
Таким образом, дополнительная защита — это не набор мелких приёмов, а целая стратегия. Чем внимательнее администратор относится к разделению доступа, контролю отправки почты, мониторингу активности и сохранности данных, тем меньше шансов у злоумышленников использовать VPS в своих целях.
Заключение
Обнаружение и блокировка спам-скриптов — задача, которую важно уметь выполнять даже при наличии антивируса. Логи PHP и почтовых серверов дают полную картину: какой файл и какой пользователь рассылает спам. Но удалить вредоносный скрипт недостаточно — нужно закрыть уязвимости в CMS, пересмотреть права доступа и настроить защиту на уровне сервера.
Хорошая практика — регулярные обновления, мониторинг логов и грамотная настройка VPS. Это позволит не только быстро выявить проблему, но и предотвратить её появление в будущем.
Читайте в блоге:
- Exim и ACL: как настроить защиту от спама на VPS
- Как настроить защиту от спама через DNSBL в ISPmanager
- Как не попасть в спам при рассылке: гайд по доставке писем в 2025 году