PAM
В данной статье хотелось бы разместить заметки по поводу усиления PAM с использованием [[http://www.openwall.com/passwdqc/|passwdqc]] и описание базовых возможностей. \\
Passwdqc используется для усиления парольных политик и является более улучшенной версией устаревшего cracklib. \\
Все примеры проведены на Debian 7 и Debian 8. \\
1. Устанавливаем необходимые пакеты: \\
**apt-get install passwdqc libpam-passwdqc** \\
2. После этого заходим в основную директорию с конфигами PAM: **cd /etc/pam.d/** и первым делом открываем файл **common-password**. И пишем в него следующие строчки: \\
password requisite pam_passwdqc.so min=disabled,24,12,9,8 similar=deny enforce=everyone retry=3
password requisite pam_pwhistory.so use_authtok remember=4
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 rounds=10000
Первая строчка задаёт следующие парольные политики для модуля passwdqc: \\
**min=disabled,24,12,9,8** <- Минимальная длинна пароль 8 символов (__примечение__: пароль обязан включать в себя буквы верхнего и нижнего регистра, цифры и хотя бы один спец. символ и ни в коем случае не должен содержать словарные слова и прочую поеботу, аля: **123qwe**. вот такие вот требования у passwdqc), но если символов 9 то тогда можно принебречь одним из тредобаний, см. примечение, ну и соответственно если символов 12, то можно принебречь двумя правилами из примечаний. Ну а если ваш пароль состоит более чем из 24 символов, то тогда это может быть хоть парольная фраза из стишка. (__примечание №2__ к примечанию №1: только если есть опция obscure)\\
**similar=deny** <- Запрещаем использование пароля, похожего на один из уже используемых\\
**enforce=everyone** <- Применять данную политику для абсолютно всех пользователей в системе. В том числе и для пользователя root\\
**retry=3** <- Даётся 3 попытки на ввод корректного пароля, после истечения счётчика зафейлит ваши попытки\\
Вторая строчка относится к настройке политик хранения уже использованных паролей: \\
**use_authtok** <- Применить политки криптования из настроек pam_unix (см. примечание)\\
**remember=4** <- Запомнить последние 4 пароля, используется для того что бы ваш пароль не был похож на 4 предыдущих\\
__Примечание__: Почему важно добавлять в конфиг настройки **pam_pwhistory**. Потому как ваши старые пароли хранящиеся в файле **/etc/security/opasswd** будут захэшированы при помощи стандартного алгоритма MD5 ! \\
Третья строчка: \\
**obscure** <- См. __примечание №2__\\
**sha512** <- Указываем что будем использовать алгоритм SHA512\\
**rounds=10000** <- Выставляем ротацию хэша в 10000 попугаев, оборотов раундов \\
Далее создаём файл **common-auth-ban** со следующими строчками:\\
auth required pam_tally2.so deny=6 onerr=fail unlock_time=1800
account required pam_tally2.so
Где указываем политики блокировки, что при 6-ти неверных попытках ввода пароля, пользователь блокируется сроком на 30 минут. \\
После этого в файлах: **su**, **sudo**,**login**, **passwd**, **sshd** и прочих файлах ваших сервисов (например: ftp или samba) записываем строчку **@include common-auth-ban** над строчкой **common-auth** и после этого мы можем банить тех кто пытается сбрутить ваш пароль через ssh, passwd, login, su или другие дсотупные стредства.\\
Проверка на наличие заблокированных пользователей:\\
#**pam_tally2** <- Вывести список заблокированных пользователй и неудачных попыток захода\\
#**pam_tally2 --reset** <- Обнулить счётчик\\
#**pam_tally2 -u mydak --reset** <- Обнулить счётчик пользователю mydak\\
Примеры файлов: \\
password requisite pam_passwdqc.so min=disabled,24,12,9,8 similar=deny enforce=everyone retry=3
password requisite pam_pwhistory.so use_authtok remember=4
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 rounds=10000
password requisite pam_deny.so
password required pam_permit.so
auth required pam_tally2.so deny=6 onerr=fail unlock_time=1800
account required pam_tally2.so
@include common-auth-physalis
@include common-password
Ну и на последок, по давней традии. PAM - это то что ты настроил и потом забыл =)