У меня есть платформа, состоящая из множества веб-серверов, предоставляющих общий веб-хостинг. Эти серверы работают под управлением Linux и содержат множество Wordpress, osCommerce, Joomla и других платформ веб-сайтов с открытым исходным кодом.
Время от времени (читай: несколько раз в день) один из этих сайтов становится владельцем, внедряется вредоносный код и начинается рассылка спама.
Я уже принял различные меры, чтобы предотвратить это, но похоже, что эти атаки становятся все более и более эскалационными.
Поэтому мой вопрос к другим системным администраторам, занимающимся крупномасштабными платформами общего хостинга: как вы фильтруете (и сообщаете?) Исходящую электронную почту с ваших веб-серверов? Электронное письмо, которое отправляется, когда пользователи, например, PHP использует функцию mail () или SMTP-сервер localhost.
В идеальных условиях (разные сайты работают под разными учетными записями пользователей) вы можете использовать Postfix Policyd. Это позволяет вам регулировать и ограничивать электронную почту для каждого пользователя.
Если вы используете mod_php
и все сайты работают под одним и тем же пользователем Apache, тогда вам придется применить другой подход.
Один из способов - активировать PHP X-Originating-Script
заголовок почты, поместив mail.add_x_header=1
в ваш php.ini. Затем поставьте что-нибудь вроде qpsmtpd для обработки исходящей электронной почты и написания небольшого плагина, который рассматривает X-Originating-Script
заголовок и сохраняет путь сценария отправки (или только его часть имени пользователя) в базу данных, каждый раз увеличивая значение счетчика отправленных писем. Если значение превышает желаемый предел, например «более 100 электронных писем в час», заставьте скрипт возвращать «Извините, ваша квота исходящей почты была временно превышена».
Создать эти скрипты не так уж и сложно, взгляните на примеры qpsmtpd. Однажды я проделал это с Perl, общая длина скрипта составляла около 100-200 строк.
И, разумеется, фильтрация спама также необходима, но я предполагаю, что у вас уже есть SpamAssassin или аналогичный.
Вы можете настроить свои собственные SMTP-серверы, заблокировать SMTP-трафик (и отправку), исходящий с веб-серверов в любое место, кроме этого SMTP-сервера, и заставить своих клиентов настроить его как исходящий MTA. Затем запустите спам-фильтр на этом SMTP-сервере (spamassassin под postfix может работать, хотя я бы отключил фильтры RBL, поскольку они были бы бесполезны), и пусть он отбрасывает все, что кажется спамом.
У этого есть ряд серьезных недостатков, таких как то, что вы можете непреднамеренно незаметно отбросить часть законной почты ваших клиентов, и что некоторый спам, вероятно, все равно будет проходить.
Предполагая, что серверы, рассылающие спам, действительно должны отправлять почту, единственный способ предотвратить это - защитить хосты, чтобы они не перешли в собственность. Это может оказаться чрезвычайно трудным в зависимости от возможности использования версий программного обеспечения, которые вы используете в каждой точке, и от того, насколько легко вы можете исправить ошибки.
Скорее всего, если вы так часто становитесь владельцем, значит, вы принадлежите автоматизированному процессу, использующему публичный эксплойт. В этом случае установка исправлений, вероятно, значительно снизит частоту возникновения этой проблемы.