Управление паролями и ограничение ресурсов.
Метки: limit | PAM
Четверг, 30 апреля 2009 г.
Просмотров: 2723
Есть альтернативный метод управлять правилами паролей. Сервисы, которые берут РАМ для аутентификации, имеют свои некоторые конфигурационные файлы в каталоге /etc/pam.d/. Для passwd файл будет выглядеть так:
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
Ключевая строка в этом файле — это system-auth. Посмотрим на этот файл:
password required pam_cracklib.so retry=3
password sufficient pam_unix.so nullok use_authtok md5 shadow
password required pam_deny.so
Первая строка вынуждает РАМ использовать модуль cracklib, который нужен для проверки сложности пароля. Как и в предыдущем примере, используется опция retry=3. Также поддерживаются следующие опции:
- minlen - минимально допустимая длина пароля + 1. Кредит в один символ предоставляется для каждого различного класса символов (верхний регистр, нижний регистр, цифра и прочее). То есть при minlen=7 допускается пароль аР9_Х.
- dcredit - максимальное разрешенное число использования цифр в пароле. Это помогает предотвращать использование паролей вроде 12345.
- ucredit — максимальное разрешенное число использования символов верхнего регистра.
- lcredit — максимальное разрешенное число использования символов нижнего регистра.
- ocredit — максимальное разрешенное число использования прочих символов.
Рассмотрим несколько примеров:
Первоначально кажется, что минимальная длина пароля равна 6, но, учитывая систему кредитования, полностью допустимым является пароль 5J%.
Так выглядит лучше. Даже если в пароле есть все четыре класса символов, его минимальная длина будет не меньше 7.
Ограничение ресурсов.
Хотя это и не касается прямо аутентификации, РАМ предоставляет средства для ограничения системных ресурсов. Для этого используется файл /etc/security/limits.conf . Заголовок этого файла объясняет такой синтаксис:
#
# <домен> <тип> <элемент> <значение>
#
# Где:
# <домен> может быть:
# - именем пользователя
# - именем группы, синтаксис @группа
# - маска *, для метки по умолчанию
#
# <тип> два значения:
# - "soft" «мягкий» лимит
# - "hard" «жесткий» лимит
#
# <элемент> один из следующих:
# - core - задает ограничение на размер файла core (Кб)
# - data - максимальный размер данных (Кб)
# - fsize - максимальный размер файла (Кб)
# - memlock - макс locked-in-memory адресного пространства (KB)
# - nofile - макс, число открытых файлов
# - rss - максимальный размер RS (KB)
# - stack - максимальный размер стека (KB)
# - cpu - макс CPU-время (MIN)
# - nproc - макс число процессов
# - as - ограничение адресного пространства
# - maxlogins - макс, число входов в систему для данного польз.
# - priority - приоритет, с которым запускаются процессы польз.
# - locks - максимальное число lock-файлов
#
К примеру, для запрещения генерации файлов core (нужны для отладки) и ограничения числа процессов пятью можно использовать такие строки:
* hard nproc 5
Нужно помнить, что * используется для задания ограничений для всех пользователей (в том числе и для named и nobody, для которых это нежелательно), именно поэтому нужно использовать * с осторожностью. К тому же для Apache 5 процессов будет просто мало.
Вместо * лучше конкретно указывать имя домена — имя пользователя или группы:
* hard rss 50000
* hard fsize 10000000
@users hard maxlogins 3
@users hard rss 50000
@users soft fsize 500000
@wheel soft maxlogins 3
Тут users - название группы, к которой принадлежат обыкновенные пользователи системы, wheel - название группы администраторов.