Главная страница

Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69


Скачать 3.69 Mb.
НазваниеМихаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Дата13.03.2022
Размер3.69 Mb.
Формат файлаpdf
Имя файлаlinux_glazami_xakera_3-e_izd.pdf
ТипДокументы
#394477
страница22 из 35
1   ...   18   19   20   21   22   23   24   25   ...   35
Глава 8
Электронная почта
Для кого-то Интернет — это просмотр сомнительных страниц на WWW, для некоторых
— способ найти соперника или напарника в игре, а многие ис- пользуют сеть для работы или обучения. Но все мы не можем жить без об- щения
, и, несмотря на новые технологии, которые выдумывают для облегче- ния общения (чаты, IRC, ICQ и т. д.), электронная почта жила, живет и будет жить
. Именно с электронной почты начали развиваться сети, и она была од- ним из первых сервисов Интернета.
Лично для меня почтовый клиент стал основной программой, которой я пользуюсь чаще всего. Я веду переписку с читателями, друзьями, начальст- вом и т. д. Так уж получилось, что люди, с которыми я работаю, находятся в
других городах и даже странах. Расстояние до самых ближайших партнеров более
1000 км, а до издательства несколько лет назад было около 1700 км
(сейчас я уже переехал в Питер, и мой дом расположен в паре километров от издательства
). Если раньше это было сопряжено с большими проблемами, то теперь
, благодаря компьютеру и Интернету, я могу, к примеру, жить в теп- лых краях, а выполнять работы для компании, которая находится на Аляске.
Таким образом, легко и сохранить ноги в тепле, и зарабатывать деньги в хо- лодных областях. Я же почему-то пару лет назад, наоборот, переехал из теп- лых краев на север. Не на дальний, а в северную столицу из южной.
Как работает электронная почта (E-Mail)? Рассмотрим основные моменты доставки письма:
1.
Пользователь создает в почтовом клиенте (программе электронной почты) письмо
, указывает получателя и отправляет его почтовому серверу. В на- стоящее время для передачи сообщений чаще всего используются SMTP- серверы
, а для работы с ними — протокол SMTP.
2.
Сервер
, получив письмо, определяет место назначения, то есть имя серве- ра
. Адрес состоит из двух частей: имени пользователя и имени сервера,

Глава
8
272
разделенных между собой знаком @, например, djon@servername.com.
Здесь djon — это имя пользователя, а servername.com — имя сервера.
С
помощью DNS SMTP-сервер узнает IP-адрес сервера (в нашем случае servername.com), которому должно быть доставлено письмо.
3.
Письмо направляется серверу, на котором зарегистрирован получатель.
4.
Получив письмо, сервер servername.com проверяет наличие адресата
(у нас это пользователь djon), и если он присутствует, помещает письмо в
его почтовый ящик. Если указанного пользователя нет, сервер сообщает об этом отправителю, возвращая письмо или его часть.
5.
Пользователь просматривает свой почтовый ящик с помощью почтового клиента и может скачать письмо для чтения.
Описанный процесс похож на работу традиционной почты. Вместо серверов там выступают почтовые отделения, которые сортируют почту в зависимости от адреса назначения и передают письма на почтовое отделение получателя.
Как я уже заметил, для передачи сообщений используется протокол SMTP, разработанный еще на заре становления Интернета. Его функций уже давно недостаточно
, но он не утратил своей актуальности. Многие с удовольствием заменили бы этот протокол чем-нибудь более безопасным, но нынешние сер- веры слишком популярны, чтобы в один миг взять и отказаться от них.
Несколько десятков лет назад для работы с почтой широко использовался протокол
UUCP (UNIX to UNIX Copy, копирование между UNIX-системами).
Но он был слишком сильно привязан к ОС и при этом обладал ограниченны- ми возможностями, поэтому не получил распространения и в настоящее вре- мя практически не используется.
Для приема почты используются три протокола:
ˆ
POP3 — Post Office Protocol v3 (Почтовый протокол), в настоящее время наиболее распространенный протокол приема почты;
ˆ
IMAP4 — существуют две интерпретации этого сокращения: Internet Mes- sage Access Protocol (Протокол доступа к сообщениям в сети Интернет) и
Interactive Mail Access Protocol (Протокол интерактивного доступа к
электронной почте). Этот протокол обладает бóльшими возможностями по сравнению с POP3, например, позволяет управлять сообщениями прямо на сервере, без загрузки текста на компьютер пользователя, а лишь загру- жая заголовки писем;
ˆ
MAPI — Messaging Application Programming Interface (Интерфейс при- кладного программирования электронной почты), который используется в
сетях Microsoft на серверах Microsoft Exchange.

