Защита Sendmail от DoS-атак и спама.
Метки: ddos | Sendmail
Понедельник, 5 октября 2009 г.
Просмотров: 2369
Подписаться на комментарии по RSS
Sendmail имеет несколько опций, которые дают возможность хоть как-то защититься от DoS-атаки. Эти опции должны быть определены в файле sendmail.mc:
Define(confCONNECTION_RATE_THROTTLE',43')dnl - максимальное число соединений в секунду. Если частота превышена, дополнительные соединения будут поставлены в очередь (не отброшены).
Define(confMAX_DAEMON_CHILDREN',40')dnl - максимальное число дочерних процессов sendmail. Если это число будет превышено, дополнительные соединения будут поставлены в очередь (не отброшены).
Define(4configSIN_FREE_BLOCKS',100')dnl - если на диске осталось указанное количество блоков, сервер больше не будет принимать сообщения. По умолчанию - 100.
Define(confMAX HEADERS LENGTH', 4024')dnl - максимальный размер заголовка входящего сообщения, в байтах.
Define(confMAX_MESSAGE_SIZE',4194304')dnl - максимальный размер тела входящего сообщения. Значение по умолчанию равно 4 Мб (4 194 302 байта). Не нужно устанавливать слишком маленькое значение, так как оно может быть легко превышено вложениями (attachments).
Защита от спама.
- FEATURE(relaybasedonMX) - разрешает передачу в случае, если МХ-запись домена получателя указывает на нужный узел. Функция основана на том, что крекеру никогда не удастся модифицировать существующие записи сервера DNS.
- FEATURE(relay_hosts_only) - если определена, то в файлах /etc/mail/access и /etc/mail/relay-domains содержатся конкретные имена узлов (или IP-адреса), с которых разрешена передача (relaying).
- FEATURE(acceptunqualifiedsenders) - по умолчанию Sendmail принимает почту от пользователя, e-mail адрес которого не отвечает RFC, то есть почта от пользователя petr принята не будет, а если пользователь укажет адрес в правильном формате, к примеру petr@test.net, тогда у него проблем с отправкой сообщения не будет. Если данная опция включена, то разрешается обработка почты с адресов, не сообразных RFC.
- FEATURE(acceptunresolvabledomains) - позволяет принимать почту для доменов, существование которых не удалось подтвердить с помощью DNS. Если функция включена, то через сервер можно отправить сообщение для несуществующего домена. Употребление данной функции оправданно, если DNS-серверы настолько загружены, что применение данной функции явно замедляет обработку почты.
- FEATURE(dnsbl) - опция позволяет отбрасывать адреса, находящиеся в черном списке на http://mail-abuse.org. Данное удовольствие платное, поэтому ниже будет рассмотренно несколько бесплатных альтернатив.
- FEATURE(blacklist_recipients) - включает блокировку почты к/от адресов, указанных в базе данных Access.
База данных access, упомянутая в предыдущей опции, - это текстовый файл (обычно /etc/mail/access), позволяющий контролировать пользователей, которые могут получить доступ к почтовому серверу. Каждая запись состоит из узла, IP-адреса (частичного или полного) и одного из действий, перечисленных ниже:
- REJECT - узлу запрещено даже подключаться к почтовому серверу
- DISCARD - принять сообщение, но одновременно же его удалить (отправитель будет думать, что сообщение удачно отправлено).
- RELAY - позволяет передавать почту третьей стороне.
- ОК - принять сообщение.
- Сообщение об ошибке - пользовательское, совместимое с RFC 821, сообщение об ошибке.
К примеру:
1.2.3.4 REJECT spammer.com <http://spammer.com> 550 We do not accept mail form your domain
Данный файл содержит три правила. В первом случае почта от пользователя petr@trusted.net будет принята. Во втором случае запрещается узлу с адресом 1.2.3.4 подключаться к серверу, а в третьем - запрещается передача и сообщается пользователю, что не принимается почта с его домена.
После создания/редактирование файла /etc/mail/access можно сделать из него базу данных access:
Всё - изменения вступили в силу. Даже не надо перезагружать sendmail.
Тоже желательно установить опцию PrivacyOptions в sendmail.cf, запретив тем самым употребление команд VRFY и EXPN: