SSD Nodes Learn 🎉 VPS от $5.50/мес
Руководства Matt ConnorАвтор: Matt Connor

Что значит жалоба abuse на VPS и как на нее ответить

Узнайте, как обрабатываются жалобы на ваш IP-адрес. Разбираем цепочку уведомлений от провайдера, причины появления abuse-писем и правильный алгоритм действий для защиты VPS.

Что на самом деле представляет собой жалоба на злоупотребления (abuse) на VPS

Жалоба на злоупотребления (abuse complaint) на VPS — это уведомление о сетевом трафике, исходящем с вашего IP-адреса. Оно направляется на контактный адрес для жалоб, опубликованный для данного блока IP-адресов, а затем пересылается вам хостинг-провайдером с установленным сроком для ответа. Опубликованный контакт принадлежит компании, владеющей адресным пространством, поэтому первым человеком, который читает отчет о вашем сервере, почти никогда не являетесь вы. Ваш хостинг-провайдер сопоставляет IP-адрес и метку времени с вашей учетной записью и пересылает уведомление вам.

Это уведомление не является доказательством того, что вы совершили какие-либо действия намеренно. IP-адрес — единственный идентификатор, который есть у отправителя жалобы. Взлом приложения, рассылающего спам в 03:00, генерирует такой же отчет, как и действия человека, отправляющего спам в 03:00. Именно поэтому ваш ответ имеет решающее значение. Вас просят пояснить, что послужило источником проблемы и какие меры вы предприняли.

Кто отправляет отчет и как он попадает на ваш хост

Каждый блок публичных IP-адресов зарегистрирован в региональной интернет-регистратуре (RIR): RIPE NCC, ARIN, APNIC, LACNIC или AFRINIC. Каждая регистрация содержит контакт для сообщений о злоупотреблениях (abuse contact), куда и направляются отчеты. Вы можете прочитать ту же запись, которую видит отправитель:

whois 203.0.113.10 | grep -iE 'netname|descr|abuse'

Записи RIPE содержат объект abuse-c: с полем abuse-mailbox:. Записи ARIN содержат OrgAbuseEmail:. Любой адрес, указанный там, получает жалобу; именно поэтому отчет о вашем сервере приходит на ваш хост, а не в ваш почтовый ящик.

Сторона, подающая жалобу, обычно является автоматизированной системой. Почти все случаи можно свести к четырем категориям:

  • Автоматизированные сканеры и honeypot-системы. Система фиксирует попытку подключения с вашего IP и отправляет отчет с приложенным фрагментом лога.
  • Механизмы обратной связи (FBL), управляемые почтовыми провайдерами. Получатель нажимает кнопку «Спам», и копия сообщения возвращается в формате ARF (abuse reporting format) — структурированном почтовом формате, предназначенном для машинной обработки.
  • Агенты по защите авторских прав. Они отслеживают торрент-раздачи или сканируют публичные URL, после чего отправляют уведомление DMCA (digital millennium copyright act) с указанием файла, вашего IP и метки времени в UTC.
  • Операторы черных списков и сетевые инженеры, которые отправляют короткое письмо с выдержками из своих логов, подтверждающими нарушение.

Поскольку большинство первичных отчетов генерируются автоматически, споры в ответ не приносят результата. Результат дает только фактология: что было запущено и когда процесс был остановлен.

Почему уведомление приходит с крайним сроком

Ваш хост также является арендатором. Его адресное пространство находится за апстрим-провайдерами и внутри баз данных репутации, которыми управляют другие лица. Запросы, оставленные без ответа, повышают рейтинг угрозы для всего блока адресов, а не только для вашего конкретного IP, поэтому указанный крайний срок — это давление, переданное вам по цепочке. Ознакомьтесь с временным окном, указанным в уведомлении, и отнеситесь к нему как к реальному.

Когда по делу, оставленному без ответа, предпринимаются действия, это обычно означает null route, при котором трафик к данному IP отбрасывается на уровне апстрима, либо приостановку работы инстанса. Триггером обычно выступает отсутствие ответа, а не само исходное событие. Что именно делает конкретный хост и когда, прописано в его собственной политике и в самом уведомлении. Эти два документа — единственные, на которые стоит ссылаться, поэтому не руководствуйтесь тем, что утверждают на форумах о допустимых действиях у провайдера.

Исходящий спам: почему мой VPS рассылает почту, которую я не отправлял

Отчет указывает на то, что ваш IP-адрес доставил почту в спам-ловушку или получатели пометили ваши письма как нежелательные. В большинстве случаев источником является одна из четырех причин: веб-приложение с формой отправки почты без ограничения частоты запросов, скомпрометированные SMTP-учетные данные, используемые злоумышленниками, почтовый сервер, выполняющий релей для сторонних хостов, или взломанная учетная запись в приложении для рассылок. Начните с очереди сообщений, так как скомпрометированный отправитель обычно виден там:

sudo postqueue -p | tail -n 20
sudo postqueue -p | grep -c '^[0-9A-F]'

Очередь, содержащая тысячи сообщений на адреса, которые вы не узнаете, означает, что сервер рассылает спам. Далее выясните, кто прошел аутентификацию:

sudo grep -o 'sasl_username=[^ ]*' /var/log/mail.log | sort | uniq -c | sort -rn | head

Учетная запись, количество отправлений которой значительно превышает остальные, является скомпрометированной. Если файл /var/log/mail.log отсутствует, значит, в системе не установлен rsyslog, и те же строки находятся в журнале: sudo journalctl -t postfix --since '2 days ago'.

Если аутентификация не выполнялась, отправителем является локальный процесс. Проверьте правила релея и открытые соединения:

sudo postconf -n | grep -E 'mynetworks|inet_interfaces|relay'
sudo ss -tnp state established '( dport = :25 )'

Стандартный Postfix в Debian или Ubuntu не выполняет релей для посторонних. Он становится открытым релеем, если параметр mynetworks был вручную расширен до целой подсети хостинга, так как после этого всем остальным арендаторам в этой подсети разрешается отправка через ваш сервер. Любое соединение с портом 25, принадлежащее процессу, который не является вашим почтовым сервером, — это скрипт, отправляющий почту самостоятельно; именно так обычно действует скомпрометированное PHP-приложение.

Остановите поток перед началом расследования и сохраните доказательства:

sudo systemctl stop postfix
sudo tar czf /root/mailqueue.tgz -C /var/spool postfix

Команда sudo postsuper -d ALL очищает очередь, но она также уничтожает записи о том, что было отправлено, поэтому сначала сделайте копию. Затем смените все учетные данные, которые использует приложение, обновите само приложение и поищите следы, оставленные злоумышленником. Инцидент со спамом и компрометация сервера в большинстве случаев являются одним и тем же событием, поэтому выполните действия по восстановлению взломанного VPS, а не просто очищайте очередь.

Сканирование портов и перебор паролей: как выглядит скомпрометированный контейнер

Этот отчет содержит строки из логов другого оператора, и они выглядят так:

sshd[2841]: Invalid user admin from 203.0.113.10 port 51992

Причина почти всегда кроется в сервисе, который, как вы полагали, был защищен брандмауэром. Часто это Docker. Публикация порта с помощью -p 6379:6379 записывает правила в цепочки DOCKER-USER и nat, и они обрабатываются до правил ufw, поэтому ufw deny 6379 не блокирует их, и база данных отвечает всему интернету.

sudo ss -ltnp
sudo iptables -S DOCKER-USER
docker ps

Любой сервис в ss -ltnp, привязанный к 0.0.0.0 или [::], прослушивает публичный адрес. Привязывайтесь к адресу обратной петли, -p 127.0.0.1:6379:6379, если доступ к сервису нужен только самому хосту. Вопрос о том, где именно должна находиться база данных, — это отдельное решение, и в запуске базы данных в Docker или на хосте рассматриваются плюсы и минусы этого подхода.

Чтобы узнать, сканирует ли ваш сервер сеть прямо сейчас:

sudo ss -tnp state syn-sent

Множество полуоткрытых соединений с различными адресами назначения означают, что выполняется исходящее сканирование. Лог ядра, заполняющийся сообщениями nf_conntrack: table full, dropping packet, подтверждает это с другой стороны: какой-то процесс открывает гораздо больше соединений, чем требуется для работы этого сервера.

Пересоберите скомпрометированный контейнер вместо попыток его очистки. Вы не сможете доказать, что еще было изменено внутри, поэтому выполните пересборку из доверенного образа, восстановите только доверенные данные и смените ключи, которые хранились в этом контейнере.

Уведомления об авторских правах: какой файл был фактически просмотрен

DMCA-уведомление содержит URL или info-hash торрента, ваш IP-адрес и временную метку в формате UTC. Почти все случаи вызваны двумя причинами: директорией с медиафайлами, которую веб-сервер отображает публично, или торрент-клиентом, который продолжает раздачу после завершения загрузки.

Сопоставьте временную метку с журналом доступа. В комбинированном формате логов nginx статус находится в 9-м поле, а путь запроса — в 7-м:

sudo grep '14/Aug/2026:03' /var/log/nginx/access.log | awk '{print $9, $7}' | sort | uniq -c | sort -rn | head