Электронная
почта
273
Кроме того, сейчас очень распространены базирующиеся в WEB системы просмотра почты, когда пользователи вовсе не скачивают почту на свой ком- пьютер
, а просматривают ее, используя браузер.
Самым распространенным средством доставки почты в Linux является самая старая программа sendmail. Она обладает большими возможностями, но доста- точно сложна в использовании. Из-за почтенного возраста в сервере sendmail сохранилась и возможность передачи по протоколу UUCP, которая сейчас ис- пользуется крайне редко.
Принцип работы sendmail достаточно прост. Получив письмо от клиента, программа определяет получателя и заносит необходимую для доставки слу- жебную информацию в заголовок письма. Дальнейшие действия зависят от настроек
. Например, письмо может быть отослано немедленно или помещено в
хранилище. Через определенные промежутки времени накопившиеся пись- ма отправляются своим адресатам.
8.1.
Настройка
sendmail
Основной конфигурационный файл, который вам понадобится —
/etc/sendmail.cf. Сервер sendmail имеет плохую репутацию в связи со сложно- стью настройки. Действительно, если лишь посмотреть на размер файла
/etc/sendmail.cf, то становится жутко: это 32 Кбайт (более 1000 строк). А если заглянуть внутрь файла, то становится еще страшнее от непонятных ключей и
директив.
В
файле конфигурации sendmail все параметры сгруппированы по разделам.
Разбиение оформляется в виде следующих строк:
##################
# Local info #
##################
Такой комментарий указывает на то, что далее идет раздел
Local info
Таких секций несколько, в частности, обычно присутствуют следующие:
ˆ
Local info
— локальная информация, основные сведения о сервере и до- мене
;
ˆ
Options
— настройки работы программы sendmail;
ˆ
Message precedences
— приоритеты сообщений;
ˆ
Trusted users
— доверенные пользователи;
ˆ
Format of headers
— форматы заголовков.
Рассмотреть все настройки в этой книге невозможно, тем более что конфигу- рационный файл в моей системе занимал 50 Кбайт. Если расписывать каждый

Глава
8
274
параметр
, понадобится отдельное издание. Наша цель — эффективность и
безопасность, поэтому рассмотрим только настройки, касающиеся этих во- просов
, и испытаем sendmail в действии.
Для упрощения конфигурирования sendmail в последних версиях этого поч- тового сервиса используется новый файл — sendmail.mc, который можно найти в директории /etc/mail. Пример содержимого этого файла можно уви- деть в листинге 8.1.
Листинг
8.1.
Фрагмент
файла
/etc/mail/sendmail.mc
divert(-1) dnl This is the sendmail macro config file. If you make changes to this dnl file, you need the sendmail-cf rpm installed and then have to dnl generate a new /etc/sendmail.cf by running the following command: dnl Это файл макроконфигурации sendmail. Если вы делаете изменения в этом dnl файле, вам нужна инсталляция rpm sendmail-cf, с помощью которой можно dnl сгенерировать новый /etc/sendmail.cf, запустив команду: dnl dnl m4 /etc/mail/sendmail.mc > /etc/sendmail.cf dnl include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for ASPLinux')dnl
OSTYPE(`linux') dnl Uncomment and edit the following line if your mail needs to be dnl sent out through an external mail server: dnl Расскомментируйте следующую строку, если вам нужно посылать почту dnl через внешний почтовый сервер: dnl define(`SMART_HOST',`smtp.your.provider') define(`confDEF_USER_ID',``8:12'')dnl undefine(`UUCP_RELAY')dnl undefine(`BITNET_RELAY')dnl
Файл sendmail.mc имеет более простой формат по сравнению со старым sendmail.cf, благодаря чему уменьшается вероятность допустить ошибку при конфигурировании
. После исправлений его необходимо скомпилировать (пе- ревести файл sendmail.mc в формат sendmail.cf) специальной командой, в ре- зультате чего получается файл /etc/sendmail.cf.

Электронная
почта
275
Мы в основном будем рассматривать параметры, которые нужно устанавли- вать в файле sendmail.cf, а если описывается параметр файла sendmail.mc, я
буду явно указывать на это.
Иногда при неправильных настройках загрузка Linux может зависать при старте сервиса sendmail. Это происходит из-за того, что ваш почтовый сервер не может определить имя компьютера. Откройте файл /etc/hosts. В нем чаще всего будет только одна строка:
127.0.0.1 localhost.localdomain localhost
Подробно этот файл будет описан в главе 11, когда мы будем рассматривать
DNS. Сейчас нам надо знать, что эта строка описывает IP-адрес 127.0.0.1, ко- торый соответствует имени localhost. В любой системе такие адрес и имя указывают на вашу локальную машину. Когда в сетевых программах вы ука- зываете localhost, то это имя преобразуется в IP-адрес 127.0.0.1.
Программа sendmail использует имя компьютера, которое вы указали во вре- мя установки ОС Linux. Выполните команду hostname
, чтобы узнать его.
В
моем случае это FlenovM. Но на деле все сетевые обращения происходят не по имени, а по IP-адресу, и если sendmail не может определить адрес по име- ни
FlenovM, происходит зависание. Чтобы исправить эту ситуацию, добавьте в
файл /etc/hosts строку:
192.168.77.1 FlenovM FlenovM
Только
FlenovM нужно заменить на имя вашего компьютера и, разумеется, указать свой IP-адрес. После этого программу sendmail можно помещать в
автозапуск, и она будет работать великолепно даже с настройками по умол- чанию
Каждому пользователю системы автоматически создается почтовый ящик, и
если сервис sendmail запущен, то им уже можно пользоваться. Все почто- вые ящики хранятся в директории /var/spool/mail/. Их имена соответствуют именам пользователей. Так, для учетной записи root ящик будет расположен в
файле /var/spool/mail/root.
Для работы с почтой нам нужен почтовый клиент, который будет отправлять письма серверу и принимать от него новые сообщения. Таких программ существует множество, и в некоторых дистрибутивах Linux предлагается аж
7 различных клиентов. Какой выберете вы, зависит только от личных предпочтений
В
принципе, можно обойтись и без клиента, а соединение с сервером осуще- ствлять напрямую через сервис Telnet, благо команды SMTP достаточно про- сты и их легко использовать. В этом случае для отправки почты нужно под- ключиться к порту 25 (порт SMTP), а для получения — к 110 (порт POP3).

