Как протестировать параметры PAM для пароля, не изменяя пароль

Вопрос или проблема

Я замечаю, что в /etc/pam.d/common-password есть настройки для определения минимальной силы пароля. Например:

...

password    requisite      pam_pwquality.so retry=3 maxrepeat=0 minlen=19 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 reject_username enforce_for_root dictcheck=0

password    required       pam_pwhistory.so remember=10 use_authtok enforce_for_root
...

Эти проверки выполняются, когда запускается passwd. Я хочу проверить, пройдет ли данная строка эти проверки, но не хочу, чтобы фактически изменялся пароль пользователя, если проверка пройдет успешно. По сути, я ищу что-то вроде passwd --dry-run.

Как я могу это сделать?

Ответ или решение

Чтобы протестировать параметры PAM (Pluggable Authentication Modules) для проверки пароля, не изменяя фактический пароль пользователя, важно понимать, какие модули и настройки используются в системе. В вашем случае имеются настройки в файле /etc/pam.d/common-password, которые определяют минимальную сложность пароля. Ниже приведены варианты, позволяющие проверить, пройдет ли заданная строка (например, потенциальный пароль) через проверку PAM.

Подходы для тестирования сложности пароля без изменения пароля

  1. Использование PAM модуля для проверки качества пароля:

    PAM предлагает возможность проверить пароли с помощью модуля pam_pwquality.so. Однако прямого способа проверить строку без изменения текущего пароля через стандартные утилиты, такие как passwd, нет. Вы можете, однако, использовать команду pamtester, чтобы протестировать PAM модули.

    Установка pamtester (если он не установлен):

    sudo apt-get install pamtester

    Применение pamtester для проверки:

    pamtester common-password <your-username> <your-plain-password>

    Этот метод выполнит проверки, которые описаны в конфигурации PAM, и выдаст результат о соответствии пароля заданным критериям.

  2. Создание временного пользователя:

    Если вы хотите протестировать пароль в контексте системы, можно создать временного пользователя и установить для него тестируемый пароль. Для этого выполните следующие шаги:

    sudo useradd testuser
    sudo passwd testuser

    Установите тестируемый пароль. Если изменения будут успешно приняты, это будет означать, что пароль соответствует требованиям.

    После проверки не забудьте удалить временного пользователя:

    sudo userdel -r testuser
  3. Использование скриптов для проверки требования пароля:

    Если вышеперечисленные методы не подходят, можно написать скрипт для проверки пароля, который будет учитывать правила из /etc/pam.d/common-password. Например, на Python можно использовать библиотеку passlib, чтобы проверить сложность пароля:

    from passlib.context import CryptContext
    
    pwd_context = CryptContext(schemes=["sha256_crypt"], deprecated="auto")
    
    def check_strength(password):
       min_length = 19
       # Дополнительные проверки на символы и условия
       if len(password) < min_length:
           return False
       # Здесь можно реализовать другие условия, такие как ucredit, lcredit...
       return True
    
    test_password = "ваш_тестовый_пароль"
    if check_strength(test_password):
       print("Пароль соответствует требованиям.")
    else:
       print("Пароль не соответствует требованиям.")

Заключение

К сожалению, в текущей версии утилит Linux нет прямого способа выполнить команду passwd с параметром --dry-run, чтобы проверить пароль с PAM. Однако можно использовать предложенные методы для тестирования паролей на соответствие требованиям безопасности, указанным в конфигурации PAM. Выбор метода зависит от ваших потребностей и доступных ресурсов.

Оцените материал
Добавить комментарий

Капча загружается...