Прежде чем делать вывод, что контент не был передан, проверьте время. Уведомление составлено в UTC, а ваши логи используют часовой пояс сервера. Смещение на несколько часов заставит вас искать в неверном временном интервале и приведет к ложноотрицательному результату:

timedatectl
sudo timedatectl set-timezone UTC

Затем устраните причину. Удалите или ограничьте доступ к файлу, отключите листинг директорий с помощью autoindex off; в блоке location конфигурации nginx и привяжите торрент-клиент к интерфейсу, который не является публичным. В ответе укажите название файла, внесенные изменения и время их применения. Если вы считаете, что сама претензия необоснованна, это юридический вопрос между вами и отправителем; в уведомлении указано, как его оспорить. Ваш хостинг-провайдер не является стороной, принимающей решение, поэтому тикет с аргументами по существу дела не принесет результата.

Блокировки в списках: почему перестала уходить почта

Часто это происходит без уведомлений о недоставке. Исходящая почта просто перестает приниматься, а в сообщении о возврате (bounce) указывается причина:

554 5.7.1 Service unavailable; Client host [203.0.113.10] blocked using zen.spamhaus.org

Проверьте наличие в списке, перевернув четыре октета IP-адреса и отправив запрос к зоне списка:

dig +short 10.113.0.203.zen.spamhaus.org

Пустой ответ означает, что вас нет в этом списке. Ответ в диапазоне 127.0.0.x означает, что вы в списке, а последний октет указывает на конкретную подкатегорию. Ответ в диапазоне 127.255.255.x означает, что в запросе было отказано, обычно из-за использования крупного публичного резолвера, которые бесплатные сервисы не обслуживают. Повторите запрос через собственный резолвер сервера, чтобы получить корректный результат.

Исключение из списка (delisting) выполняется на сайте оператора списка, а не через вашего хостинг-провайдера. Это имеет смысл только после устранения причины, так как ловушка, зафиксировавшая вас, снова внесет вас в список при отправке следующего письма. Есть еще два фактора, влияющих на доставку почты. Ваша PTR-запись (обратное DNS-имя для IP-адреса) управляется хостинг-провайдером: попросите их настроить запись, которая разрешается обратно в тот же адрес, и используйте это имя в качестве HELO. Кроме того, IP-адрес, полученный от предыдущего владельца, может иметь «историю», которую создали не вы; стоит уточнить этот момент, прежде чем тратить неделю на перенастройку DNS. Правильная настройка записей SPF (sender policy framework) и DKIM (domainkeys identified mail), а также политики DMARC, связывающей их воедино, подробно описана в руководстве по запуску собственного почтового сервера на базе Mailcow.

Инфраструктура ретрансляции, где жалобы на спам — часть работы

Если вы управляете Tor exit node, публичным VPN или прокси-сервером для других пользователей, жалобы на трафик, который вы не генерировали, являются обычными эксплуатационными расходами. Ваша задача — сделать так, чтобы сервер выглядел как ретранслятор, а не как взломанная машина. Установите для IP-адреса обратную DNS-запись с описательным именем, разместите на 80 порту страницу с уведомлением, объясняющим назначение этого адреса, оперативно отвечайте на жалобы, используя то же объяснение, и применяйте политики вашего ПО для блокировки портов, генерирующих больше всего жалоб. Запускайте такой сервис на отдельном IP-адресе и, по возможности, в отдельном экземпляре, чтобы null route для этого адреса не привел к отключению ваших веб-приложений. Перед запуском проконсультируйтесь с хостинг-провайдером, так как правила различаются в зависимости от компании и иногда от конкретного блока IP-адресов; это вопрос к провайдеру, а не для обсуждения на форумах. В Running a Tor exit node on a VPS подробно описаны политика выхода и страница с уведомлением.

Как отвечать на тикеты, чтобы их закрывали

  • Укажите контактные данные, которые кто-то действительно читает. Согласно RFC 2142, адреса abuse@ и postmaster@ в вашем домене — это первое, куда обращаются отправители жалоб. Разместите этот почтовый ящик на другом сервере, а не на том, который он защищает, так как заблокированный инстанс не сможет доставить уведомление о собственной блокировке.
  • Храните логи достаточно долго, чтобы успеть дать ответ. На жалобу о сетевой активности двенадцатидневной давности невозможно ответить, если ротация логов происходит раз в неделю. Проверьте journalctl --disk-usage, установите MaxRetentionSec=90d в /etc/systemd/journald.conf, а затем выполните sudo systemctl restart systemd-journald. Логи веб-сервера и почты ротируются по собственному расписанию в /etc/logrotate.d/.
  • Используйте UTC на сервере, чтобы временные метки в отчетах совпадали с метками в ваших логах без необходимости вычислений.
  • Разделяйте сервисы, на которые поступают жалобы, и критически важные ресурсы. Почта на одном адресе, веб-приложение на другом, сервисы ретрансляции на отдельном инстансе. Меры, принятые в отношении IP-адреса, затрагивают всё, что находится за ним.
  • Отвечайте в установленные сроки, даже если расследование еще не завершено. Промежуточный ответ с указанием времени — это полноценный ответ для первого этапа.

