Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Управление паролями и ограничение ресурсов.

Рубрика: Безопасность -> Основные меры защиты Linux
Метки: |
Четверг, 30 апреля 2009 г.
Просмотров: 6281

Есть альтернативный метод управлять правилами паролей. Сервисы, которые берут РАМ для аутентификации, имеют свои некоторые кон­фигурационные файлы в каталоге /etc/pam.d/. Для passwd файл будет выглядеть так:

auth required pam_stack.so service=system-auth

account required pam_stack.so service=system-auth

password required pam_stack.so service=system-auth

     Ключевая строка в этом файле — это system-auth. Посмотрим на этот файл:


# cat /etc/pam.d/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 — максимальное разрешенное число использования прочих символов.
     Данная система кредитов первоначально кажется довольно сложной, но во всем можно разобраться. По умолчанию предельный кредит для каждого класса равен 1, но вы можете увеличить его до 2, если вы хотите предотвра­тить использование двухсимвольных (или меньшей длины) паролей.

     Рассмотрим несколько примеров:

password required pam_cracklib.so retry=3 minlen=6 dcredit=2 ucredit=2 lcredit=2 ocredit=2

     Первоначально кажется, что минимальная длина пароля равна 6, но, учитывая сис­тему кредитования, полностью допустимым является пароль 5J%.

password required pam_cracklib.so retry=3 minlen=14 dcredit=2 ucredit=l lcredit=l ocredit=2

     Так выглядит лучше. Даже если в пароле есть все четыре класса симво­лов, его минимальная длина будет не меньше 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 core 0

* hard nproc 5

     Нужно помнить, что * используется для задания ограничений для всех пользова­телей (в том числе и для named и nobody, для которых это нежелательно), именно поэтому нужно использовать * с осторожностью. К тому же для Apache 5 процессов будет просто мало.

     Вместо * лучше конкретно указывать имя домена — имя пользователя или группы:

* hard core 0

* hard rss 50000

* hard fsize 10000000

@users hard maxlogins 3

@users hard rss 50000

@users soft fsize 500000

@wheel soft maxlogins 3

     Тут users - название группы, к которой принадлежат обыкновенные пользователи системы, wheel - название группы администраторов.