Carbonio Proxy - один из ключевых узлов инфраструктуры Carbonio, который выполняет роль обратного прокси. Он не только обеспечивает единую точку входа для пользователей на почтовый сервер, но также эффективно скрывает от посторонних топологию других узлов Carbonio и выполняет ряд других функций. В данной статье мы расскажем о том, какие именно настройки доступны администратору, как правильно настроить Carbonio Proxy, а также о том, на что следует обратить внимание при конфигурировании сервера, чтобы не снижать уровень безопасности и производительности всей инфраструктуры.
Основной функцией Carbonio Proxy является проксирование запросов к Carbonio. В случае, если инфраструктура объединяет сразу несколько серверов, создание единой точки входа для пользователей требует эффективного метода поиска сервера, на котором располагается учетная запись пользователя, который осуществляет вход. В Carbonio этот поиск реализован через обращения к Carbonio LDAP, где у каждой учетной записи имеется атрибут zimbraMailHost, в значении которого указан адрес почтового сервера, на котором располагается почтовый ящик пользователя. Для оптимизации этого процесса в Carbonio Proxy встроен модуль memcached, который на определенное время запоминает маршрутизацию для учетных записей и позволяет сразу направить их на нужный почтовый сервер, не обращаясь лишний раз к Carbonio LDAP.
Проксированию в Carbonio подвергаются практически все поддерживаемые протоколы, такие как HTTP(S), IMAP(S), POP3(S), Exchange ActiveSync, CalDAV/CardDAV и так далее. Не проксируются запросы LMTP, SMTP и обращения к Carbonio Videoserver, которые проходят по публичным адресам узлов MTA и Videoserver.
По умолчанию порты, на которых доступны перечисленные выше протоколы это:
80 - HTTP
443 - HTTPS, CalDAV/CardDAV, Exchange ActiveSync
110 - POP3
995 - POP3S
143 - IMAP
993 - IMAPS
Номера этих портов могут быть изменены при помощи следующих команд:
carbonio prov modifyServer proxy.carbonio.loc zimbraImapProxyBindPort 143
carbonio prov modifyServer proxy.carbonio.loc zimbraImapSSLProxyBindPort 993
carbonio prov modifyServer proxy.carbonio.loc zimbraMailProxyPort 80
carbonio prov modifyServer proxy.carbonio.loc zimbraMailSSLProxyPort 443
carbonio prov modifyServer proxy.carbonio.loc zimbraPop3ProxyBindPort 110
carbonio prov modifyServer proxy.carbonio.loc zimbraPop3SSLProxyBindPort 995
Поскольку во многих зловредных программах зашиты стандартные значения портов. смена их номеров может использоваться как мера безопасности для защиты учетных записей от брутфорса и других видов кибератак. Еще одной мерой защиты может стать отключение неиспользуемых протоколов. Это также осуществляется на узле Carbonio Proxy при помощи следующих команд:
carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailEnabled FALSE
carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailImapEnabled FALSE
carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailImapsEnabled FALSE
carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailPop3Enabled FALSE
carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailPop3sEnabled FALSE
Отметим, что в Carbonio нет поддержки незашифрованного соединения, а соответственно протокол HTTP используется только для редиректа пользователя на защищенное соединение.
Для включения редиректа с HTTP на HTTPS используйте команду - carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailMode redirect
Для полного отключения к серверу по HTTP используйте команду - carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailMode https
Поскольку Carbonio является мультитенантным решением, позволяющем создавать множество почтовых доменов на одной инфраструктуре, одной из важных функций является SNI - Server Name Indication. Данная технология позволяет создавать в Carbonio Proxy доступные публично виртуальные хосты с собственными SSL-сертификатами, доступные по одному и тому же IP-адресу. Поддержка виртуальных хостов также реализуется на уровне Carbonio Proxy.
Создавать виртуальные хосты можно как командной строке, так и в консоли администратора.
В консоли администратора перейдите в раздел “Домены” и введите название домена, для которого собираетесь создать виртуальный хост. В открывшемся боковом меню выберите раздел “Виртуальные хосты и сертификаты”.
В открывшемся окне можно добавлять имена виртуальных хостов для домена, а также устанавливать SSL-сертификаты для них. Для каждого из доменов можно добавлять несколько виртуальных хостов.
В командной строке виртуальный хост можно добавить командой вида carbonio prov modifyDomain carbonio.loc zimbraVirtualHostName carbonio.ru.
Чтобы добавить дополнительные виртуальные хосты, используйте команду carbonio prov modifyDomain carbonio.loc +zimbraVirtualHostName mail.carbonio.ru.
Установка сертификатов на виртуальные хосты также доступна в консоли администратора и в командной строке. Основные требования при добавлении виртуальных хостов заключаются в том, что их доменные имена должны резолвиться в ДНС на IP-адрес сервера Carbonio Proxy, также не допускается использование одинаковых доменных имен для разных доменов.
В консоли администратора потребуется скопировать и вставить содержимое сертификатов, либо загрузить их в виде файлов, после чего проверить сертификаты на валидность и установить. Для каждого домена доступна установка одного сертификата. Поэтому при использовании нескольких виртуальных хостов администратор должен использовать либо wildcard-сертификат, либо мультидоменный сертификат, покрывающий доменные имена настроенных хостов.
Установка доменного сертификата в командной строке предполагает объединение сертфиката и цепочки УЦ в единый файл. Порядок действий:
cat carbonio.loc.crt carbonio.loc_ca.crt >> carbonio.loc.bundle
/opt/zextras/libexec/zmdomaincertmgr savecrt carbonio.loc carbonio.loc.bundle carbonio.loc.key
/opt/zextras/libexec/zmdomaincertmgr deploycrts
Установленный сертификат начнет действовать только после перезапуска Carbonio Proxy при помощи команды zmproxyctl restart.
Отметим, что виртуальные хосты действуют только при использовании протокола HTTPS, то есть при использовании веб-клиента Carbonio, но также протоколов CalDAV/CardDAV и Exchange ActiveSync. Для использования виртуальных хостов с протоколами IMAP и POP3 необходимо, чтобы их доменные имена покрывались инфраструктурным сертификатом, чего можно добиться при установке wildcard или мультидоменного сертификата.
Carbonio Proxy также используется для аутентификации пользователей. Помимо встроенной в Carbonio аутентификации при помощи пароля, а также поддержки аутентификации во внешних AD и LDAP, поддерживается также сквозная аутентификация при помощи SAML и двухфакторная аутентификация на базе OTP.
Сервера Carbonio Proxy можно дублировать, чтобы обеспечить их отказоустойчивость. Помимо стандартной процедуры добавления их в инфраструктуру Carbonio, администратору потребуется указать IP-адрес добавленного узла в публичной A-записи Carbonio, чтобы пользователи попадали на него при переходе по публичной ссылке.
По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.
Получить информацию и обменяться информацией о Carbonio CE вы можете в группах в Telegram CarbonioMail и Carbonio CE Unofficial.