Включение SSL для PostfixAdmin

postfixadminВключение SSL для PostfixAdmin может быть полезно, если вы хотите выставить админку наружу. Выполнять все задачи администрирования, передавая данные в открытом виде, не очень хорошая идея. Это может быть оправдано лишь в том случае, если администрирование осуществляется исключительно из локальной сети, а доступа из интернета к PostfixAdmin нет. К сожалению, один мой почтовый сервер имел только внешний адрес, никакого NAT’а не было и пришлось подумать о некоторой защищенности, о чем я и расскажу в этой статье.

Поскольку PostfixAdmin является лишь дополнением для MTA Postfix, он ожидаемо находится в иерархии статей по настройке Postfix.


Найти больше информации о Postfix вы можете в основной статье по его настройке — Настройка Postfix.


Включение SSL для PostfixAdmin

Первым делом необходимо создать сертификат и уже потом на его основе открывать доступ по 443 порту.

Создание сертификата

Если не указывать полные пути к файлам, то все будет происходить в текущем каталоге. Узнать где вы сейчас находитесь можно командой:

pwd
/home/mailserveradmin

Отлично, переходим к процессу создания сертификата. Суть в том, что нужно получить публичный сертификат, который мы можем распространять куда и кому угодно, и закрытый (частный) ключ от этого сертификата. Обладатель этого ключа сможет расшифровать любую информацию, которая была зашифрована публичным сертификатом. Отсюда ограничения — мы обязаны обеспечить безопасное хранение частного ключа. Как это сделать? В принципе можно зашифровать этот ключ, но есть один неприятный момент — apache2 будет постоянно запрашивать пароль от этого ключа при запуске демона. Не самый удобный вариант, поэтому можно держать ключ в расшифрованном виде, назначив на него необходимые разрешения (доступ только для root). Так и сделаем:

openssl req -new -x509 -nodes -days 3650 -out postfixadmin.crt -keyout postfixadmin.key

nodes как раз говорит о том, что частный ключ сертификата не будет зашифрован. Кстати, в документации 1 apache2 очень подробно написано про сертификаты и самые распространенные действия над ними, советую обязательно почитать.

Из текущего расположения копируем сертификаты в традиционное хранилище

cp postfixadmin.crt /etc/ssl/certs/
cp postfixadmin.key /etc/ssl/private/

Назначаем необходимые права, как я и говорил выше. Сразу проверяем кто имеет доступ к файлу.

chmod 400 /etc/ssl/private/postfixadmin.key
ls -l /etc/ssl/private/ | grep postfixadmin

-r——— 1 root root 1704 Июн 9 22:46 postfixadmin.key

Права только у root’а, отлично. Подчищаем все в текущем каталоге:

rm postfixadmin.*

Сертификат и его частный ключ готовы, пора подружить с ним apache2.

Настройка Apache

Подключаем модуль SSL:

a2enmod ssl
Enabling module ssl. See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
 service apache2 restart

Собственно сама команда является скриптом, подключающим определенные модули (в моем случае модуль SSL) к конфигурации Apache2, создавая символьные ссылки в каталоге /etc/apache2/mods-enabled. Впрочем это вы и так можете узнать из мануала (команда man a2enmod).

Активируем виртуальный сайт:

a2ensite default-ssl
Enabling site default-ssl. 
To activate the new configuration, you need to run: 
 service apache2 reload

Теперь пришло время внести в конфигурацию SSL некоторые изменения:

nano /etc/apache2/sites-enabled/default-ssl

Необходимо убедиться, что параметр SSLEngine определен и имеет значение on, а также задать используемые версии SSL/TLS. Поскольку SSL версий 2 и 3 уже устарел, лучше исключить их из использования, оставив только TLS. Итого, необходимо, чтобы в файле присутствовали следующие строчки:

 SSLEngine on
 SSLProtocol all -SSLv3

По умолчанию all = +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2, но, как я и говорил выше, я хочу отключить SSLv3. Подробнее читайте в официальной документации 2.

Также не забудьте указать путь до только что сгенерированных файлов сертификата, определив значения нужных параметров:

 SSLCertificateFile /etc/ssl/certs/postfixadmin.crt
 SSLCertificateKeyFile /etc/ssl/private/postfixadmin.key

Теперь пришло время позаботиться об автоматическом перенаправлении клиентов на защищенный порт. Для этого активируем модуль alias:

a2enmod alias
Enabling module alias.
To activate the new configuration, you need to run:
 service apache2 restart

Отредактируем файл:

nano /etc/apache2/sites-enabled/000-default

Добавив в описание VirtualHost следующую директиву:

Redirect / https://192.168.1.120/ #укажите адрес/имя своего сайта

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

Ну а теперь можно перезапускать apache2:

service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

Проблем с перезапуском не возникло, можно проверить как все работает, вбив в адресной строке http://192.168.1.120/postfixadmin. После этого вас должно перенаправить на https-страницу и сообщить о ненадежном сертификате (все правильно, ведь мы используем самозаверенный сертификат):

Включение SSL для PostfixAdmin 02

Настройка на этом завершена.

comments powered by HyperComments