LXF99:Аутентификация
(→Какие программы используют PAM?) |
(→Эксперименты c PAM) |
||
Строка 20: | Строка 20: | ||
Для краткости в дальнейшем я буду называть эти действия «задачами PAM». | Для краткости в дальнейшем я буду называть эти действия «задачами PAM». | ||
− | ====Какие программы используют PAM?==== | + | =====Какие программы используют PAM?===== |
Да любые, которым нужно аутентифицировать пользователей, управлять их входом в систему, выделять им ресурсы или обновлять реквизиты: использование PAM значительно облегает им жизнь. Очевидные примеры: | Да любые, которым нужно аутентифицировать пользователей, управлять их входом в систему, выделять им ресурсы или обновлять реквизиты: использование PAM значительно облегает им жизнь. Очевидные примеры: | ||
Строка 68: | Строка 68: | ||
|Содержание=Возможно, вам придется немного покопаться, чтобы найти документацию на PAM, потому что в разных дистрибутивах она хранится в разных местах. Например, в RHEL5 man-страницы для модулей PAM входят в основной пакет PAM; в Ubuntu документация находится в каталоге '''/usr/share/doc/libpam-doc''' и является частью пакета ''libpam-doc'', который нужно устанавливать отдельно. Если вы найдете файл под названием Linux-PAM System Administrators’ Guide, это отличное начало. Если локальной копии нет, ее можно скачать на странице http://kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html. | |Содержание=Возможно, вам придется немного покопаться, чтобы найти документацию на PAM, потому что в разных дистрибутивах она хранится в разных местах. Например, в RHEL5 man-страницы для модулей PAM входят в основной пакет PAM; в Ubuntu документация находится в каталоге '''/usr/share/doc/libpam-doc''' и является частью пакета ''libpam-doc'', который нужно устанавливать отдельно. Если вы найдете файл под названием Linux-PAM System Administrators’ Guide, это отличное начало. Если локальной копии нет, ее можно скачать на странице http://kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html. | ||
|Ширина=500px}} | |Ширина=500px}} | ||
+ | |||
+ | ====Часть 2: Экспериментируем с PAM==== | ||
+ | |||
+ | =====Позволим всем пользователям переключаться в root без пароля через su. ===== | ||
+ | '''Что делать:''' Замените все строки файла '''/etc/pam.d/su''', относящиеся к стеку '''auth''', единственной строкой: | ||
+ | |||
+ | <code> | ||
+ | auth sufficient pam_permit.so | ||
+ | </code> | ||
+ | |||
+ | '''Как проверить:''' Зайдите в систему как обычный пользователь и проверьте, что можете переключиться в root с помощью su без ввода пароля. Это может показаться рисковым, но все же менее опасно, чем разрешить пользователям сразу заходить в систему с привилегиями администратора. Например, вы можете зайти в систему как обычный пользователь, а затем выполнить команду | ||
+ | |||
+ | <code> | ||
+ | $ su -c “date 09201155” | ||
+ | </code> | ||
+ | |||
+ | чтобы установить системное время (действие, требующее привилегий администратора). | ||
+ | |||
+ | =====Запретим всем пользователям использовать su===== | ||
+ | |||
+ | '''Что делать:''' Оставьте в файле '''/etc/pam.d/su''' только одну строку, относящуюся к стеку '''auth''': | ||
+ | |||
+ | <code> | ||
+ | auth requisite pam_deny.so | ||
+ | </code> | ||
+ | |||
+ | '''Как проверить:''' Зайдите в систему как обычный пользователь и убедитесь, что переключения в режим администратора не происходит: у вас даже не спрашивают пароль. Конечно, можно запретить su, и сняв права на выполнение файла самой программы. Хотя отключение ''su'' на первый взгляд повышает безопасность системы, на деле вы вынуждаете администратора всегда заходить в систему как root, вместо кратковременного переключения в '''root''' для действий с высшими привилегиями. | ||
+ | |||
+ | =====Разрешим su только пользователям из некоторой группы===== | ||
+ | |||
+ | '''Что делать:''' Для начала нам нужен хотя бы один пользователь в этой группе – назовем ее, например, '''wheel'''. Чтобы добавить пользователя '''chris''' в группу '''wheel''', выполните следующую команду от имени администратора: | ||
+ | |||
+ | <code> | ||
+ | # usermod -G wheel chris | ||
+ | </code> | ||
+ | |||
+ | Теперь отредактируйте файл /etc/pam.d/su, чтобы стек auth выглядел следующим образом: | ||
+ | |||
+ | <code> | ||
+ | auth sufficient pam_rootok.so | ||
+ | auth required pam_wheel use_uid | ||
+ | auth include system-auth | ||
+ | </code> | ||
+ | |||
+ | '''Как проверить:''' Зайдите в систему как '''chris''' (или как любой другой пользователь из группы '''wheel''') и попробуйте использовать ''su''. Будет запрошен пароль администратора, после чего должен открыться сеанс администратора. Теперь попробуйте зайти в систему под другим пользователем – не членом группы '''wheel''', и сделать то же самое. Снова будет запрошен пароль администратора, но переключиться в сеанс '''root''' не удастся. Можете попробовать изменить управляющий флажок для модуля '''pam_wheel''' в '''requisite''' – для этого измените строку в файле '''/etc/pam.d/su''': | ||
+ | |||
+ | <code> | ||
+ | auth requisite pam_wheel use_uid | ||
+ | </code> | ||
+ | |||
+ | '''Вопрос на засыпку:''' какое произойдет изменение? Проверьте себя. Ну что, начали понимать, как настройки PAM формируют политику безопасности? | ||
+ | |||
+ | =====Запретим вход в систему как root===== | ||
+ | |||
+ | Идея здесь в том, чтобы пользователи не могли войти в систему как администраторы: то есть зайти в систему придется как обычному пользователю, а затем переключиться в режим '''root''' с помощью ''su''. (Предварительно убедитесь, что есть хотя бы один пользователь, имеющий на это право, не то вы заблокируете компьютер.) Нам нужно запретить вход как на виртуальные терминалы, так и на графический рабочий стол. | ||
+ | |||
+ | '''Что делать''': Чтобы запретить вход на виртуальные терминалы, добавьте в файл '''/etc/pam/d/login''' строку | ||
+ | |||
+ | <code> | ||
+ | auth required pam_securetty.so | ||
+ | </code> | ||
+ | |||
+ | на верхушку стека '''auth''' (может быть, она уже есть там). Как мы уже видели, этот модуль запрещает вход в систему от имени '''root''' на терминалах, которых нет в списке '''/etc/securetty'''. Теперь мы можем очистить этот список с помощью пары команд: | ||
+ | |||
+ | <code> | ||
+ | # cp /etc/securetty /etc/securetty.saved | ||
+ | # echo “” > /etc/securetty | ||
+ | </code> | ||
+ | |||
+ | (Обратите внимание, что пустой файл '''/etc/securetty''' и отсутствие этого файла – совсем не одно и то же. В первом случае запрещается вход под '''root''' на все терминалы, а во втором, наоборот, разрешается.) Далее, чтобы запретить вход от имени root в графический рабочий стол, добавьте ту же самую строку в стек auth в файле '''/etc/pam.d/gdm'''. | ||
+ | |||
+ | '''Как проверить:''' Попытайтесь зайти в систему как '''root''' (с правильным паролем) – и через виртуальный терминал, и через графический рабочий стол. Обе попытки должны потерпеть неудачу. Убедитесь, что вы можете зайти в систему как обычный пользователь. Обратите внимание, что если прибавить к этому '''Эксперимент 3''', безопасность системы существенно повысится, потому что для получения доступа администратора придется сначала зайти в систему как пользователь из группы '''wheel''', а затем открыть сеанс администратора через ''su''. Даже пронюхав пароль администратора, взломщик не получит его привилегий. | ||
+ | |||
+ | =====Используем сложные пароли===== | ||
+ | |||
+ | В этом эксперименте мы используем модуль '''pam_passwdqc''' стека '''password''', чтобы заставить пользователей назначать сложные пароли. (Это сработает только в том случае, когда пользователь задает или изменяет свой пароль, и не позволит выявить «слабости» уже действующих паролей.) | ||
+ | |||
+ | [[Изображение:LXF99_PAM3.jpg|Рис. 3: Параметры модуля pam_passwdqc.]] | ||
+ | |||
+ | '''Что делать:''' В Red Hat для проверки длины паролей уже используется модуль '''pam_cracklib''', вызываемый из файла system-auth. Нам просто нужно заменить строку '''pam_cracklib''' следующей строкой: | ||
+ | |||
+ | <code> | ||
+ | password requisite pam_passwdqc.so min=12,10,10,8,6 | ||
+ | retry=3 | ||
+ | </code> | ||
+ | |||
+ | Рис. 3 иллюстрирует параметры модуля '''pam_passwdqc'''. Качество пароля определяется его длиной, и в зависимости от количества типов символов, используемых в пароле, можно задать разные значения минимальной длину пароля. Существуют четыре типа символов: буквы нижнего и верхнего регистров, цифры и остальные символы. Заглавная буква в первом символе и цифра в последнем символе не в счет. | ||
+ | |||
+ | '''Как проверить:''' Попробуйте изменить свой пароль. Задавайте разные строки и в каждом случае подсчитывайте общее число символов и число типов символов, предполагая, что пароль должен быть приемлемым. Несколько примеров приведены во врезке «Допустим ли пароль?». | ||
+ | |||
+ | =====Запретим обычным пользователям выключать систему===== | ||
+ | |||
+ | Во многих системах обычным пользователям (не администраторам) дозволено выключать или перезагружать систему с помощью команд ''halt, shutdown и reboot'' – для рабочей машины предприятия, пожалуй, не лучшая идея. В данном эксперименте мы изменим конфигурацию PAM для этих команд, чтобы один лишь '''root''' мог выключать компьютер. | ||
+ | |||
+ | '''Что делать:''' Откройте файл настроек PAM для команды ''halt'' ('''/etc/pam.d/halt'''). В моем Red Hat стек '''auth''' для команды ''halt'' выглядит так: | ||
+ | <code> | ||
+ | auth sufficient pam_rootok.so | ||
+ | auth required pam_console.so | ||
+ | </code> | ||
+ | Измените его следующим образом: | ||
+ | <code> | ||
+ | auth sufficient pam_rootok.so | ||
+ | auth required pam_deny.so | ||
+ | </code> | ||
+ | |||
+ | '''Как проверить:''' Зайдите в систему как обычный пользователь и попробуйте остановить систему командой ''halt''. У вас больше не должно этого получаться. Для полноты решения внесите те же изменения в файлы настроек для команд ''shutdown'' и ''reboot''. | ||
+ | |||
+ | ''''Д-р Крис Браун''' – автор книги ''SUSE Linux: A Complete Guide to Novell’s Community Distribution (Издательство “O’Reilly”, 2006)''. Некоторые главы можно найти на странице http://www.oreilly.com/catalog/suselinux/. '''LXF''' | ||
+ | |||
+ | ====Часто используемые модули РАМ==== | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Модуль | ||
+ | ! Действие | ||
+ | ! Описание | ||
+ | |- | ||
+ | | pam_unix | ||
+ | | auth, session, password | ||
+ | | Выполняет аутентификацию в традиционном стиле Unix, используя хэши паролей, которые хранятся в '''/etc/shadow'''. Включен в файлы настроек PAM многих приложений, непосредственно или с помощью директивы '''include'''. | ||
+ | |- | ||
+ | | pam_limits | ||
+ | | session | ||
+ | | Устанавливает ограничения на системные ресурсы, отпускаемые на время пользовательского сеанса. По умолчанию эти ограничения берутся из файла '''/etc/security/limits.conf'''; здесь можно задать «жесткие» и «мягкие» границы для таких параметров, как максимальное число процессов, максимальный размер файла, процессорное время и т.д.) | ||
+ | |} |
Версия 13:12, 17 марта 2008
|
|
|
Эксперименты c PAM
Вы можете и не подозревать о существовании аутентификации, потому что она «просто работает». А вот как она работает? Д-р Крис Браун расскажет.
PAM (Pluggable Authentication Modules – подключаемые модули аутентификации) – один из тех темных закоулков Linux, куда большинство пользователей заглянуть не решается. Я даже готов побиться об заклад, что большинство пользователей не знают, что это такое. Однако PAM – в сердце каждой программы, так или иначе связанной с аутентификацией. Добро пожаловать на экскурсию по PAM! Заходите в нашу научную лабораторию, выполните наши экспе рименты (горелка Бунзена не потребуется!), и вы увидите, что PAM предоставляет тонкий контроль над политикой безопасности.
В LXF83 была статья Грэма Моррисона, в которой он провел обзор PAM и продемонстрировал ее гибкость, показав, как с ее помощью расширить аутентификацию пользователя в Linux, используя цифровой ключ, записанный на USB-брелок. В этом месяце мы пойдем дальше и рассмотрим более существенное повышение безопасности системы с помощью PAM. Те из вас, кто настриг LXF83 на мелкие кусочки и использовал их как подстилку в клетке своего хомячка, и те, кто просто не покупал этот номер, не переживайте: в первом разделе мы проведем небольшой обзор PAM, а в детали углубимся во втором.
Часть 1: Знакомимся с PAM
PAM – это каркас, помогающий приложениям выполнять то, что я называю «действиями, связанными с аутентификацией». PAM состоит из библиотеки (libpam) и набора модулей PAM, которые находятся в папке /lib/security и представляют собой динамически загружаемые библиотеки (.so). Каждый модуль служит для решения определенной задачи, и приложения, связанные с PAM, обычно используют стек из нескольких модулей. Общая архитектура показана на рис. 1. PAM определяет четыре типа действий, относящихся к аутентификации:
- auth – наиболее очевидное действие: вы удостоверяете свою личность, предоставляя некоторый набор реквизитов. Обычно это имя пользователя и пароль, но возможны и другие варианты: например, физический ключ (как в LXF83), а то и биометрические методы, вроде отпечатков пальцев или сканирования сетчатки глаза.
- account – действия, определяющие, можно ли вам зайти в систему (теперь, когда мы уже знаем, кто вы). К этой категории можно отнести, например, модуль PAM, ограничивающий вход пользователей в систему в зависимости от времени суток.
- session – действия по выделению ресурсов, которые могут потребоваться пользователю во время сессии, например, монтирование домашнего каталога пользователя, установка лимитов на использование ресурсов системы, вывод ежедневного сообщения и т.д.
- password – действия по обновлению реквизитов пользователя (обычно пароля).
Для краткости в дальнейшем я буду называть эти действия «задачами PAM».
Какие программы используют PAM?
Да любые, которым нужно аутентифицировать пользователей, управлять их входом в систему, выделять им ресурсы или обновлять реквизиты: использование PAM значительно облегает им жизнь. Очевидные примеры:
- login – программа входа в текстовый терминал.
- gdm – вход в графический рабочий стол.
- su – запуск оболочки от имени нового пользователя.
- passwd – задание нового пароля.
Преимущество PAM в том, что «действия, связанные с аутентификацией», не привязаны к приложению, которое их использует. Благодаря этому гораздо проще менять политику безопасности или добавлять новые механизмы аутентификации: достаточно просто перенастроить PAM. Раньше для этого могло потребоваться изменение исходного кода самих приложений. Стек модулей, с помощью которых каждое приложение с аутентификацией через PAM выполняет одно из четырех соответствующих действий, определяется в файле конфигурации приложения, расположенном в каталоге /etc/pam.d. Имя файла соответствует имени приложения: например, файл /etc/pam.d/sshd содержит настройки PAM для программы sshd. На рис. 2 показана одна из строк такого файла. Эта строка добавляет к стеку auth модуль pam_unix.so. При необходимости приложение может сформировать все четыре стека (по одному для каждого из типов действий PAM), однако для большинства приложений достаточно двух.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Итак, основная идея такова: когда приложению надо выполнить одно из действий PAM, оно обращается к библиотеке PAM. Затем библиотека по очереди вызывает все модули в этом стеке. Каждый модуль «делает свое дело» и возвращает библиотеке положительный или отрицательный результат. Библиотека объединяет результаты модулей в результат для стека в целом, который возвращается приложению. Способ объединения определяется управляющим флажком модуля, прописанным во втором поле строки в файле настроек. Возможные значения флажка:
- requisite Если модуль завершается с ошибкой, PAM немедленно возвращает приложению ошибку, другие модули стека не вызываются.
- required Если модуль завершается с ошибкой, PAM возвращает ошибку приложению, но продолжает вызывать остальные модули стека. (Кто не в силах запомнить разницу между requisite и required, вступайте в спецклуб! Я уже в нем...)
- sufficient Если модуль завершается успешно, PAM возвращает приложению результат «выполнен», и остальные модули стека не вызываются. (Конечно, предполагается, что никакой модуль с флажком required выше в стеке не отказал.)
- optional Результат работы модуля (выполнен/ошибка) игнорируется. Обычно это означает, что модуль вызывается для выполнения некой операции, не имеющей отношения к принятию решения «пропустить/отказать» для всего стека. Например, модуль pam_keyinit – «необязательный» модуль для sshd, он создает новый «ключ сессии» для нового пользователя.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
(Последние версии PAM поддерживают получение более подробного результата выполнения модуля, чем просто «выполнен/ошибка», и более сложный синтаксис для задания способа объединения отдельных результатов. Подробности можно найти на man-странице pam.conf, если она есть. Однако и этого простейшего отчета вполне достаточно.) В качестве управляющего флажка также может использоваться ключевое слово include. Эта ситуация немного отличается от других. Она предписывает PAM подключить некоторый предопределенный стек модулей (в терминах программирования это можно назвать вызовом подпрограммы). Это позволяет «вынести за скобку» наиболее общие действия PAM (например, общие стеки модулей), в отдельный файл. Например, в RHEL5 вы заметите, что во многих файлах конфигурации PAM подключен стек, определенный в файле system-auth. В Ubuntu 7.04 имеются четыре файла для аналогичной цели: common-auth, common-account, common-session и common-passwd. В Red Hat также есть своего рода «метамодуль» pam_stack, который выполняет стек модулей, определенных в отдельном файле.
Теперь, получив представление о том, как модули PAM связаны друг с другом, вы, возможно, захотите взглянуть на большую таблицу в конце этой статьи, где описаны модули, используемые чаще всего. Учтите, что некоторых модулей может не быть в вашем дистрибутиве, и, наоборот, вам могут попасться модули, которых нет в этой таблице. Поскольку Linux – открытая система и прочее, ребята понаписали всяких-разных модулей PAM. Некоторые ссылки можно найти на странице http://www.kernel.org/pub/linux/libs/pam/modules.html.
Ниже приведены шесть экспериментов с изменением настроек PAM. Ни один из них сам по себе особенно не впечатляет, но я надеюсь, что они придадут вам достаточно уверенности в себе и понимания работы PAM, чтобы начать свои собственные эксперименты.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Часть 2: Экспериментируем с PAM
Позволим всем пользователям переключаться в root без пароля через su.
Что делать: Замените все строки файла /etc/pam.d/su, относящиеся к стеку auth, единственной строкой:
auth sufficient pam_permit.so
Как проверить: Зайдите в систему как обычный пользователь и проверьте, что можете переключиться в root с помощью su без ввода пароля. Это может показаться рисковым, но все же менее опасно, чем разрешить пользователям сразу заходить в систему с привилегиями администратора. Например, вы можете зайти в систему как обычный пользователь, а затем выполнить команду
$ su -c “date 09201155”
чтобы установить системное время (действие, требующее привилегий администратора).
Запретим всем пользователям использовать su
Что делать: Оставьте в файле /etc/pam.d/su только одну строку, относящуюся к стеку auth:
auth requisite pam_deny.so
Как проверить: Зайдите в систему как обычный пользователь и убедитесь, что переключения в режим администратора не происходит: у вас даже не спрашивают пароль. Конечно, можно запретить su, и сняв права на выполнение файла самой программы. Хотя отключение su на первый взгляд повышает безопасность системы, на деле вы вынуждаете администратора всегда заходить в систему как root, вместо кратковременного переключения в root для действий с высшими привилегиями.
Разрешим su только пользователям из некоторой группы
Что делать: Для начала нам нужен хотя бы один пользователь в этой группе – назовем ее, например, wheel. Чтобы добавить пользователя chris в группу wheel, выполните следующую команду от имени администратора:
# usermod -G wheel chris
Теперь отредактируйте файл /etc/pam.d/su, чтобы стек auth выглядел следующим образом:
auth sufficient pam_rootok.so auth required pam_wheel use_uid auth include system-auth
Как проверить: Зайдите в систему как chris (или как любой другой пользователь из группы wheel) и попробуйте использовать su. Будет запрошен пароль администратора, после чего должен открыться сеанс администратора. Теперь попробуйте зайти в систему под другим пользователем – не членом группы wheel, и сделать то же самое. Снова будет запрошен пароль администратора, но переключиться в сеанс root не удастся. Можете попробовать изменить управляющий флажок для модуля pam_wheel в requisite – для этого измените строку в файле /etc/pam.d/su:
auth requisite pam_wheel use_uid
Вопрос на засыпку: какое произойдет изменение? Проверьте себя. Ну что, начали понимать, как настройки PAM формируют политику безопасности?
Запретим вход в систему как root
Идея здесь в том, чтобы пользователи не могли войти в систему как администраторы: то есть зайти в систему придется как обычному пользователю, а затем переключиться в режим root с помощью su. (Предварительно убедитесь, что есть хотя бы один пользователь, имеющий на это право, не то вы заблокируете компьютер.) Нам нужно запретить вход как на виртуальные терминалы, так и на графический рабочий стол.
Что делать: Чтобы запретить вход на виртуальные терминалы, добавьте в файл /etc/pam/d/login строку
auth required pam_securetty.so
на верхушку стека auth (может быть, она уже есть там). Как мы уже видели, этот модуль запрещает вход в систему от имени root на терминалах, которых нет в списке /etc/securetty. Теперь мы можем очистить этот список с помощью пары команд:
# cp /etc/securetty /etc/securetty.saved # echo “” > /etc/securetty
(Обратите внимание, что пустой файл /etc/securetty и отсутствие этого файла – совсем не одно и то же. В первом случае запрещается вход под root на все терминалы, а во втором, наоборот, разрешается.) Далее, чтобы запретить вход от имени root в графический рабочий стол, добавьте ту же самую строку в стек auth в файле /etc/pam.d/gdm.
Как проверить: Попытайтесь зайти в систему как root (с правильным паролем) – и через виртуальный терминал, и через графический рабочий стол. Обе попытки должны потерпеть неудачу. Убедитесь, что вы можете зайти в систему как обычный пользователь. Обратите внимание, что если прибавить к этому Эксперимент 3, безопасность системы существенно повысится, потому что для получения доступа администратора придется сначала зайти в систему как пользователь из группы wheel, а затем открыть сеанс администратора через su. Даже пронюхав пароль администратора, взломщик не получит его привилегий.
Используем сложные пароли
В этом эксперименте мы используем модуль pam_passwdqc стека password, чтобы заставить пользователей назначать сложные пароли. (Это сработает только в том случае, когда пользователь задает или изменяет свой пароль, и не позволит выявить «слабости» уже действующих паролей.)
Что делать: В Red Hat для проверки длины паролей уже используется модуль pam_cracklib, вызываемый из файла system-auth. Нам просто нужно заменить строку pam_cracklib следующей строкой:
password requisite pam_passwdqc.so min=12,10,10,8,6 retry=3
Рис. 3 иллюстрирует параметры модуля pam_passwdqc. Качество пароля определяется его длиной, и в зависимости от количества типов символов, используемых в пароле, можно задать разные значения минимальной длину пароля. Существуют четыре типа символов: буквы нижнего и верхнего регистров, цифры и остальные символы. Заглавная буква в первом символе и цифра в последнем символе не в счет.
Как проверить: Попробуйте изменить свой пароль. Задавайте разные строки и в каждом случае подсчитывайте общее число символов и число типов символов, предполагая, что пароль должен быть приемлемым. Несколько примеров приведены во врезке «Допустим ли пароль?».
Запретим обычным пользователям выключать систему
Во многих системах обычным пользователям (не администраторам) дозволено выключать или перезагружать систему с помощью команд halt, shutdown и reboot – для рабочей машины предприятия, пожалуй, не лучшая идея. В данном эксперименте мы изменим конфигурацию PAM для этих команд, чтобы один лишь root мог выключать компьютер.
Что делать: Откройте файл настроек PAM для команды halt (/etc/pam.d/halt). В моем Red Hat стек auth для команды halt выглядит так:
auth sufficient pam_rootok.so auth required pam_console.so
Измените его следующим образом:
auth sufficient pam_rootok.so auth required pam_deny.so
Как проверить: Зайдите в систему как обычный пользователь и попробуйте остановить систему командой halt. У вас больше не должно этого получаться. Для полноты решения внесите те же изменения в файлы настроек для команд shutdown и reboot.
'Д-р Крис Браун – автор книги SUSE Linux: A Complete Guide to Novell’s Community Distribution (Издательство “O’Reilly”, 2006). Некоторые главы можно найти на странице http://www.oreilly.com/catalog/suselinux/. LXF
Часто используемые модули РАМ
Модуль | Действие | Описание |
---|---|---|
pam_unix | auth, session, password | Выполняет аутентификацию в традиционном стиле Unix, используя хэши паролей, которые хранятся в /etc/shadow. Включен в файлы настроек PAM многих приложений, непосредственно или с помощью директивы include. |
pam_limits | session | Устанавливает ограничения на системные ресурсы, отпускаемые на время пользовательского сеанса. По умолчанию эти ограничения берутся из файла /etc/security/limits.conf; здесь можно задать «жесткие» и «мягкие» границы для таких параметров, как максимальное число процессов, максимальный размер файла, процессорное время и т.д.) |