Первый ответ, который закрывает большинство тикетов, должен быть кратким и конкретным:

Received, thank you. Confirmed at 09:14 UTC.
Source: a contact form in our web app that allowed unauthenticated sending.
Action: form disabled, Postfix stopped, all SMTP credentials rotated 09:31 UTC.
Evidence: mail queue and logs preserved for 90 days if you need them.
Next: patched app redeployed by 18:00 UTC today. I will confirm here.

Сообщите то, что вам известно, и то, что еще предстоит выяснить. Молчание воспринимается как признак заброшенного сервера, а для таких серверов предусмотрена процедура эскалации. Относится ли эта работа к вашей зоне ответственности, зависит от приобретенного продукта; в этом заключается практическая разница между управляемым и неуправляемым VPS-хостингом. На неуправляемом тарифе арендатор сам выполняет функции службы безопасности.

Как это выглядит при успешном решении

Жалоба на злоупотребление (abuse) — это прежде всего проблема маршрутизации. Сообщение об IP-адресе поступает стороне, ответственной за этот адрес, и пересылается лицу, которое может устранить проблему. Вы контролируете свой контактный адрес, срок хранения логов, распределение сервисов по IP-адресам и скорость ответа. Если настроить эти параметры правильно, большинство уведомлений закрываются после первого же обмена сообщениями. Те же привычки решают более широкий вопрос о том, безопасен ли VPS-хостинг, поскольку сервер, за которым никто не следит, — это именно тот сервер, который в итоге оказывается в чужих логах.

FAQ

Означает ли жалоба на злоупотребления, что мой VPS взломан?

Не обязательно, но это первое, что нужно проверить. Отчет лишь подтверждает, что с вашего IP-адреса исходил трафик. Исходящий спам и сканирование портов гораздо чаще происходят из-за скомпрометированного приложения или контейнера, чем из-за действий владельца учетной записи. Поэтому в первую очередь проверьте очередь почтовых сообщений с помощью sudo postqueue -p и прослушиваемые сокеты с помощью sudo ss -ltnp. Уведомления о нарушении авторских прав и попадании в черные списки имеют другой характер: они обычно указывают на то, что вы запустили намеренно.

Сколько времени у меня есть на ответ по уведомлению о злоупотреблении?

Срок указан в полученном вами уведомлении, он зависит от хостинг-провайдера и категории нарушения. Уведомления о нарушении авторских прав и попадании в спам-ловушки обычно имеют самые короткие сроки. Считайте указанное время реальным и отправьте краткий промежуточный ответ до его истечения, даже если вы все еще выясняете причину. Для сотрудника, работающего с тикетом, важно, что проблемой занимается человек и что вредоносный трафик остановлен.

Мой IP находится в черном списке. Может ли хостинг-провайдер удалить его оттуда?

Нет. Исключение из списка выполняется оператором этого списка на его собственном сайте, и ваш хостинг-провайдер не имеет доступа к их базе данных. Ваш хостинг-провайдер управляет PTR-записью, то есть обратным DNS-именем для вашего IP-адреса; это отдельный запрос, который стоит отправить одновременно. Устраните проблему с отправкой почты перед тем, как запрашивать исключение из списка, иначе спам-ловушка, которая вас заблокировала, снова внесет вас в список при следующем сообщении.

Обязан ли я сообщать хостинг-провайдеру, что именно произошло?

Вы должны сообщить достаточно информации для закрытия тикета: что было источником и когда активность прекратилась. Вы не обязаны предоставлять отчет о криминалистическом анализе или данные ваших пользователей. Расплывчатый ответ хуже, чем краткий, так как сотрудник, который не видит, что изменилось, не имеет оснований считать инцидент исчерпанным.

Могу ли я игнорировать автоматический отчет от сканера?

Нет. Автоматические отчеты учитываются, и повторяющиеся жалобы на один IP повышают рейтинг угрозы для всего блока адресов вашего хостинг-провайдера, что превращает мелкий инцидент в серьезную проблему. Ваш ответ может состоять из одного абзаца. Автоматизированная система обычно его не читает, но его читает сотрудник хостинг-провайдера, работающий с тикетом, и именно этот человек решает, что произойдет с вашим экземпляром сервера.