□ ConnectionRateThrottle — максимальное количество открываемых соединений в секунду. По умолчанию этот параметр равен 3, и повышать его без особой надобности не стоит, только если вы уверены в производительности сервера.
8.5. Почтовая бомбардировка
С почтовой бомбардировкой я встретился первый раз почти 10 лет назад. Однажды я в чате оставил свой E-mail (до этого я никогда не светил своим адресом), и как назло в этот момент там сидел начинающий хакер, который просто ради шутки забросал меня почтовыми бомбами.
Что такое почтовая бомба? Это простое письмо с бесполезным содержимым любого размера. Хакеры забрасывают свою жертву такими посланиями, чтобы переполнить ящик и лишить его возможности принимать другие сообщения. Классическая задача DoS, только в отношении почтового ящика.
На первый взгляд, необходимо просто увеличить размер ящика или убрать лимит вовсе. Это самое неверное решение, поэтому забудьте про него. Если ящик не будет иметь предела, то хакер сможет произвести атаку DoS на сервер.
Почтовые сообщения — единственный способ закачать информацию на сервер. Когда злоумышленник отправляет E-mail-письмо, оно сохраняется там, пока не будет скачано пользователем. Слишком большое количество информации займет все пространство на жестком диске, и сервер больше не сможет принимать сообщения ни на один из почтовых ящиков.
Самая худшая ситуация при почтовой бомбардировке может возникнуть, когда почтовые ящики располагаются в директории по умолчанию (раздел /var). Если этот раздел будет переполнен, то сервер не сможет больше записывать в него информацию. В разделе /var хранятся еще и журналы безопасности. Если они не смогут пополняться, то сервер окажется полностью недоступным.
Ограничения на используемое под хранение писем пространство необходимо. Лучше потерять контроль над одним почтовым ящиком, чем над всем почтовым сервером.
От почтовой бомбардировки защититься нельзя, но можно попытаться усложнить задачу злоумышленника. Для этого нам понадобятся параметры, которые мы рассматривали в разд. 8.4.7. Помимо этого, желательно ограничить максимальный размер сообщения с помощью параметра MaxMessageSize до приемлемых пределов. Таким образом, злоумышленнику придется направлять на сервер множество маленьких писем вместо нескольких больших.
8.6. Спам
Проблема XXI информационного века — рассылка нежелательной корреспонденции. Это действительно болезнь, с которой надо бороться, а существующие методы пока не приносят необходимого результата, и спам отнимает большую часть нашего трафика.
Один из способов борьбы с нежелательной корреспонденцией — запрет серверов, с которых приходит спам. Но те, кто занимаются такими рассылками, находят все новые пути для обхода барьеров, в том числе использование общедоступных или взломанных в Интернете серверов.
Если хакер задействует ваш сервер для рассылки спама, то это грозит следующим:
□ лишние расходы на трафик, если вы оплачиваете каждый гигабайт информации;
□ дополнительная нагрузка на ресурсы. Рассылки в основном массовые и отнимают много процессорного времени, тем самым загружая канал связи.
Но помимо этого, если ваш сервер пару раз разошлет спам, он может попасть в черный список, и тогда вся ваша корреспонденция будет фильтроваться и не дойдет до адресата. Благодаря этому хакер может даже провести атаку DoS на почтовый сервис.
8.6.1. Блокировка приема спама
Прием нежелательной корреспонденции приводит к следующим негативным последствиям:
□ как мы уже говорили, излишние расходы на трафик, которые постоянно увеличиваются;
□ отвлекает внимание сотрудников вашей организации или пользователей сети, пользующихся услугами почтового сервера;
□ спам-сообщения нередко занимают слишком много места, и для их хранения на сервере требуется дополнительное дисковое пространство.
Причин борьбы со спамом намного больше, и я надеюсь, что описанных ваше уже достаточно, чтобы вы начали предпринимать какие-либо меры.
Фильтрация серверов
В sendmail есть возможность фильтровать серверы, с которых приходит нежелательная почта. Для этого лучше всего в файле sendmail.mc добавить строку с запретом. Проблема в том, что для различных версий sendmail эта строка выглядит по-разному:
Версия 8.10:
FEATURE(dnssbl, 'spam.domean.com', ' 550 Mail not accepted from this domain')dnl
Версия 8.11:
HACK('check_dnsbl', 'spam.domean.com', '', 'general', 'reason')dnl
В обеих строках spam.domean.com нужно заменить на адрес домена, с которого рассылается спам, чтобы заблокировать соединение с ним. Этот метод не очень эффективен, потому что были случаи, когда ошибочно блокировались безобидные серверы.
Однажды мой сервер, с которого происходит продажа программного обеспечения, был заблокирован в одном из спам-листов. Это были времена, когда в черные списки попадали и по делу, и просто так. Когда я рассылал своим пользователям их регистрационные ключи, то 10% сообщений возвращалось. Таким образом, некоторые пользователи не могли работать с нашими программами. Такое продолжалось в течение месяца, пока не убедились, что спам-листы перестали быть эффективными, и стали искать другие методы.
Фильтрация сообщений
Более точный метод — блокировка сообщений по их содержимому. Специализированная программа анализирует всю информацию, которая проходит через сервер, и ищет характерные признаки спам-рассылки. Если письмо определяется как спам, то оно удаляется.
Этот способ более эффективный, но по тексту очень сложно определить, является ли письмо рекламной рассылкой. Хакеры постоянно ищут новые пути обхода таких блокировок, поэтому процент фильтрации достаточно невысок. Вы можете настроить программу так, что она будет уничтожать все сообщения, в которых есть слова "купи", "продаю" и тому подобные термины, характерные для спама, но тогда могут быть удалены и необходимые вам письма.
Я не буду советовать никаких программ фильтрации нежелательной почты, потому что не вижу идеального решения. Но если вы захотите использовать подобный способ, то хочу только обратить ваше внимание на программу Spamassassin (http://spamassassin.apache.org/). В ней реализовано множество проверок, которые позволяют достаточно эффективно определять нежелательные сообщения.
Помимо этого, может пригодиться изменение параметра MaxRcptsPerMessage (команда sendmail сервера), который устанавливает максимальное количество получателей сообщения. Если их более 100, то это однозначно указывает на спам. Хотя в некоторых организациях используются почтовые рассылки всем сотрудникам, которые могут содержать до 1000 адресатов. В этом случае может быть уничтожено очень важное письмо, поэтому необходимо, чтобы администраторы отправляли письма не более чем 20 получателям за один раз.
8.6.2. Блокировка пересылки спама
При конфигурации почтового сервиса вы должны сделать так, чтобы злоумышленники не смогли посылать свой спам через ваш сервер. Вам необходимо произвести несколько настроек, чтобы массовая рассылка перестала быть эффективной:
□ по умолчанию протокол SMTP не требует авторизации, поэтому любой пользователь может подключиться к серверу и отправить письмо. Чтобы избежать этого, можно выполнить одно из следующих действий:
• запретить с помощью сетевого экрана подключение к SMTP-порту пользователей, которые находятся вне вашей сети. Эту защиту чаще всего используют провайдеры и администраторы частных или корпоративных сетей. С реализацией этого метода у вас не должно возникнуть проблем, потому что мы уже не раз ее рассматривали;
• разрешать отправку почты только в течение определенного времени (например, 10 минут) после приема почты по протоколу POP3. В момент проверки почты сервер производит авторизацию клиента, и по этим данным может временно создаваться разрешающая запись в сетевом экране (или другим способом) для доступа к SMTP. Теперь в течение 10 минут с этого IP-адреса можно проверять почту;
• использовать авторизацию SMTP. Изначально в стандарте на протокол отправки сообщений нет ничего об идентификации пользователя, поэтому не все серверы поддерживают ее. Но в sendmail и других мощных пакетах есть расширение, которое позволяет сделать авторизацию;
□ запретить отправку слишком большого количества писем с одного и того же IP-адреса. Вполне нормальным числом является 20. Пользователь не должен иметь права посылать более 20 писем за 10 минут;
□ запретить отправку писем большому количеству получателей, список которых может содержаться в поле "CC".
Существуют и другие методы, но даже этих будет достаточно.