Глава
8
276
8.2.
Работа
почты
Рассмотрим работу ящиков на примере почтового клиента KMail — графиче- ской программы, которая должна у вас присутствовать, если установлена
KDE. Для его запуска из главного меню Linux выберите команду Internet |
KMail. Перед вами откроется окно, представленное на рис. 8.1.
Рис
. 8.1.
Главное окно программы
KMail
Программа еще не знает, с каким почтовым ящиком мы хотим работать, и это необходимо настроить. Воспользуйтесь пунктом меню Settings | Confi-
gure KMail. Перед вами откроется окно конфигурации. В нем выберите раз- дел
Network, и вы увидите окно с двумя вкладками: Sending и Receiving
(рис. 8.2).
На вкладке Sending мы должны указать параметры сервера, через который будет происходить отправка. По умолчанию уже настроен локальный send- mail, но что делать, если почтовый сервер расположен на другом компью- тере
? Давайте удалим существующую запись (выделите и нажмите кнопку
Remove), а потом создадим свою.

Электронная
почта
277
Рис
. 8.2.
Окно сетевых настроек
Рис
. 8.3.
Окно настроек
SMTP- сервера

Глава
8
278
Нажмите кнопку Add для добавления новой записи. Перед вами появится окно выбора протокола: SMTP или Sendmail. Выбираем SMTP как наиболее универ- сальный вариант. Теперь откроется окно, в котором нужно указать параметры
SMTP-сервера, через который мы будем посылать почту (рис. 8.3).
В
этом окне нужно заполнить следующие поля:
ˆ
Name — имя сервера, которое может быть любым;
ˆ
Host — адрес SMTP-сервера. Если вы используете локальный сервер, то можно указать localhost или 127.0.0.1;
ˆ
Port — порт SMTP-сервера. Чаще всего используется порт 25, но это зна- чение может быть изменено;
ˆ
если сервер требует аутентификации, то поставьте галочку в Server
requires authentication и заполните открывшиеся поля Login и Password.
Если вы не первый день в Интернете и работали с электронной почтой, то процесс настройки параметров SMTP-сервера не должен вызвать проблем.
Теперь рассмотрим настройку сервера для чтения почты. Перейдите на за- кладку
Receiving, и вы увидите список серверов. Выделите имеющиеся запи- си и удалите их. Затем нажмите кнопку Add, чтобы добавить сервер, через который мы будем получать почту. Перед вами откроется окно, в котором нужно выбрать тип сервера: Local mailbox, POP3, IMAP, Maildir mailbox.
Чаще всего используется POP3, и процесс создания записи для работы с ним похож на аналогичный процесс для SMTP-сервера. Вы также должны указать адрес сервера, порт (по умолчанию 110) и имя с паролем.
Наиболее интересным может оказаться использование локального ящика.
Даже если SMTP-сервер не установлен, в системе создается директория с ло- кальным почтовым ящиком, куда для администратора root помимо привыч- ных
E-mail попадают извещения по безопасности. Если вы работаете в кон- соли и увидели сообщение типа "You have new mail", то это означает, что в
ваш ящик в локальной директории попало новое сообщение. Для его про- верки удобнее всего использовать почтовый клиент.
Итак
, создадим новую учетную запись, чтобы можно было в удобном виде чи- тать сообщения по безопасности. Нажмите кнопку Add, и перед вами появится окно выбора типа сервера. Выберите тип ящика Local mailbox и нажмите ОК.
Перед вами появится окно создания нового аккаунта, как на рис. 8.4.
Здесь необходимо заполнить следующие поля:
ˆ
Name — имя записи, которое может быть любым;
ˆ
Location — расположение локального ящика. По умолчанию все ящики хранятся в файле /var/spool/mail/имя, где имя — это имя пользователя. Для администратора root нужно указать размещение /var/spool/mail/root.

