ГлавнаяМатериалы по FreeBSDИспользование TLS в почтовом сервере

Использование TLS в почтовом сервере

(1 Проголосовало)

tlsСеанс SMTP между сервером и клиентом по-умолчанию не шифруется. Это делает возможным перехват пакетов и получение конфиденциальной информации, передаваемой открытым текстом (если не применяются иные методы шифрования).

Исправить данную ситуацию нам поможет использование протокола TLS, что позволит обеспечить:

1. Конфиденциальность (Взаимодействие клиента и сервера происходит в зашифрованном
сеансе);

2. Целостность (невозможно внедриться в сеанс незаметно, искажение данных будет немедленно обнаружено);

3. Достоверность аутентификации (Клиент и сервер могут обменяться сертификатами, удостоверенными уполномоченным центром сертификации (Certification authority - CA).

Как работает TLS

Протокол TLS выполняет шифрование соединения только между двумя хостами. Сеанс с использованием этого протокола проходит следующим образом:

1. Клиент устанавливает соединение с сервером.

2. Хосты начинают взаимодействие по протоколу SMTP.

3. Сервер с помощью ключевого слова STARTTLS предлагает использовать TLS в рамках SMTP взаимодействия.

4. Если клиент может использовать TLS, он отвечает серверу ключевым словом STARTTLS.

5. Открытый сертификат сервера подписывается с помощью секретного ключа и отправляется клиенту.

6. Клиент проверяет подлинность сертификата сервера, сверяя подпись центра сертификации с имеющейся у него в корневом хранилище открытой подписью центра сертификации.

7. Клиент проверяет сертификат сервера на соответствие содержащейся в нем строки Common Name доменному имени сервера.

8. Клиент и сервер включают режим шифрования данных.

9. Хосты выполняют обмен данными.

10. Сеанс заканчивается.

Приступим к созданию сертификатов для почтового сервера server.mydomain.ru, в качестве MTA на котором выступает Postfix, а роль MDA выполняет Dovecot.

Создать новый сертификат просто – достаточно запустить сценарий и выполнить несколько команд.

Сгенерируем 2 файла — секретный ключ сервера и запрос на подпись сертификата командой:

# openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr

где server — имя сервера (в данном случае может быть любым)

Заполняем поля (нажатие «Enter» оставляет значение по-умолчанию):

Country Name (2 letter code) [AU]: RU
State or Province Name (full name) [Some-State]: Orenburg
Locality Name (eg, city) []: Orsk
Organization Name (eg, company) [Internet Widgits Pty Ltd]: MyCompany
Organizational Unit Name (eg, section) []: IT
Common Name (eg, YOUR name) []: server.mydomain.ru
Email Address []: postmaster @mydomain.ru
A challenge password []:
An optional company name []:

Очень важно указать в поле Common Name полное имя хоста (FQDN), соответствующее DNS-записям типа MX и A

Используем возможность бесплатного получения сертификатов COMODO со сроком действия 90 дней на сервисе FreeSSL.su. Эти сертификаты без проблем распознаются всеми браузерами и почтовыми клиентами.

На главной страничке заполняем все необходимые поля, в графе «Выберите используемое ПО» выбираем «Другое». В поле CSR вводим содержимое сгененированного ранее файла server.csr. 

После отправки запроса и его подтверждения, получаем архив certs.zip, содержащий следующие файлы:

  1. AddTrustExternalCARoot.crt;
  2. server_mydomain_ru.crt;
  3. ComodoUTNSGCCA.crt;
  4. EssentialSSLCA_2.crt;
  5. UTNAddTrustSGCCA.crt

Файл server_mydomain_ru.crt - это и есть требуемый сертификат. Что нам нужно делать с остальными файлами? Поступим так - объединим их содержимое в одном файле ca.txt (доверенный сертификат центра сертификации CA) в следующем порядке:

  1. EssentialSSLCA_2.crt
  2. ComodoUTNSGCCA.crt
  3. UTNAddTrustSGCCA.crt
  4. AddTrustExternalCARoot.crt

Полученный файл ca.txt будем использовать в дальнейшем:

Конфигурируем наш почтовый сервер. Для этого вносим изменения в конфиги dovecot и postfix.

Для dovecot:

dovecot.conf:

protocols = pop3 imap imaps pop3s

protocol pop3 {
    listen = *:110
    ssl_listen = *:995
    ...........
    }

protocol imap {
    listen = *:143
    ssl_listen = *:993
    ...........
    }

disable_plaintext_auth = no # Не запрещаем логиниться открытым способом
ssl = yes # Включаем поддержку ssl
ssl_cert_file = /etc/ssl/certs/dovecot.pem # файл сертификата,
# выставим на него разрешения: root:root 0444
ssl_key_file = /etc/ssl/private/dovecot.pem # ключ сервера,
# рекомендуется выставить разрешения: root:root 0400

ssl_verify_client_cert = yes # проверка валидности клиентских сертификатов
ssl_parameters_regenerate = 1 # регенерация параметров каждый час
# (значение "0" отключает регенерацию)
ssl_cipher_list = ALL:!LOW:!SSLv2 # шифр SSL
verbose_ssl = yes # протоколировать в логе ошибки ssl

Чтобы получить ssl_cert_file нужно объединить содержимое файлов server_mydomain_ru.crt  и  ca.txt, переименовываем полученный файл в dovecot.pem. В роли ssl_key_file выступает переименованный файл секретного ключа сервера server.key, сгенерированный ранее.

Для postfix:

main.cf

smtp_use_tls = yes # использовать TLS, если удаленный сервер сообщает о поддержке TLS
smtpd_use_tls = yes # сообщать клиентам о поддержке TLS
smtpd_tls_auth_only = no # использовать аутентификацию SMTP не только для TLS-соединений
smtp_tls_note_starttls_offer = yes # фиксировать в логе имена серверов,
# выдающих сообщение STARTTLS, поддержка TLS для которых не включена

smtpd_tls_CAfile = /etc/ssl/ca.txt # доверенный сертификат
smtpd_tls_key_file = /etc/ssl/smtpd.key # закрытый ключ сервера
smtpd_tls_cert_file = /etc/ssl/smtpd.crt # сертификат сервера

smtpd_tls_loglevel = 2 # детальность сообщений о TLS-активности
smtpd_tls_received_header = yes # запрашивать заголовки сообщений с информацией
# о версии протокола и алгоритме шифрования
smtpd_tls_session_cache_timeout = 3600s # время, в течение которого данные в кэше
# TLS-сессии считаются актуальными
tls_random_source = dev:/dev/urandom # имя устройства-генератора псевдослучайных чисел (PRNG)

Для того, чтобы Postfix принимал TLS-соединения на специальный порт (465/SMTPS, а не 25/SMTP), в файле master.cf необходимо раскомментировать строки:

master.cf

smtps     inet  n       -       n       -       -       smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

Перезапускаем postfix и dovecot, проверяем логи.

Не забываем открыть нужные порты в файерволе: 993 (imaps), 995 (pop3s), 465 (smtps)

Наш почтовый сервер готов к работе с TLS!

Чтобы почтовые клиенты могли правильно использовать новые возможности сервера, нужно в настройках протоколов выставить FQDN сервера, такое, каким оно было указано при генерации ключа и запроса, и выбрать тип защиты соединения SSL/TLS и соответствующие порты.

По окончании 90-дневного срока действия сертификатов следует проделать ту же самую процедуру, используя для запроса тот же файл server.csr, поэтому нужно сохранить его копию в надежном месте. Весь процесс обновления не займет больше 10 минут!

Обновлено 25.10.2010 05:18

Ваше мнение

Вы с пользой провели время на сайте?
 

Кто сейчас на сайте

Сейчас на сайте:
  • 1 гость

wolf3Волк - символ свободы и самостоятельности среди животных.

wolf1Волк - это символ бесстрашия. В любой схватке волк борется до победы или до смерти.

wolfsВолк живет семьей, ухаживает только за своей волчицей-женой и воспитывает своих детей-волчат.

Наверх