Управление паролями всегда являлось одной из важнейших проблем, связанных с безопасной эксплуатацией информационных систем. Возможность безопасного хранения и быстрой смены паролей для множества учетных записей, возможность для пользователей безопасно сбросить забытый пароль, а также возможность безопасно сбросить пароль администратора — все эти функции не менее важны, чем парольная политика безопасности, о которой мы рассказывали ранее. В данной статье мы разберемся в том, как эти функции реализованы в Zimbra OSE.
Смена пароля пользователя и глобального администратора
Пароль глобального администратора задается при установке Zimbra OSE и впоследствии может быть изменен в настройках веб-клиента. Пароль пользователя изначально задается при создании учетной записи, однако администратор может включить принудительную смену пароля при первом входе пользователя в веб-клиент, чтобы пользователь не забыл установить собственный пароль.
На тот случай, если пользователь забудет свой пароль, в Zimbra OSE предусмотрена функция восстановления пароля. Данная функция, если она включена администратором, позволяет пользователю указать резервный почтовый ящик, на который придет временный код подтверждения. С помощью этого одноразового кода пользователь сможет попасть в веб-клиент Zimbra OSE и изменить свой пароль.
Однако, если администратор вдруг забыл пароль от своей учетной записи и из-за этого не может войти в веб-клиент, чтобы изменить пароль, он может воспользоваться атрибутом setPassword или просто sp в командной строке. Например, команда zmprov sp admin@company.ru qwerty позволяет изменить пароль администратора на qwerty без входа в веб-клиент Zimbra OSE. Эта же команда может использоваться для смены пароля любого другого пользователя.
Отметим также, что администратору недоступна функция просмотра пароля пользователя. Это ограничение связано с тем, что Zimbra OSE в принципе не хранит пароли пользователей в открытом виде. Вместо этого Zimbra OSE хранит лишь «соленые» хэши паролей и при попытке входа сравнивает хэш введенного пользователем пароля с тем, что хранится в LDAP-сервере.
Смена пароля при аутентификации через AD
В случае использования AD для аутентификации пользователей, пароли также не хранятся на сервере. Вместо этого Zimbra OSE просто передает AD введенные пользователем данные и получает ответ о том, аутентифицирована эта учетная запись или нет. И поскольку все данные учетной записи хранятся на другом сервере, при использовании внешней AD обычно рекомендуется отключать функцию самостоятельной смены пароля в веб-клиенте Zimbra OSE.
Однако есть способ совместить аутентификацию пользователей через AD с возможностью самостоятельной смены пароля пользователями. Сделать это позволяет расширение под названием Active Directory Change Password. Оно изменяет функциональность кнопки смены пароля в веб-клиенте Zimbra OSE таким образом, чтобы менялся пароль в AD.
Расширение достаточно легко устанавливается и работает следующим образом:
Установка расширения осуществляется в командной строке с помощью следующих команд:
Кроме того, если ваши серверы Zimbra OSE и Active Directory используют разные SSL-сертификаты, вам следует добавить сертификат AD в список доверенных на сервере Zimbra OSE. Если же обе информационные системы используют один и тот же сертификат, этот шаг можно пропустить.
Таким образом, после установки данного расширения ваши пользователи будут иметь возможность изменить свой пароль прямо в веб-клиенте Zimbra OSE даже при использовании аутентификации с помощью AD.
Массовый сброс паролей
Вполне допустимы ситуации, при которых вам может понадобиться быстро сбросить пароли у большого числа пользователей Zimbra OSE. В том случае, если число пользователей достаточно велико, сброс паролей вручную займет много времени, что может быть просто неприемлемым в критической ситуации. Оптимизировать выполнение этой задачи поможет скрипт, который автоматически может сбросить пароли пользователей как отдельного домена, так и целого почтового сервера.
Для примера сбросим пароли всех пользователей домена company.ru. Для этого войдем на сервер и выполним команду zmprov -l gaa company.ru > /tmp/domainusers.txt. В результате исполнения этой команды создастся текстовый файл domainusers.txt, в котором будут перечислены все пользователи указанного нами домена. Если в данной команде не указывать домен, в текстовый файл запишутся все учетные записи на данном сервере.
После этого можно убрать из полученного текстового файла все системные учетные записи, вроде galsync или spam, а также тех пользователей, пароль которых не будет сбрасываться. Когда файл готов, можно запустить следующий скрипт:
Результатом выполнения этого скрипта станет файл newlogin.txt с новыми паролями учетных записей. Рекомендуем как можно скорее сохранить его в безопасном месте и удалить данный файл с сервера. После этого можно сообщить пользователям их новые пароли, чтобы они могли продолжить работу в Zimbra OSE.
Отдельный пароль для мобильных устройств
Еще одной интересной функцией, которая становится доступной после установки набора расширений Zextras Suite для Zimbra OSE является отдельный пароль для входа в почтовый ящик с мобильного устройства. Иными словами, для учетной записи, использующей свою учетную запись на мобильном устройстве, создается дополнительный пароль, с помощью которого он может осуществить синхронизацию своего устройства с почтовым ящиком, но не может войти в веб-клиент Zimbra OSE. Эта функция позволяет значительно повысить безопасность использования электронной почты вне офиса, так как мобильное устройство может быть скомпрометировано или даже похищено, а функция мобильного пароля поможет предотвратить попадание настоящего пароля учетной записи в руки злоумышленников.
Создать пароль для мобильных устройств достаточно просто. Сделать это можно как в консоли администрирования с помощью плагина Zextras, так и в командной строке. Так, например, с помощью команды zxsuite mobile setAccountMobilePassword manager@company.ru Z1mBr@ вы зададите пользователю manager@company.ru пароль Z1mBr@. С помощью команды zxsuite mobile getAccountMobilePassword manager@company.ru вы можете посмотреть мобильный пароль пользователя manager@company.ru, а с помощью команды zxsuite mobile unsetAccountMobilePassword manager@company.ru вы можете вовсе убрать мобильный пароль у указанного пользователя.
По всем вопросам, связанным c Zextras Suite вы можете обратиться к Представителю компании «Zextras» Екатерине Триандафилиди по электронной почте katerina@zextras.com
Смена пароля пользователя и глобального администратора
Пароль глобального администратора задается при установке Zimbra OSE и впоследствии может быть изменен в настройках веб-клиента. Пароль пользователя изначально задается при создании учетной записи, однако администратор может включить принудительную смену пароля при первом входе пользователя в веб-клиент, чтобы пользователь не забыл установить собственный пароль.
На тот случай, если пользователь забудет свой пароль, в Zimbra OSE предусмотрена функция восстановления пароля. Данная функция, если она включена администратором, позволяет пользователю указать резервный почтовый ящик, на который придет временный код подтверждения. С помощью этого одноразового кода пользователь сможет попасть в веб-клиент Zimbra OSE и изменить свой пароль.
Однако, если администратор вдруг забыл пароль от своей учетной записи и из-за этого не может войти в веб-клиент, чтобы изменить пароль, он может воспользоваться атрибутом setPassword или просто sp в командной строке. Например, команда zmprov sp admin@company.ru qwerty позволяет изменить пароль администратора на qwerty без входа в веб-клиент Zimbra OSE. Эта же команда может использоваться для смены пароля любого другого пользователя.
Отметим также, что администратору недоступна функция просмотра пароля пользователя. Это ограничение связано с тем, что Zimbra OSE в принципе не хранит пароли пользователей в открытом виде. Вместо этого Zimbra OSE хранит лишь «соленые» хэши паролей и при попытке входа сравнивает хэш введенного пользователем пароля с тем, что хранится в LDAP-сервере.
Смена пароля при аутентификации через AD
В случае использования AD для аутентификации пользователей, пароли также не хранятся на сервере. Вместо этого Zimbra OSE просто передает AD введенные пользователем данные и получает ответ о том, аутентифицирована эта учетная запись или нет. И поскольку все данные учетной записи хранятся на другом сервере, при использовании внешней AD обычно рекомендуется отключать функцию самостоятельной смены пароля в веб-клиенте Zimbra OSE.
Однако есть способ совместить аутентификацию пользователей через AD с возможностью самостоятельной смены пароля пользователями. Сделать это позволяет расширение под названием Active Directory Change Password. Оно изменяет функциональность кнопки смены пароля в веб-клиенте Zimbra OSE таким образом, чтобы менялся пароль в AD.
Расширение достаточно легко устанавливается и работает следующим образом:
- Пользователь нажимает на кнопку смены пароля
- Вводит пароль
- Расширение определяет DN пользователя
- Осуществляет поиск во внешнем сервере AD
- Вносит изменения в пароль учетной записи по защищенному соединению
Установка расширения осуществляется в командной строке с помощью следующих команд:
mkdir -p /opt/zimbra/lib/ext/adpassword
wget https://github.com/Zimbra-Community/ADPassword/raw/master/out/artifacts/ADPassword_jar/ADPassword.jar -O /opt/zimbra/lib/ext/adpassword/adPassword.jar
su zimbra
zmprov md domain.ext zimbraAuthLdapBindDn "%u@company.ru"
zmprov md domain.ext zimbraAuthLdapSearchBase «CN=Users,DC=DOMAIN,DC=EXT»
zmprov md domain.ext zimbraAuthLdapSearchBindDn «CN=serviceAccount,CN=Users,DC=DOMAIN,DC=EXT»
zmprov md domain.ext zimbraAuthLdapSearchBindPassword "*********"
zmprov md domain.ext zimbraAuthLdapSearchFilter "(samaccountname=%u)"
zmprov md domain.ext zimbraAuthLdapURL «ldaps://ad.company.ru:636»
zmprov md domain.ext zimbraExternalGroupLdapSearchBase «CN=Users,DC=DOMAIN,DC=EXT»
zmprov md domain.ext zimbraExternalGroupLdapSearchFilter "(samaccountname=%u)"
zmprov md domain.ext zimbraAuthMech «ad»
zmprov md domain.ext zimbraAuthMechAdmin «ad»
zmprov md domain.ext zimbraPasswordChangeListener ADPassword
zmprov gd domain.ext | grep -i ldap | grep -v Gal
zmprov gd domain.ext | grep -i zimbraPasswordChangeListener
zmprov md domain.ext zimbraAuthFallbackToLocal FALSE
zmcontrol restart
Кроме того, если ваши серверы Zimbra OSE и Active Directory используют разные SSL-сертификаты, вам следует добавить сертификат AD в список доверенных на сервере Zimbra OSE. Если же обе информационные системы используют один и тот же сертификат, этот шаг можно пропустить.
Таким образом, после установки данного расширения ваши пользователи будут иметь возможность изменить свой пароль прямо в веб-клиенте Zimbra OSE даже при использовании аутентификации с помощью AD.
Массовый сброс паролей
Вполне допустимы ситуации, при которых вам может понадобиться быстро сбросить пароли у большого числа пользователей Zimbra OSE. В том случае, если число пользователей достаточно велико, сброс паролей вручную займет много времени, что может быть просто неприемлемым в критической ситуации. Оптимизировать выполнение этой задачи поможет скрипт, который автоматически может сбросить пароли пользователей как отдельного домена, так и целого почтового сервера.
Для примера сбросим пароли всех пользователей домена company.ru. Для этого войдем на сервер и выполним команду zmprov -l gaa company.ru > /tmp/domainusers.txt. В результате исполнения этой команды создастся текстовый файл domainusers.txt, в котором будут перечислены все пользователи указанного нами домена. Если в данной команде не указывать домен, в текстовый файл запишутся все учетные записи на данном сервере.
После этого можно убрать из полученного текстового файла все системные учетные записи, вроде galsync или spam, а также тех пользователей, пароль которых не будет сбрасываться. Когда файл готов, можно запустить следующий скрипт:
for i in `cat /tmp/domainusers.txt`; do newpass=«Z1mBr@`openssl rand -base64 12`0a» && /opt/zimbra/bin/zmprov sp $i $newpass && echo $i $newpass >> newlogin.txt && echo $i && sleep 5s; done
Результатом выполнения этого скрипта станет файл newlogin.txt с новыми паролями учетных записей. Рекомендуем как можно скорее сохранить его в безопасном месте и удалить данный файл с сервера. После этого можно сообщить пользователям их новые пароли, чтобы они могли продолжить работу в Zimbra OSE.
Отдельный пароль для мобильных устройств
Еще одной интересной функцией, которая становится доступной после установки набора расширений Zextras Suite для Zimbra OSE является отдельный пароль для входа в почтовый ящик с мобильного устройства. Иными словами, для учетной записи, использующей свою учетную запись на мобильном устройстве, создается дополнительный пароль, с помощью которого он может осуществить синхронизацию своего устройства с почтовым ящиком, но не может войти в веб-клиент Zimbra OSE. Эта функция позволяет значительно повысить безопасность использования электронной почты вне офиса, так как мобильное устройство может быть скомпрометировано или даже похищено, а функция мобильного пароля поможет предотвратить попадание настоящего пароля учетной записи в руки злоумышленников.
Создать пароль для мобильных устройств достаточно просто. Сделать это можно как в консоли администрирования с помощью плагина Zextras, так и в командной строке. Так, например, с помощью команды zxsuite mobile setAccountMobilePassword manager@company.ru Z1mBr@ вы зададите пользователю manager@company.ru пароль Z1mBr@. С помощью команды zxsuite mobile getAccountMobilePassword manager@company.ru вы можете посмотреть мобильный пароль пользователя manager@company.ru, а с помощью команды zxsuite mobile unsetAccountMobilePassword manager@company.ru вы можете вовсе убрать мобильный пароль у указанного пользователя.
По всем вопросам, связанным c Zextras Suite вы можете обратиться к Представителю компании «Zextras» Екатерине Триандафилиди по электронной почте katerina@zextras.com