Электронная
почта
279
Рис
. 8.4.
Окно настроек аккаунта типа
Local mailbox
Остальные параметры, чаще всего, остаются заданными по умолчанию, если администратор не натворил чего-то особого в конфигурации.
Попробуйте прочитать почту разными протоколами. Убедитесь, что все ра- ботает верно, сообщения приходят на ваш почтовый ящик и доходят до по- лучателя
. Если указаны настройки по умолчанию, все должно работать.
В
дальнейшем мы рассмотрим некоторые специфичные настройки, которые помогут сделать ваш почтовый сервер более безопасным, но прежде чем при- ступать к улучшениям, нужно убедиться, что работает базовый вариант.
8.2.1.
Безопасность
сообщений
Сообщения
E-mail пересылаются по сети в виде простого текста. Если зло- умышленник перехватит такое сообщение, то без проблем сможет его прочи- тать
. При передаче конфиденциальной информации необходимо использо- вать шифрование.

Глава
8
280
Наиболее распространенными методами шифрования на данный момент яв- ляются
:
ˆ
S/MIME (Secure/Multipurpose Internet Mail Extensions, безопасные много- целевые расширения электронной почты в сети Internet) — этот стандарт шифрования поддерживается в основном почтовыми клиентами Netscape и
его клонами. Это накладывает некоторые ограничения, ведь не все поль- зователи привыкли использовать именно эти программы;
ˆ
PGP (Pretty Good Privacy, "достаточно хорошая приватность") — про- грамма шифрования, которая используется во многих областях, в том чис- ле и в почтовых сообщениях. Этот стандарт поддерживает большое коли- чество почтовых клиентов. Существует несколько реализаций PGP, но многие специалисты рекомендуют использовать GnuPG. Нет, она не луч- ше других, потому что все PGP-клоны используют один и тот же принцип.
Просто
GnuPG разработан за пределами США, где не действует закон об ограничении длины ключа.
Таким образом, мы шифруем текст сообщения. Но сам протокол работает без шифрования
, поэтому все пароли передаются по сети в чистом виде, и их то- же необходимо защитить. Для этого можно использовать один из современ- ных стандартов RFC-1734 (MD5 APOP Challenge/Response), RFC-2095 (MD5
CRAM-HMAC Challenge/Response) или прибегнуть к помощи stunnel.
8.3.
Полезные
команды
Давайте рассмотрим некоторые команды, которые помогут вам в админист- рировании sendmail-сервера:
ˆ
hoststat
— показать состояние хостов, которые недавно работали с локаль- ным почтовым сервером. Команда является эквивалентом sendmail —bh
, которая по умолчанию неактивна;
ˆ
mailq
— отобразить краткую информацию о сообщениях в очереди, ожи- дающих обработки. Пример результата выполнения команды:
/var/spool/mqueue (1 request)
----Q-ID---- --Size-- -----Q-Time----- -----Sender/Recipient----- j0IAnST11838 6 Tue Jan 18 13:49
(host map: lookup (flenovm.ru): deferred)

Из первой строки видно, что в очереди находится одно сообщение. Вторая строка включает дату посылки и адрес отправителя — flenov@flenovm.ru
В
последней строке отображается получатель сообщения — root@flenovm.ru
;

Электронная
почта
281
ˆ
mailstats
— отобразить статистику сообщений и количества байт;
ˆ
sendmail
— запустить сервер sendmail. Используя ее с различными клю- чами
, можно увидеть достаточно много полезной информации. За более подробной справкой следует обратиться к документации man
8.4.
Безопасность
sendmail
Безопасность sendmail далека от идеала, и в нем регулярно находят ошибки.
По этому поводу администраторы и программисты начали слагать анекдоты и
превратили сервис в объект для насмехательств. Я слышал, что некоторые даже делали ставки на то, будет ли найдена ошибка в этом месяце или нет.
Как я и обещал, в данном разделе мы поговорим о некоторых параметрах, повышающих безопасность.
8.4.1.
Баннер
-
болтун
Проблемы безопасности начинаются еще на этапе подключения. Сервис sendmail, как и большинство других служб, выдает строку приветствия, в ко- торой содержится информация об имени и версии программы.
Хакер не должен знать этих данных. Для этого необходимо изменить пара- метр
SmtpGreetingMessage в файле /etc/sendmail.cf. В старых версиях send- mail этот параметр был равен:
SmtpGreetingMessage=$j Sendmail $v/$Z; $b
Самое опасное здесь — это ключ
$v/$Z
, который отображает версию, и само имя
Sendmail
. Именно поэтому теперь значение этому параметру присваива- ется следующим образом:
SmtpGreetingMessage=$j $b
Если ваша система сообщает о себе что-то лишнее, то это необходимо уб- рать
. Можно даже поставить сообщение другого сервиса:
SmtpGreetingMessage=$j IIS 5.0.1 $b
Любая удачная попытка ввести хакера в заблуждение — это выигрыш во времени
, что равносильно маленькой победе.
8.4.2.
Только
отправка
почты
Очень часто почтовые сервисы используют только для отправки почты.
Например
, на WEB-серверах sendmail может стоять для того, чтобы прямо из сценариев на Perl или PHP можно было отсылать письмо. Если ваш сервер

Глава
8
282
не должен принимать писем, то необходимо запретить режим приема. Для этого откройте файл /etc/sysconfig/sendmail и измените его содержимое:
DEAMON=yes
QUEUE="q1h"
Вторая строка задает параметры, которые будут передаваться программе sendmail при запуске. Чтобы возобновить прием почты, измените значение на bd
Если у вас нет файла /etc/sysconfig/sendmail (он используется не во всех дист- рибутивах
), то придется редактировать сценарий /etc/rc.d/init.d/sendmail.
Найдите в этом файле параметры, которые передаются программе, и измени- те их на q1h прямо в тексте сценария.
8.4.3.
Права
доступа
Ни один сервис в ОС не должен работать от имени администратора root. Если в
коде программы будет найдена лазейка, позволяющая запускать команды, то можно считать систему потерянной, потому что директивы будут выпол- няться с правами root. Опытные пользователи компьютеров, наверное, пом- нят
, что несколько лет назад в sendmail чуть ли не каждую неделю находили ошибки
, и большинство из них были критичными.
Сервис должен работать с правами пользователя, которому доступны толь- ко необходимые для работы директории и файлы. В sendmail это возможно сделать
, и в последних версиях уже реализовано с помощью параметра
RunAsUser
:
O RunAsUser=sendmail
По умолчанию эта строка может быть закомментирована знаком
#
в начале строки
. Уберите комментарий. Можно также явно добавить описание груп- пы
, с правами которой должна происходить работа:
O RunAsUser=sendmail:mail
В
данном случае sendmail
— это имя пользователя, а mail
— имя группы.
8.4.4.
Лишние
команды
Почтовый сервер обрабатывает множество команд, но не все из них могут оказаться полезными. Убедитесь, что в вашем конфигурационном файле при- сутствуют и не закрыты комментарием следующие строки:
O PrivacyOptions=authwarnings
O PrivacyOptions=noexpn
O PrivacyOptions=novrfy

Электронная
почта
283
Можно также в одной команде перечислить все параметры через запятую:
O PrivacyOptions=authwarnings,noexpn,novrfy
Наиболее опасной для сервера может оказаться опция
VRFY
, которая позволя- ет проверить существование почтового ящика. Именно ее запрещает третья строка в данном примере.
Вторая строка устанавливает параметр noexpn
, запрещающий команду
EXPN
, которая позволяет по почтовому псевдониму определить адрес E-mail или даже имя пользователя. С помощью этой директивы хакеры могут собирать списки для рассылки спама. Не стоит давать в руки злоумышленника такую информацию
8.4.5.
Выполнение
внешних
команд
В
почтовом сервисе есть одна серьезная проблема — ему необходимо вы- полнять системные команды, а это всегда опасно. Если хакер сможет запус- тить такую команду без ведома администратора и с повышенными правами, то это грозит большими неприятностями. Именно поэтому мы понижали пра- ва
, с которыми работает сервис, но этого недостаточно.
Чтобы запретить выполнение системных команд, необходимо заставить sendmal работать через безопасный интерпретатор команд. Для этого специ- ально был разработан smrsh. Чтобы почтовый сервис использовал именно его
, проще всего добавить следующую строку в файл sendmail.mc:
FEATURE('smrsh', '/bin/smrsh')
В
данном случае в скобках указано два параметра: имя командного интер- претатора и каталог, в котором он располагается. Убедитесь, что в вашей системе именно такой путь, или измените параметр.
По умолчанию интерпретатор smrsh выполняет команды из каталога
/usr/adm/sm.bin. Программы из других каталогов запускать невозможно. Если в
каталоге /usr/adm/sm.bin находятся только безопасные программы, то ваша система наименее подвержена уязвимости.
8.4.6.
Доверенные
пользователи
В
сервисе sendmail можно создать список пользователей, которым вы дове- ряете отправлять сообщения без каких-либо предупреждений. Этот перечень находится в файле /etc/mail/trusted-users. Я не рекомендую вам здесь указы- вать реальных пользователей.
Но файл все же может быть полезен. В него можно добавить пользователя apache, чтобы проще было рассылать письма из WEB-сценариев.

Глава
8
284
8.4.7.
Отказ
от
обслуживания
Почтовые серверы довольно часто подвергаются атакам типа DoS, потому что они должны принимать соединения для обслуживаемых почтовых ящиков от любых пользователей. Таким образом, подключения на порты 25 и 110, чаще всего, общедоступны.
Для защиты сервера от DoS-атак со стороны хакера нам помогут следующие параметры сервиса sendmail:
ˆ
MaxDeamonChildren
— ограничение количества одновременно запущен- ных процессов. С помощью этого параметра мы можем защитить ресурсы сервера
(процессор) от излишней перегрузки. По умолчанию установлено значение
12, но для мощного компьютера его можно повысить, чтобы эф- фективнее использовать процессор, а для слабого — уменьшить;
ˆ
ConnectionRateThrottle
— максимальное количество открываемых со- единений в секунду. По умолчанию этот параметр равен 3, и повышать его без особой надобности не стоит, разве что вы уверены в производительно- сти сервера.
8.5.
Почтовая
бомбардировка
С
почтовой бомбардировкой я встретился первый раз почти 10 лет назад. Од- нажды я в чате оставил свой E-mail (до этого я никогда не светил своим адре- сом
), и как назло в этот момент там сидел начинающий хакер, который про- сто ради шутки забросал меня почтовыми бомбами.
Что такое почтовая бомба? Это простое письмо с бесполезным содержимым любого размера. Хакеры забрасывают свою жертву такими посланиями, что- бы переполнить ящик и лишить его возможности принимать другие сообще- ния
. Это классическая атака DoS, только в отношении почтового ящика.
На первый взгляд необходимо просто увеличить размер ящика или убрать ли- мит вовсе. Это неверное решение, поэтому забудьте про него. Если ящик не будет иметь предела, то хакер сможет произвести атаку DoS на весь сервер.
Почтовые сообщения — единственный способ закачать информацию на сер- вер
. Когда злоумышленник отправляет E-mail, оно сохраняется на сервере, пока не будет скачано пользователем. Слишком большое количество инфор- мации займет все пространство на жестком диске, и сервер больше не сможет принимать сообщения ни на один из почтовых ящиков.
Самая худшая ситуация при почтовой бомбардировки может возникнуть, когда почтовые ящики располагаются в директории по умолчанию (раздел /var).

Электронная
почта
285
Если этот раздел будет переполнен, то сервер не сможет больше записы- вать в него информацию. В разделе /var хранятся еще и журналы безопас- ности
. Если они не смогут пополняться, то сервер окажется полностью не- доступным
Ограничение на используемое под хранение писем пространство необходи- мо
. Лучше потерять контроль над одним почтовым ящиком, чем над всем почтовым сервером.
От почтовой бомбардировки защититься нельзя, но можно попытаться усложнить задачу злоумышленника. Для этого нам понадобятся параметры, которые мы рассматривали в разд. 8.4.7. Кроме того, желательно ограничить максимальный размер сообщения до приемлемых пределов с помощью пара- метра
MaxMessageSize
. Если это сделать, злоумышленнику понадобится на- правлять на сервер множество маленьких писем вместо нескольких больших.
Однако
, к сожалению, большие письма иногда отправляют не только хакеры, и
этим вы усложните жизнь и реальным корреспондентам.
8.6.
Спам
Проблема
XXI информационного века — рассылка нежелательной коррес- понденции
. Это действительно болезнь, с которой надо бороться, а сущест- вующие методы пока не приносят необходимого результата, и спам отнимает б
óльшую часть почтового трафика.
Один из способов борьбы с нежелательной корреспонденцией — запрет сер- веров
, с которых приходит спам. Но те, кто занимаются такими рассылками, находят все новые пути для обхода барьеров, в том числе использование об- щедоступных или взломанных в Интернете серверов.
Если хакер задействует ваш сервер для рассылки спама, то это грозит сле- дующим
:
ˆ
лишние расходы на трафик, если вы оплачиваете каждый гигабайт ин- формации
;
ˆ
дополнительная нагрузка на ресурсы. Рассылки в основном массовые и
отнимают много процессорного времени, тем самым загружая канал связи
Но помимо этого, если ваш сервер пару раз разошлет спам, он может попасть в
черный список, и тогда вся ваша корреспонденция будет фильтроваться и
не дойдет до адресата. Благодаря этому хакер может даже провести атаку
DoS на почтовый сервис.

Глава
8
286
8.6.1.
Блокировка
приема
спама
Прием нежелательной корреспонденции приводит к следующим негативным последствиям
:
ˆ
излишние расходы на трафик, которые постоянно увеличиваются;
ˆ
отвлечение внимания сотрудников вашей организации или пользователей сети
, пользующихся услугами почтового сервера;
ˆ
спам
-сообщения нередко занимают слишком много места, и для их хране- ния на сервере требуется дополнительное дисковое пространство.
Причин борьбы со спамом намного больше, но я надеюсь, что описанных ваше уже достаточно, чтобы вы начали предпринимать какие-либо меры.
Фильтрация
серверов
В
sendmail есть возможность фильтровать серверы, с которых приходит не- желательная почта. Для этого лучше всего в файле sendmail.mc добавить строку с запретом. Проблема в том, что для различных версий sendmail эта строка выглядит по-разному:
Версия
8.10:
FEATURE('dnsbl', 'spam.com', ' 550 Mail not accepted from this do- main')dnl
Версии
8.11 и более поздние:
HACK('check_dnsbl', 'spam.com', '', 'general', 'reason')dnl
В
обеих строках spam.com нужно заменить на адрес сервера DNSBL — сер- вера
, на котором хранятся списки IP-адресов, с которых рассылается спам, так называемые спам-листы. Список таких серверов можно посмотреть по адресу
http://spamlinks.net/filter-dnsbl-lists.htm. При наличии адреса в спи- ске соединение с ним блокируется. Этот метод не очень эффективен, потому что спам-листы, разумеется, содержат адреса лищь некоторых, уже сильно наследивших спамеров. К тому же, напротив, были случаи, когда ошибочно блокировались безобидные серверы.
Однажды мой сервер, с которого происходит продажа программного обеспе- чения
, был заблокирован в одном из спам-листов. Это были времена, когда в
черные списки попадали и по делу, и просто так. Когда я рассылал своим пользователям их регистрационные ключи, то 10% сообщений возвращалось.
Таким образом, некоторые пользователи не могли работать с нашими про- граммами
. Такое продолжалось в течение месяца, пока не убедились, что спам
-листы перестали быть эффективными, и стали искать другие методы.

Электронная
почта
287
Фильтрация
сообщений
Более точный метод — блокировка сообщений по их содержимому. Специа- лизированная программа анализирует всю информацию, которая проходит через сервер, и ищет характерные признаки спам-рассылки. Если определяет- ся
, что письмо содержит спам, то оно удаляется.
Этот способ более эффективен, но по тексту очень сложно определить, явля- ется ли письмо рекламной рассылкой. Хакеры постоянно ищут новые пути обхода таких блокировок, поэтому процент фильтрации невысок. Вы можете настроить программу так, что она будет уничтожать все сообщения, в кото- рых есть слова "купи", "продаю" и тому подобные термины, характерные для спама
, но тогда могут быть удалены и необходимые вам письма.
Я
не буду советовать никаких программ фильтрации нежелательной почты, потому что не вижу идеального решения. Но если вы захотите использовать подобный способ, то хочу только обратить ваше внимание на программу
SpamAssassin (spamassassin.apache.org). В ней реализовано множество про- верок
, которые позволяют достаточно эффективно определять нежелатель- ные сообщения.
Помимо этого, может пригодиться изменение параметра
MaxRcptsPerMessage
(команда sendmail сервера), который устанавливает максимальное количест- во получателей сообщения. Если их более 100, то это однозначно указывает на спам. Хотя в некоторых организациях используются почтовые рассылки всем сотрудникам, которые могут содержать до 1000 адресатов. В этом слу- чае может быть уничтожено очень важное письмо, поэтому необходимо, что- бы администраторы отправляли письма не более чем 100 получателями за один раз.
8.6.2.
Блокировка
пересылки
спама
При конфигурации почтового сервиса вы должны сделать так, чтобы зло- умышленники не смогли посылать свой спам через ваш сервер. Вам необхо- димо произвести несколько настроек, чтобы массовая рассылка перестала быть эффективной:
ˆ
по умолчанию протокол SMTP не требует авторизации, поэтому любой пользователь может подключиться к серверу и отправить письмо кому угодно
. Чтобы избежать этого, можно выполнить одно из следующих действий
:

запретить с помощью сетевого экрана подключение к порту SMTP пользователей
, которые находятся вне вашей сети. Такую защиту чаще всего используют провайдеры и администраторы частных или корпора-

Глава
8
288
тивных сетей. С реализацией этого запрета у вас не должно возникнуть проблем
, потому что мы уже не раз ее рассматривали;

разрешать отправку почты только в течение определенного време- ни
(например, 10 минут) после проверки почты по протоколу POP3.
В
момент проверки почты сервер производит авторизацию клиента, и по этим данным может временно создаваться разрешающая запись в сете- вом экране (или другим способом) для доступа к SMTP. Теперь в тече- ние
10 минут с этого IP-адреса можно проверять почту;

использовать авторизацию SMTP. Изначально в стандарте на протокол отправки сообщений нет ничего об идентификации пользователя, по- этому не все серверы поддерживают ее. Но в sendmail и других мощ- ных пакетах есть расширение, которое позволяет реализовать автори- зацию и сделать ее обязательной;
ˆ
запретить отправку слишком большого количества писем с одного и того же
IP-адреса. Вполне нормальным числом является 20. Пользователь не должен иметь права посылать более 20 писем за 10 минут;
ˆ
запретить отправку писем большому количеству получателей. Письмо может содержать в поле "CC" список пользователей, которым направлено письмо
Существуют и другие методы, но даже этих будет достаточно.
В
последних версиях sendmail по умолчанию разрешается пересылка почты только с тех компьютеров, которые прописаны в файле /etc/mail/access.
В
листинге 8.2 приведено содержимое этого файла.
Листинг
8.2.
Файл
/etc/mail/access
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# Смотрите файл /usr/share/doc/sendmail/README.cf для получения
# информации по формату файла (ищите слово access_db в этом файле)
#
# by default we allow relaying from localhost...
# По умолчанию мы разрешаем рассылку только с локального хоста localhost.localdomain RELAY localhost RELAY
127.0.0.1 RELAY

