Библиотека сайта rus-linux.net
Как с помощью шифрования сделать почтовый сервер более безопасным
Оригинал: How to secure a mail server using encryption, January 20, 2014,Автор: Sarmed Rahman
Дата публикации: 20 января 2014 г.
Перевод: Н.Ромоданов
Дата перевода: март 2014 г.
SSL (Secure Sockets Layer) и его потомок TLS (Transport Layer Security) являются наиболее широко используемыми протоколами шифрования данных, когда происходит обмен данными почтовым сервером и клиентом. В этих протоколах часто используются сертификаты X.509 и ассимметричная криптография.
Протокол STARTTTLS является еще одним способом повышения безопасности при использовании открытого текста. Этот протокол также шифрует данные с помощью SSL или TLS, но с тем же портом, что и обычные текстовые протоколы вместо того, чтобы использовать отдельные порты для обмена данными, зашифрованными с помощью SSL/TLS. Например, в протоколе IMAP с STARTTLS используется тот же самый порт, что и в IMAP (143), тогда как в протоколе IMAPS (IMAP с SSL) использует отдельный порт 993.
В предыдущем руководстве описывалось, как настроить почтовый сервер, работающий с использованием пакетов Postfix и Dovecot, но аспект безопасности затронут не был. В данном руководстве будет рассказано, как улучшить безопасность почтового сервера при помощи шифрования TLS/SSL.
Сертификаты, необходимые для TLS/SSL, могут быть самостоятельно подписанными, подписанными с использованием свободного сертификата (например, CAcert) или подписанными коммерческим центром (например, VeriSign), и могут быть сгенерированы с помощью таких утилит, как OpenSSL. В данном руководстве мы собираемся использовать собственный сертификат.
Включение шифрования TLS для Postfix
Самостоятельно подписанный сертификат можно создать с помощью следующей команды.
# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/postfixcert.pem -keyout /etc/ssl/private/postfixkey.pem
Приведенная выше команда запрашивает новый сертификат, тип которого — X.509 и который будет действовать в течение 365 дней. Дополнительный параметр -nodes
указывает, что закрытый ключ не должен быть зашифрован. Результирующий файл сертификата будет сохранен как postfixcert.pem
, а файл с ключом выводится как postfixkey.pem
.
Потребуется ввести все необходимые значения:
Country Name (2 letter code) [AU]:BD State or Province Name (full name) [Some-State]:Dhaka Locality Name (eg, city) []:Dhaka Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []:Example.tst Common Name (e.g. server FQDN or YOUR name) []:mail.example.tst Email Address []:sarmed@example.tst
Теперь, когда сертификат готов, в конфигурационном файле postfix
настраиваются необходимые параметры.
root@mail:~# vim /etc/postfix/main.cf ### STARTTLS is enabled ### smtpd_tls_security_level = may smtpd_tls_received_header = yes smtpd_tls_auth_only = yes ### loglevel 3 should be used while troubleshooting ### smtpd_tls_loglevel = 1 ### path to certificate and key file smtpd_tls_cert_file = /etc/ssl/certs/postfixcert.pem smtpd_tls_key_file = /etc/ssl/private/postfixkey.pem smtpd_use_tls=yes
Перезапустите postfix
для того, чтобы включить TLS.
root@mail:~# service postfix restart
Теперь postfix
готов для шифрования данных, передаваемых с сервера и на сервер. Подробнее о поддержке TLS в Postfix можно найти в их официальном описании README.
Включение шифрования SSL для Dovecot
Конфигурирование dovecot
для использования шифрования выполняется аналогично конфигурированию postfix
.
Прежде всего с помощью openssl
создается самостоятельно подписанный сертификат:
# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/dovecotcert.pem -keyout /etc/ssl/private/dovecotkey.pem
Приведенная выше команда запрашивает новый сертификат X.509, который действителен в течение 365 дней. Параметр -nodes
является необязательным параметром, который определяет, что хранимый секретный ключ не должен быть зашифрован. Результирующим файлом сертификата будет файл dovecotcert.pem
, а выходным файлом с ключом будет файл dovecotkey.pem
.
В сертификате должны быть указаны все необходимые параметры:
Country Name (2 letter code) [AU]:BD State or Province Name (full name) [Some-State]:Dhaka Locality Name (eg, city) []:Dhaka Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []:Example.tst Common Name (e.g. server FQDN or YOUR name) []:mail.example.tst Email Address []:sarmed@example.tst
Затем в конфигурацию dovecot добавляется путь к сертификату.
root@mail:~# vim /etc/dovecot/conf.d/10-ssl.conf ssl_cert = </etc/ssl/certs/dovecotcert.pem ssl_key = </etc/ssl/private/dovecotkey.pem
Наконец, нужно перезапустить dovecot
для того, чтобы включить SSL с новым сертификатом.
root@mail:~# service dovecot restart
Конфигурирование почтового клиента Thunderbird
Ниже приведен скриншот настройки учетной записи в почтовом клиенте Mozilla Thunderbird.
Если возникли проблемы
Прежде всего, убедитесь, что в брандмауэре открыты все необходимые порты.
Во-вторых, попробуйте через telnet
получить доступ на почтовый сервер. У вас должна быть возможность доступа. Ниже для справки приведены некоторые примеры.
Подключение к серверу IMAPS
$ telnet mail.example.tst 993 Trying mail.example.tst... Connected to mail.example.tst. Escape character is '^]'. exit exit Connection closed by foreign host.
Подключение к серверу POP3S
$ telnet mail.example.tst 995 Trying mail.example.tst... Connected to mail.example.tst. Escape character is '^]'. exit exit Connection closed by foreign host.
Подключение к серверу SMTP
$ telnet mail.example.tst 25 Trying mail.example.tst... Connected to mail.example.tst. Escape character is '^]'. 220 mail.example.tst ESMTP Postfix (Ubuntu) ### Command ### ehlo mail.example.tst 250-mail.example.tst 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN