Плагин проверки паролей Cracklib
cracklib_password_check — это плагин валидации паролей. Он использует библиотеку CrackLib для проверки сложности новых паролей. CrackLib по умолчанию установлен во многих дистрибутивах Linux, так как фреймворк аутентификации системы Pluggable Authentication Module (PAM) обычно настроен на проверку сложности новых паролей с помощью модуля PAM pam_cracklib.
Обратите внимание, что пароли могут быть напрямую установлены как хеш, минуя валидацию паролей, если переменная strict_password_validation имеет значение OFF (по умолчанию она ON).
Для работы плагина требуется как минимум cracklib 2.9.0, поэтому он недоступен в сборках Debian/Ubuntu до Debian 8 Jessie/Ubuntu 14.04 Trusty, RedHat Enterprise Linux / CentOS 6.
Установка пакета плагина
Общий файл плагина cracklib_password_check включён в пакеты MariaDB в виде общего файла cracklib_password_check.so или cracklib_password_check.dll на системах, где он может быть скомпилирован.
Установка в Linux
Плагин cracklib_password_check включён в systemd бинарные tar-архивы в Linux, но не в старые общие и glibc_214 tar-архивы.
Установка с помощью менеджера пакетов
Плагин cracklib_password_check также можно установить с помощью менеджера пакетов в Linux. Для этого ваша система должна быть настроена на установку из одного из репозиториев MariaDB.
Вы можете настроить свой менеджер пакетов на установку из репозитория пакетов MariaDB Corporation MariaDB Package Repository, используя скрипт настройки MariaDB Package Repository setup script.
Вы также можете настроить свой менеджер пакетов на установку из репозитория MariaDB Foundation's MariaDB Repository, используя Инструмент настройки репозитория MariaDB.
Установка с помощью yum/dnf
В RHEL, CentOS, Fedora и других подобных дистрибутивах Linux настоятельно рекомендуется установить соответствующий пакет RPM из репозитория MariaDB, используя yum или dnf. Начиная с RHEL 8 и Fedora 22, yum заменён на dnf, который является следующей основной версией yum. Однако команды yum по-прежнему работают на многих системах, использующих dnf. Например:
sudo yum install MariaDB-cracklib-password-check
Установка с помощью apt-get
В Debian, Ubuntu и других подобных дистрибутивах Linux настоятельно рекомендуется установить соответствующий пакет DEB из репозитория MariaDB, используя apt-get. Например:
sudo apt-get install mariadb-plugin-cracklib-password-check
Установка с помощью zypper
В SLES, OpenSUSE и других подобных дистрибутивах Linux настоятельно рекомендуется установить соответствующий пакет RPM из репозитория MariaDB, используя zypper. Например:
sudo zypper install MariaDB-cracklib-password-check
Установка плагина
После установки общего файла библиотеки плагин фактически не устанавливается в MariaDB по умолчанию. Существует два метода установки плагина в MariaDB.
Первый метод можно использовать для установки плагина без перезапуска сервера. Вы можете динамически установить плагин, выполнив INSTALL SONAME или INSTALL PLUGIN. Например:
INSTALL SONAME 'cracklib_password_check';
Второй метод позволяет указать серверу загрузить плагин при запуске. Плагин можно установить таким образом, предоставив параметры --plugin-load или --plugin-load-add. Это можно указать в качестве аргумента командной строки для mysqld или в соответствующей группе опций сервера группа опций в файле опций файл опций. Например:
[mariadb] ... plugin_load_add = cracklib_password_check
Удаление плагина
Вы можете динамически удалить плагин, выполнив UNINSTALL SONAME или UNINSTALL PLUGIN. Например:
UNINSTALL SONAME 'cracklib_password_check';
Если вы установили плагин, предоставив опции --plugin-load или --plugin-load-add в соответствующей группе опций сервера группа опций в файле опций файл опций, эти опции необходимо удалить, чтобы предотвратить загрузку плагина при следующем перезапуске сервера.
Просмотр ошибок CrackLib
Если проверка пароля завершается неудачно, исходное сообщение об ошибке CrackLib можно просмотреть, выполнив SHOW WARNINGS.
Пример
При создании нового пароля, если критерии не соблюдены, возвращается следующая ошибка:
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('abc');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
Известные проблемы
Проблемы с плагином аутентификации PAM
До MariaDB 10.4.0 все плагины проверки паролей несовместимы с плагином аутентификации pam. Дополнительную информацию см. в разделе Плагин аутентификации — PAM: Конфликты с проверкой паролей.
SELinux
При использовании стандартной политики SELinux с режимом режима enforcing, плагин mysqld не имеет доступа к /usr/share/cracklib, и при попытке использовать плагин cracklib_password_check может появиться следующая ошибка:
CREATE USER `user`@`hostname` IDENTIFIED BY 's0mePwd123.'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements SHOW WARNINGS; +---------+------+----------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------+ | Warning | 1819 | cracklib: error loading dictionary | | Error | 1819 | Your password does not satisfy the current policy requirements | | Error | 1396 | Operation CREATE USER failed for 'user'@'hostname' | +---------+------+----------------------------------------------------------------+
И в журнале SELinux audit.log будут ошибки, подобные следующим:
type=AVC msg=audit(1548371977.821:66): avc: denied { read } for pid=3537 comm="mysqld" name="pw_dict.pwd" dev="xvda2" ino=564747 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:crack_db_t:s0 tclass=file
type=SYSCALL msg=audit(1548371977.821:66): arch=c000003e syscall=2 success=no exit=-13 a0=7fdd2a674580 a1=0 a2=1b6 a3=1b items=0 ppid=1 pid=3537 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm="mysqld" exe="/usr/sbin/mysqld" subj=system_u:system_r:mysqld_t:s0 key=(null)
Эту проблему можно решить, создав политику SELinux, которая разрешит плагину mysqld загружать словарь CrackLib. Например:
cd /usr/share/mysql/policy/selinux/
tee ./mariadb-plugin-cracklib-password-check.te <<EOF
module mariadb-plugin-cracklib-password-check 1.0;
require {
type mysqld_t;
type crack_db_t;
class file { execute setattr read create getattr execute_no_trans write ioctl open append unlink };
class dir { write search getattr add_name read remove_name open };
}
allow mysqld_t crack_db_t:dir { search read open };
allow mysqld_t crack_db_t:file { getattr read open };
EOF
sudo yum install selinux-policy-devel
make -f /usr/share/selinux/devel/Makefile mariadb-plugin-cracklib-password-check.pp
sudo semodule -i mariadb-plugin-cracklib-password-check.pp
Дополнительную информацию см. в MDEV-18374.
Версии
| Версия | Статус | Введено |
|---|---|---|
| 1.0 | Стабильная | MariaDB 10.1.18 |
| 1.0 | Бета | MariaDB 10.1.13 |
| 1.0 | Альфа | MariaDB 10.1.2 |
Системные переменные
cracklib_password_check_dictionary
-
Описание: Устанавливает путь к словарю CrackLib. Если не задан, используется путь по умолчанию для словаря CrackLib. Параметр ожидает базовое имя словаря cracklib (набор из трёх файлов с окончаниями
.hwm,.pwd,.pwi), а не путь к каталогу. -
Командная строка:
--cracklib-password-check-dictionary=value - Область: Глобальная
- Динамическая: Нет
-
Тип данных:
string -
Значение по умолчанию: Зависит от системы. Часто
/usr/share/cracklib/pw_dict
Параметры
cracklib_password_check
-
Описание: Контролирует, как сервер должен обрабатывать плагин при запуске.
- Допустимые значения:
-
OFF- Отключает плагин без удаления его из таблицыmysql.plugins. -
ON- Включает плагин. Если плагин не может быть инициализирован, сервер всё равно продолжит запуск, но плагин будет отключён. -
FORCE- Включает плагин. Если плагин не может быть инициализирован, сервер не запустится с ошибкой. -
FORCE_PLUS_PERMANENT- Включает плагин. Если плагин не может быть инициализирован, сервер не запустится с ошибкой. Кроме того, плагин нельзя удалить с помощьюUNINSTALL SONAMEилиUNINSTALL PLUGINпри работе сервера.
-
- См. Обзор плагинов: Настройка активации плагина при запуске сервера для получения дополнительной информации.
- Допустимые значения:
-
Командная строка:
--cracklib-password-check=value -
Тип данных:
enumerated -
Значение по умолчанию:
ON -
Допустимые значения:
OFF,ON,FORCE,FORCE_PLUS_PERMANENT
См. также
- Проверка паролей
- плагин simple_password_check — позволяет задать базовые критерии для паролей
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/cracklib_password_check/