Электронная
почта
289
В
этом файле можно оставить разрешение отсылать почту только с компью- теров внутренней сети или с самого сервера. Для этого файл должен содер- жать следующие записи: localhost RELAY your_domain.com RELAY
Все остальные не смогут выполнять рассылку писем. Такой метод хорош только в том случае, когда серверы и компьютеры защищены. Если хакер проник в сеть, то он сможет разослать любой спам от имени пользователя сети
. От этого никуда не деться. Если есть хоть какое-то разрешение, то им можно воспользоваться, и ваша задача сделать так, чтобы это было, по край- ней мере, сложно.
Запрет рассылки не всегда может быть реализован, поэтому приходится ис- пользовать другие методы, например, заставить пользователей проверять почту по протоколу POP до отправки писем. Для осуществления этого метода можно воспользоваться сервисом pop-before-smtp (popsmtp.sourceforge.net), который проверяет журнал сообщений /var/log/maillog, и отправка почты разрешается, только если в нем найдена удачная авторизация за определенный период.
Единственный
, но существенный недостаток этого способа заключается в
том, что если на пути следования письма стоит анонимный прокси-сервер или маскирующий сетевой экран, то пакеты будут приходить с другим IP- адресом
. Это значит, что все пользователи, которые подключены через тот же
Proxy или Firewall, также автоматически считаются авторизованными.
Таким образом, поиск по IP-адресу записей в журнале не может дать полной защиты
Наиболее предпочтительным является метод, при котором используется
SMTP-авторизация (
SMTP AUTH
), которая описана в RFC 2554. В сервисе sendmail поддержка этого расширения существует еще с версии 8.10.
Если вы решили использовать
SMTP AUTH
, то убедитесь, что почтовые клиен- ты пользователей имеют возможность авторизации на сервере и при этом на- строены на ее использование.
8.7. Postfix
В
моей любимой Mandriva используется более простой в настройке почтовый сервер
, который называется Postfix. Его можно также встретить в Debian и
Suse. За конфигурацию данного сервера отвечает файл /etc/postfix/main.cf.
Здесь параметров не так много, потому что вся конфигурация сервера разби- та на несколько файлов, и main.cf является главным, но не единственным.
Например
, более полная версия этого файла — это main.cf.dist.

Глава
8
290
Мы рассмотрим лишь базовые параметры. Знание английского и хорошие комментарии в файле конфигурации помогут вам разобраться со многими значениями
, если вдруг понадобится что-то из того, что мы не рассмотрели.
Я
же постарался выбрать наиболее важные параметры, которые покроют максимальное количество ваших потребностей.
Первый параметр, который может пригодиться — myorigin
. Как и большин- ство базовых параметров, этот можно найти в файле main.cf.dist. Там можно найти аж две строки следующего вида:
#myorigin = $myhostname
#myorigin = $mydomain
Обе строки закомментированы, они лишь предлагают вам выбрать тот вари- ант
, который лучше подходит. Чтобы одну из строк сделать активной, просто убираем символ комментария # в начале строки. После символа равенства идет значение, но что же это за интересные значения, начинающиеся с сим- вола доллара? Это переменные. Все, что начинается с доллара — это пере- менные
, и вы можете создавать собственные переменные и назначать им зна- чения
. Например, в следующей строке кода я создал переменную
$siteofflenov со значением www.flenov.info
:
$siteofflenov = www.flenov.info
Теперь посмотрим на переменные, которые мы недавно увидели:
$myhostname и
$mydomain
. По имени уже можно понять, что первая равна имени хоста, а вторая домену. Так что же означает параметр myorigin
? Он определяет
, как сервер будет представляться при работе с другими системами.
Следующий параметр — inet_interfaces
. С его помощью можно указать интерфейсы
, с которых нужно ожидать почту. По умолчанию сервер ожидает письма со всех активных интерфейсов, и параметр равен значению all
Но иногда необходимо запретить определенные интерфейсы.
Параметр mydestination определяет домены, для которых сервер принимает почту
8.7.1.
Псевдонимы
Для настройки псевдонимов используется файл aliases. В этом файле нахо- дятся записи вида admin: root
Слева от двоеточия стоит алиас, а справа можно увидеть имя пользователя.
В
данном случае имя admin является алиасом для root, или, другими словами, все письма, которые будут приходить на имя admin, будут автоматически пе- ресылаться на ящик root.

Электронная
почта
291
Нужно иметь в виду, что aliases является конфигурационным и текстовым, а
сервер использует бинарную версию aliases.db. Чтобы создать этот db-файл, необходимо выполнить команду postalias aliases
Но и это еще не все. Изменения вступят в силу не сразу, а только по проше- ствии какого-то времени. Если вы торопитесь и хотите получить результат немедленно
, можно перезапустить сервер. Это помогает всегда. Но неужели после каждого изменения нужно перезапускать программу? Конечно же, нет, это не самое лучшее решение, потому что есть способ проще — выполните следующую команду: postfix reload
8.7.2.
Ретрансляция
Сервер
Postfix может передавать письма, только если:
ˆ
отправитель из одной из сетей, указанных в переменной $mynetworks.
По умолчанию эта переменная равна всем сетям, которые подключены к
данному компьютеру, например: mynetworks = 168.100.189.0/28, 127.0.0.0/8
ˆ
домен отправителя или домен получателя сообщения присутствует в пе- ременной
$relay_domains
Такая защита необходима, чтобы спамеры не использовали ваш почтовый сервер в качестве средства распространения спама. За спам в наше время сильно наказывают. Нет, в тюрьму сажают редко, но в игнор помещают без разговора
. А если сервер попадет в список игнорируемых, то вы не сможете отправлять никаких сообщений.

1   ...   18   19   20   21   22   23   24   25   ...   35


написать администратору сайта