Короче говоря, недавно у нас была взломана учетная запись на одном из общих хостов, проблема была решена, но затронутая учетная запись все еще рассылается спамом с более чем миллионом запросов в день к определенному файлу.
Поскольку компрометирующий файл пропал, все запросы выполняются минималистичной страницей 404 Apache, вес которой составляет около 521 байт. Проблема в том, что 512 байт * 1 миллион запросов не только сказываются на производительности наших серверов, но и расходуют гигабайты пропускной способности в день.
Мы кратко попытались использовать RewriteRule и запретить все запросы к evil.php, но это показало, что запрещенная страница оставляет нас с того места, где мы начали.
В идеале нам нужно просто отбросить запросы к «evil.php» и ничего не вернуть. По сути, остановить Apache от ответа. Возможно ли это и как?
редактировать
Допустим, для этого упражнения нет доступа к оболочке, и все решения должны быть реализованы через интерфейс, подобный cPanel. Хотя в данном случае это не так, наша свобода вносить изменения в конфигурацию сервера невелика, помимо стека LAMP, DNS (привязка) и конфигурации почты.
mod_security, действие «падение».
[заполнить символы для ошибки сервера]
Вы можете создать файл evil.php, разместить его на apache и вернуть пустой контент (аналогично предложению Маркуса). В то же время вы можете сохранить запрашивающий IP в текстовом файле. Затем этот текстовый файл может быть прочитан сценарием, чтобы добавить все эти IP-адреса в правило iptables, чтобы отбросить все будущие запросы. Таким образом вы можете собрать все запрашивающие IP-адреса и остановить их.
Что, если вы замените evil.php файлом нулевой длины? По крайней мере, в моей установке Apache 2.2, которая занимает всего около 206 байт (заголовки HTTP). 404 занимает около 500 байт. Это, по крайней мере, сократит ваш трафик вдвое. Чтобы узнать о более расширенных черных списках, посетите:
http://perishablepress.com/press/2009/02/03/eight-ways-to-blacklist-with-apaches-mod_rewrite/