Наши партнеры

UnixForum





Библиотека сайта 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