Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Защита Sendmail от DoS-атак и спама.

Рубрика: Безопасность -> Защита сервисов
Метки: |
Понедельник, 5 октября 2009 г.
Просмотров: 7299
Подписаться на комментарии по 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, сообщение об ошибке.

     К примеру:

Petr@trusted.net <mailto:petr@trusted.net>  OK

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:

Makemap  hash  /etc/mail/access.db  <   /etc/mail/access

     Всё - изменения вступили в силу. Даже не надо перезагружать sendmail.

Тоже желательно установить опцию PrivacyOptions в sendmail.cf, запретив тем самым употребление команд VRFY и EXPN:

О   PrivacyOptions=authwarnings,noexpn,novrfу

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)